syntec3-0-ui-components-test 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/S3_0UC_main.csv +4 -0
- package/dist/S3_0UC_sub.csv +2 -0
- package/dist/globalVariableS3_0UC.json +1 -0
- package/dist/style.css +1 -0
- package/dist/syntec3-0-ui-components.es.js +19518 -0
- package/dist/syntec3-0-ui-components.es.js.map +1 -0
- package/dist/syntec3-0-ui-components.umd.js +23 -0
- package/dist/syntec3-0-ui-components.umd.js.map +1 -0
- package/dist/vite.svg +1 -0
- package/dist/web.config +17 -0
- package/package.json +137 -0
- package/src/App.vue +31 -0
- package/src/assets/fonts/genYoGothicTW-normal.js +7 -0
- package/src/assets/image/defaultImage.png +0 -0
- package/src/assets/vue.svg +1 -0
- package/src/components/Layout/modules/fullPageGlobal.vue +113 -0
- package/src/components/Layout/modules/viewFile/config.js +65 -0
- package/src/components/Layout/modules/viewFile/createView.vue +1000 -0
- package/src/components/Layout/modules/viewFile/filterCriteria.vue +816 -0
- package/src/components/Layout/modules/viewFile/viewList.vue +291 -0
- package/src/components/Layout/modules/viewFile/viewManageTool.js +271 -0
- package/src/components/Layout/modules/viewFile/viewRecord.vue +472 -0
- package/src/components/Layout/modules/viewFile/viewTabs.vue +542 -0
- package/src/components/Layout/tools/GlobalDialog.vue +115 -0
- package/src/components/Pagination.vue +139 -0
- package/src/components/columnConfigNext.vue +273 -0
- package/src/components/customFilter/customFilter.vue +492 -0
- package/src/components/customFilter/filterCriteria.vue +769 -0
- package/src/components/customTable/components/headerOperation/index.vue +136 -0
- package/src/components/customTable/components/headerTabs/index.vue +171 -0
- package/src/components/customTable/components/tableContent/index.vue +440 -0
- package/src/components/customTable/index.vue +305 -0
- package/src/components/dialog.vue +85 -0
- package/src/components/pageContent.vue +48 -0
- package/src/components/popover.vue +402 -0
- package/src/configFiles/apiFile/baseApiList.json +11 -0
- package/src/configFiles/apiFile/coreApiList.json +24 -0
- package/src/configFiles/apiFile/mesApiList.json +4 -0
- package/src/configFiles/apiFile/mmsApiList.json +3 -0
- package/src/configFiles/errorCode.json +291 -0
- package/src/configFiles/version.js +2 -0
- package/src/i18n/lang/en-us.json +2060 -0
- package/src/i18n/lang/errorCodeTranslate.mjs +847 -0
- package/src/i18n/lang/zh-cn.json +2062 -0
- package/src/i18n/lang/zh-tw.json +2059 -0
- package/src/index.js +115 -0
- package/src/main.js +51 -0
- package/src/plugins/excel.js +88 -0
- package/src/router/index.js +41 -0
- package/src/scriptFiles/apiConfig/baseApis.js +10 -0
- package/src/scriptFiles/apiConfig/mesApis.js +10 -0
- package/src/scriptFiles/apiConfig/mmsApis.js +10 -0
- package/src/scriptFiles/apiConfig/privateCloudCoreApis.js +13 -0
- package/src/scriptFiles/apiConfig/serviceRoute.js +23 -0
- package/src/scriptFiles/apis/baseApiFunction.js +63 -0
- package/src/scriptFiles/apis/mesApiFunction.js +15 -0
- package/src/scriptFiles/apis/mmsApiFunction.js +9 -0
- package/src/scriptFiles/apis/privateCloudCoreApiFunction.js +101 -0
- package/src/scriptFiles/backendApiFunction.js +11 -0
- package/src/scriptFiles/checkApiErrorMechanism.js +137 -0
- package/src/scriptFiles/common/objectDataProcessing.js +65 -0
- package/src/scss/base/commom.scss +1068 -0
- package/src/scss/base/dialog.scss +45 -0
- package/src/scss/base/index.scss +3 -0
- package/src/scss/base/table.scss +28 -0
- package/src/store/index.js +25 -0
- package/src/store/module/langStore.js +116 -0
- package/src/style.css +52 -0
- package/src/utils/excel.js +86 -0
- package/src/utils/formula.js +69 -0
- package/src/utils/https.js +13 -0
- package/src/utils/i18n.js +42 -0
- package/src/utils/shiftSelect.js +164 -0
- package/src/utils/summation.js +77 -0
- package/src/utils/tableWidth.js +29 -0
- package/src/utils/toolFun.js +93 -0
- package/src/views/productionWorkOrder/components/columnConfig.vue +242 -0
- package/src/views/productionWorkOrder/components/docCustomFieldForm.vue +739 -0
- package/src/views/productionWorkOrder/components/filePreview.vue +148 -0
- package/src/views/productionWorkOrder/components/querySearch.vue +363 -0
- package/src/views/productionWorkOrder/configFiles/excelImportErrorCode.json +94 -0
- package/src/views/productionWorkOrder/configFiles/pdfDefaultConfig.js +933 -0
- package/src/views/productionWorkOrder/configFiles/planMakingScript.js +600 -0
- package/src/views/productionWorkOrder/configFiles/productionRelatedScript.js +368 -0
- package/src/views/productionWorkOrder/configFiles/rulse.js +23 -0
- package/src/views/productionWorkOrder/configFiles/status.js +50 -0
- package/src/views/productionWorkOrder/index.vue +2174 -0
- package/src/views/productionWorkOrder/productionFlowLabel/component/addCirculationLabel.vue +394 -0
- package/src/views/productionWorkOrder/productionFlowLabel/component/circulationLabelTable.vue +124 -0
- package/src/views/productionWorkOrder/productionFlowLabel/component/materialPartFilePreview.vue +167 -0
- package/src/views/productionWorkOrder/productionFlowLabel/component/workOrderInformation.vue +28 -0
- package/src/views/productionWorkOrder/productionFlowLabel/index.vue +604 -0
- package/src/views/production_work_order/components/priorityTooltip.vue +53 -0
- package/src/views/production_work_order/index.vue +1307 -0
- package/src/views/review_record/components/materialInfo.vue +50 -0
- package/src/views/review_record/components/rootCause.vue +42 -0
- package/src/views/review_record/components/workDetail.vue +115 -0
- package/src/views/review_record/index.vue +884 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntec3-0-ui-components.es.js","sources":["../node_modules/element-plus/es/locale/lang/zh-cn.mjs","../node_modules/element-plus/es/locale/lang/en.mjs","../node_modules/element-plus/es/locale/lang/zh-tw.mjs","../src/i18n/lang/errorCodeTranslate.mjs","../src/utils/i18n.js","../src/components/columnConfigNext.vue","../src/components/dialog.vue","../src/scriptFiles/apiConfig/serviceRoute.js","../src/scriptFiles/apiConfig/privateCloudCoreApis.js","../src/scriptFiles/apis/privateCloudCoreApiFunction.js","../src/scriptFiles/apiConfig/baseApis.js","../src/scriptFiles/apis/baseApiFunction.js","../src/scriptFiles/apiConfig/mesApis.js","../src/scriptFiles/apis/mesApiFunction.js","../src/scriptFiles/apiConfig/mmsApis.js","../src/scriptFiles/apis/mmsApiFunction.js","../src/scriptFiles/backendApiFunction.js","../src/scriptFiles/checkApiErrorMechanism.js","../src/components/Pagination.vue","../src/components/popover.vue","../src/components/customFilter/filterCriteria.vue","../src/components/customFilter/customFilter.vue","../src/components/Layout/modules/fullPageGlobal.vue","../src/components/Layout/tools/GlobalDialog.vue","../src/components/Layout/modules/viewFile/config.js","../src/components/Layout/modules/viewFile/filterCriteria.vue","../__vite-browser-external","../node_modules/crypto-js/core.js","../node_modules/crypto-js/x64-core.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/blowfish.js","../node_modules/crypto-js/index.js","../src/components/Layout/modules/viewFile/createView.vue","../src/components/Layout/modules/viewFile/viewManageTool.js","../src/components/Layout/modules/viewFile/viewList.vue","../src/scriptFiles/common/objectDataProcessing.js","../src/utils/excel.js","../src/components/Layout/modules/viewFile/viewRecord.vue","../src/components/Layout/modules/viewFile/viewTabs.vue","../src/components/customTable/components/headerTabs/index.vue","../src/components/customTable/components/headerOperation/index.vue","../src/utils/tableWidth.js","../src/components/customTable/components/tableContent/index.vue","../src/components/customTable/index.vue","../src/index.js"],"sourcesContent":["var zhCn = {\n name: \"zh-cn\",\n el: {\n breadcrumb: {\n label: \"\\u9762\\u5305\\u5C51\"\n },\n colorpicker: {\n confirm: \"\\u786E\\u5B9A\",\n clear: \"\\u6E05\\u7A7A\",\n defaultLabel: \"\\u989C\\u8272\\u9009\\u62E9\\u5668\",\n description: \"\\u5F53\\u524D\\u989C\\u8272 {color}\\uFF0C\\u6309 Enter \\u952E\\u9009\\u62E9\\u65B0\\u989C\\u8272\",\n alphaLabel: \"\\u9009\\u62E9\\u900F\\u660E\\u5EA6\\u7684\\u503C\"\n },\n datepicker: {\n now: \"\\u6B64\\u523B\",\n today: \"\\u4ECA\\u5929\",\n cancel: \"\\u53D6\\u6D88\",\n clear: \"\\u6E05\\u7A7A\",\n confirm: \"\\u786E\\u5B9A\",\n dateTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u65E5\\u671F\",\n monthTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u6708\\u4EFD\",\n yearTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u5E74\\u4EFD\",\n selectedDate: \"\\u5DF2\\u9009\\u65E5\\u671F\",\n selectDate: \"\\u9009\\u62E9\\u65E5\\u671F\",\n selectTime: \"\\u9009\\u62E9\\u65F6\\u95F4\",\n startDate: \"\\u5F00\\u59CB\\u65E5\\u671F\",\n startTime: \"\\u5F00\\u59CB\\u65F6\\u95F4\",\n endDate: \"\\u7ED3\\u675F\\u65E5\\u671F\",\n endTime: \"\\u7ED3\\u675F\\u65F6\\u95F4\",\n prevYear: \"\\u524D\\u4E00\\u5E74\",\n nextYear: \"\\u540E\\u4E00\\u5E74\",\n prevMonth: \"\\u4E0A\\u4E2A\\u6708\",\n nextMonth: \"\\u4E0B\\u4E2A\\u6708\",\n year: \"\\u5E74\",\n month1: \"1 \\u6708\",\n month2: \"2 \\u6708\",\n month3: \"3 \\u6708\",\n month4: \"4 \\u6708\",\n month5: \"5 \\u6708\",\n month6: \"6 \\u6708\",\n month7: \"7 \\u6708\",\n month8: \"8 \\u6708\",\n month9: \"9 \\u6708\",\n month10: \"10 \\u6708\",\n month11: \"11 \\u6708\",\n month12: \"12 \\u6708\",\n weeks: {\n sun: \"\\u65E5\",\n mon: \"\\u4E00\",\n tue: \"\\u4E8C\",\n wed: \"\\u4E09\",\n thu: \"\\u56DB\",\n fri: \"\\u4E94\",\n sat: \"\\u516D\"\n },\n weeksFull: {\n sun: \"\\u661F\\u671F\\u65E5\",\n mon: \"\\u661F\\u671F\\u4E00\",\n tue: \"\\u661F\\u671F\\u4E8C\",\n wed: \"\\u661F\\u671F\\u4E09\",\n thu: \"\\u661F\\u671F\\u56DB\",\n fri: \"\\u661F\\u671F\\u4E94\",\n sat: \"\\u661F\\u671F\\u516D\"\n },\n months: {\n jan: \"\\u4E00\\u6708\",\n feb: \"\\u4E8C\\u6708\",\n mar: \"\\u4E09\\u6708\",\n apr: \"\\u56DB\\u6708\",\n may: \"\\u4E94\\u6708\",\n jun: \"\\u516D\\u6708\",\n jul: \"\\u4E03\\u6708\",\n aug: \"\\u516B\\u6708\",\n sep: \"\\u4E5D\\u6708\",\n oct: \"\\u5341\\u6708\",\n nov: \"\\u5341\\u4E00\\u6708\",\n dec: \"\\u5341\\u4E8C\\u6708\"\n }\n },\n inputNumber: {\n decrease: \"\\u51CF\\u5C11\\u6570\\u503C\",\n increase: \"\\u589E\\u52A0\\u6570\\u503C\"\n },\n select: {\n loading: \"\\u52A0\\u8F7D\\u4E2D\",\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n noData: \"\\u65E0\\u6570\\u636E\",\n placeholder: \"\\u8BF7\\u9009\\u62E9\"\n },\n dropdown: {\n toggleDropdown: \"\\u5207\\u6362\\u4E0B\\u62C9\\u9009\\u9879\"\n },\n mention: {\n loading: \"\\u52A0\\u8F7D\\u4E2D\"\n },\n cascader: {\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n loading: \"\\u52A0\\u8F7D\\u4E2D\",\n placeholder: \"\\u8BF7\\u9009\\u62E9\",\n noData: \"\\u6682\\u65E0\\u6570\\u636E\"\n },\n pagination: {\n goto: \"\\u524D\\u5F80\",\n pagesize: \"\\u6761/\\u9875\",\n total: \"\\u5171 {total} \\u6761\",\n pageClassifier: \"\\u9875\",\n page: \"\\u9875\",\n prev: \"\\u4E0A\\u4E00\\u9875\",\n next: \"\\u4E0B\\u4E00\\u9875\",\n currentPage: \"\\u7B2C {pager} \\u9875\",\n prevPages: \"\\u5411\\u524D {pager} \\u9875\",\n nextPages: \"\\u5411\\u540E {pager} \\u9875\",\n deprecationWarning: \"\\u4F60\\u4F7F\\u7528\\u4E86\\u4E00\\u4E9B\\u5DF2\\u88AB\\u5E9F\\u5F03\\u7684\\u7528\\u6CD5\\uFF0C\\u8BF7\\u53C2\\u8003 el-pagination \\u7684\\u5B98\\u65B9\\u6587\\u6863\"\n },\n dialog: {\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n drawer: {\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n messagebox: {\n title: \"\\u63D0\\u793A\",\n confirm: \"\\u786E\\u5B9A\",\n cancel: \"\\u53D6\\u6D88\",\n error: \"\\u8F93\\u5165\\u7684\\u6570\\u636E\\u4E0D\\u5408\\u6CD5!\",\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n upload: {\n deleteTip: \"\\u6309 Delete \\u952E\\u53EF\\u5220\\u9664\",\n delete: \"\\u5220\\u9664\",\n preview: \"\\u67E5\\u770B\\u56FE\\u7247\",\n continue: \"\\u7EE7\\u7EED\\u4E0A\\u4F20\"\n },\n slider: {\n defaultLabel: \"\\u6ED1\\u5757\\u4ECB\\u4E8E {min} \\u81F3 {max}\",\n defaultRangeStartLabel: \"\\u9009\\u62E9\\u8D77\\u59CB\\u503C\",\n defaultRangeEndLabel: \"\\u9009\\u62E9\\u7ED3\\u675F\\u503C\"\n },\n table: {\n emptyText: \"\\u6682\\u65E0\\u6570\\u636E\",\n confirmFilter: \"\\u7B5B\\u9009\",\n resetFilter: \"\\u91CD\\u7F6E\",\n clearFilter: \"\\u5168\\u90E8\",\n sumText: \"\\u5408\\u8BA1\"\n },\n tour: {\n next: \"\\u4E0B\\u4E00\\u6B65\",\n previous: \"\\u4E0A\\u4E00\\u6B65\",\n finish: \"\\u7ED3\\u675F\\u5BFC\\u89C8\"\n },\n tree: {\n emptyText: \"\\u6682\\u65E0\\u6570\\u636E\"\n },\n transfer: {\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n noData: \"\\u65E0\\u6570\\u636E\",\n titles: [\"\\u5217\\u8868 1\", \"\\u5217\\u8868 2\"],\n filterPlaceholder: \"\\u8BF7\\u8F93\\u5165\\u641C\\u7D22\\u5185\\u5BB9\",\n noCheckedFormat: \"\\u5171 {total} \\u9879\",\n hasCheckedFormat: \"\\u5DF2\\u9009 {checked}/{total} \\u9879\"\n },\n image: {\n error: \"\\u52A0\\u8F7D\\u5931\\u8D25\"\n },\n pageHeader: {\n title: \"\\u8FD4\\u56DE\"\n },\n popconfirm: {\n confirmButtonText: \"\\u786E\\u5B9A\",\n cancelButtonText: \"\\u53D6\\u6D88\"\n },\n carousel: {\n leftArrow: \"\\u4E0A\\u4E00\\u5F20\\u5E7B\\u706F\\u7247\",\n rightArrow: \"\\u4E0B\\u4E00\\u5F20\\u5E7B\\u706F\\u7247\",\n indicator: \"\\u5E7B\\u706F\\u7247\\u5207\\u6362\\u81F3\\u7D22\\u5F15 {index}\"\n }\n }\n};\n\nexport { zhCn as default };\n//# sourceMappingURL=zh-cn.mjs.map\n","var English = {\n name: \"en\",\n el: {\n breadcrumb: {\n label: \"Breadcrumb\"\n },\n colorpicker: {\n confirm: \"OK\",\n clear: \"Clear\",\n defaultLabel: \"color picker\",\n description: \"current color is {color}. press enter to select a new color.\",\n alphaLabel: \"pick alpha value\"\n },\n datepicker: {\n now: \"Now\",\n today: \"Today\",\n cancel: \"Cancel\",\n clear: \"Clear\",\n confirm: \"OK\",\n dateTablePrompt: \"Use the arrow keys and enter to select the day of the month\",\n monthTablePrompt: \"Use the arrow keys and enter to select the month\",\n yearTablePrompt: \"Use the arrow keys and enter to select the year\",\n selectedDate: \"Selected date\",\n selectDate: \"Select date\",\n selectTime: \"Select time\",\n startDate: \"Start Date\",\n startTime: \"Start Time\",\n endDate: \"End Date\",\n endTime: \"End Time\",\n prevYear: \"Previous Year\",\n nextYear: \"Next Year\",\n prevMonth: \"Previous Month\",\n nextMonth: \"Next Month\",\n year: \"\",\n month1: \"January\",\n month2: \"February\",\n month3: \"March\",\n month4: \"April\",\n month5: \"May\",\n month6: \"June\",\n month7: \"July\",\n month8: \"August\",\n month9: \"September\",\n month10: \"October\",\n month11: \"November\",\n month12: \"December\",\n week: \"week\",\n weeks: {\n sun: \"Sun\",\n mon: \"Mon\",\n tue: \"Tue\",\n wed: \"Wed\",\n thu: \"Thu\",\n fri: \"Fri\",\n sat: \"Sat\"\n },\n weeksFull: {\n sun: \"Sunday\",\n mon: \"Monday\",\n tue: \"Tuesday\",\n wed: \"Wednesday\",\n thu: \"Thursday\",\n fri: \"Friday\",\n sat: \"Saturday\"\n },\n months: {\n jan: \"Jan\",\n feb: \"Feb\",\n mar: \"Mar\",\n apr: \"Apr\",\n may: \"May\",\n jun: \"Jun\",\n jul: \"Jul\",\n aug: \"Aug\",\n sep: \"Sep\",\n oct: \"Oct\",\n nov: \"Nov\",\n dec: \"Dec\"\n }\n },\n inputNumber: {\n decrease: \"decrease number\",\n increase: \"increase number\"\n },\n select: {\n loading: \"Loading\",\n noMatch: \"No matching data\",\n noData: \"No data\",\n placeholder: \"Select\"\n },\n mention: {\n loading: \"Loading\"\n },\n dropdown: {\n toggleDropdown: \"Toggle Dropdown\"\n },\n cascader: {\n noMatch: \"No matching data\",\n loading: \"Loading\",\n placeholder: \"Select\",\n noData: \"No data\"\n },\n pagination: {\n goto: \"Go to\",\n pagesize: \"/page\",\n total: \"Total {total}\",\n pageClassifier: \"\",\n page: \"Page\",\n prev: \"Go to previous page\",\n next: \"Go to next page\",\n currentPage: \"page {pager}\",\n prevPages: \"Previous {pager} pages\",\n nextPages: \"Next {pager} pages\",\n deprecationWarning: \"Deprecated usages detected, please refer to the el-pagination documentation for more details\"\n },\n dialog: {\n close: \"Close this dialog\"\n },\n drawer: {\n close: \"Close this dialog\"\n },\n messagebox: {\n title: \"Message\",\n confirm: \"OK\",\n cancel: \"Cancel\",\n error: \"Illegal input\",\n close: \"Close this dialog\"\n },\n upload: {\n deleteTip: \"press delete to remove\",\n delete: \"Delete\",\n preview: \"Preview\",\n continue: \"Continue\"\n },\n slider: {\n defaultLabel: \"slider between {min} and {max}\",\n defaultRangeStartLabel: \"pick start value\",\n defaultRangeEndLabel: \"pick end value\"\n },\n table: {\n emptyText: \"No Data\",\n confirmFilter: \"Confirm\",\n resetFilter: \"Reset\",\n clearFilter: \"All\",\n sumText: \"Sum\"\n },\n tour: {\n next: \"Next\",\n previous: \"Previous\",\n finish: \"Finish\"\n },\n tree: {\n emptyText: \"No Data\"\n },\n transfer: {\n noMatch: \"No matching data\",\n noData: \"No data\",\n titles: [\"List 1\", \"List 2\"],\n filterPlaceholder: \"Enter keyword\",\n noCheckedFormat: \"{total} items\",\n hasCheckedFormat: \"{checked}/{total} checked\"\n },\n image: {\n error: \"FAILED\"\n },\n pageHeader: {\n title: \"Back\"\n },\n popconfirm: {\n confirmButtonText: \"Yes\",\n cancelButtonText: \"No\"\n },\n carousel: {\n leftArrow: \"Carousel arrow left\",\n rightArrow: \"Carousel arrow right\",\n indicator: \"Carousel switch to index {index}\"\n }\n }\n};\n\nexport { English as default };\n//# sourceMappingURL=en.mjs.map\n","var zhTw = {\n name: \"zh-tw\",\n el: {\n breadcrumb: {\n label: \"\\u9762\\u5305\\u5C51\"\n },\n colorpicker: {\n confirm: \"\\u78BA\\u8A8D\",\n clear: \"\\u6E05\\u7A7A\",\n defaultLabel: \"\\u8272\\u5F69\\u9078\\u64C7\\u5668\",\n description: \"\\u76EE\\u524D\\u8272\\u5F69\\u70BA {color}\\u3002\\u6309\\u4E00\\u4E0B Enter \\u4EE5\\u9078\\u64C7\\u65B0\\u8272\\u5F69\\u3002\",\n alphaLabel: \"\\u9078\\u64C7\\u900F\\u660E\\u5EA6\\u7684\\u503C\"\n },\n datepicker: {\n now: \"\\u73FE\\u5728\",\n today: \"\\u4ECA\\u5929\",\n cancel: \"\\u53D6\\u6D88\",\n clear: \"\\u6E05\\u7A7A\",\n confirm: \"\\u78BA\\u8A8D\",\n dateTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u9375\\u8207 Enter \\u9375\\u4EE5\\u9078\\u64C7\\u65E5\\u671F\",\n monthTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u9375\\u8207 Enter \\u9375\\u4EE5\\u9078\\u64C7\\u6708\\u4EFD\",\n yearTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u9375\\u8207 Enter \\u9375\\u4EE5\\u9078\\u64C7\\u5E74\\u4EFD\",\n selectedDate: \"\\u5DF2\\u9078\\u65E5\\u671F\",\n selectDate: \"\\u9078\\u64C7\\u65E5\\u671F\",\n selectTime: \"\\u9078\\u64C7\\u6642\\u9593\",\n startDate: \"\\u958B\\u59CB\\u65E5\\u671F\",\n startTime: \"\\u958B\\u59CB\\u6642\\u9593\",\n endDate: \"\\u7D50\\u675F\\u65E5\\u671F\",\n endTime: \"\\u7D50\\u675F\\u6642\\u9593\",\n prevYear: \"\\u524D\\u4E00\\u5E74\",\n nextYear: \"\\u5F8C\\u4E00\\u5E74\",\n prevMonth: \"\\u4E0A\\u500B\\u6708\",\n nextMonth: \"\\u4E0B\\u500B\\u6708\",\n year: \"\\u5E74\",\n month1: \"1 \\u6708\",\n month2: \"2 \\u6708\",\n month3: \"3 \\u6708\",\n month4: \"4 \\u6708\",\n month5: \"5 \\u6708\",\n month6: \"6 \\u6708\",\n month7: \"7 \\u6708\",\n month8: \"8 \\u6708\",\n month9: \"9 \\u6708\",\n month10: \"10 \\u6708\",\n month11: \"11 \\u6708\",\n month12: \"12 \\u6708\",\n weeks: {\n sun: \"\\u65E5\",\n mon: \"\\u4E00\",\n tue: \"\\u4E8C\",\n wed: \"\\u4E09\",\n thu: \"\\u56DB\",\n fri: \"\\u4E94\",\n sat: \"\\u516D\"\n },\n weeksFull: {\n sun: \"\\u661F\\u671F\\u65E5\",\n mon: \"\\u661F\\u671F\\u4E00\",\n tue: \"\\u661F\\u671F\\u4E8C\",\n wed: \"\\u661F\\u671F\\u4E09\",\n thu: \"\\u661F\\u671F\\u56DB\",\n fri: \"\\u661F\\u671F\\u4E94\",\n sat: \"\\u661F\\u671F\\u516D\"\n },\n months: {\n jan: \"\\u4E00\\u6708\",\n feb: \"\\u4E8C\\u6708\",\n mar: \"\\u4E09\\u6708\",\n apr: \"\\u56DB\\u6708\",\n may: \"\\u4E94\\u6708\",\n jun: \"\\u516D\\u6708\",\n jul: \"\\u4E03\\u6708\",\n aug: \"\\u516B\\u6708\",\n sep: \"\\u4E5D\\u6708\",\n oct: \"\\u5341\\u6708\",\n nov: \"\\u5341\\u4E00\\u6708\",\n dec: \"\\u5341\\u4E8C\\u6708\"\n }\n },\n inputNumber: {\n decrease: \"\\u6E1B\\u5C11\\u6578\\u503C\",\n increase: \"\\u589E\\u52A0\\u6578\\u503C\"\n },\n select: {\n loading: \"\\u8F09\\u5165\\u4E2D\",\n noMatch: \"\\u7121\\u76F8\\u7B26\\u8CC7\\u6599\",\n noData: \"\\u7121\\u8CC7\\u6599\",\n placeholder: \"\\u8ACB\\u9078\\u64C7\"\n },\n mention: {\n loading: \"\\u8F09\\u5165\\u4E2D\"\n },\n dropdown: {\n toggleDropdown: \"\\u5207\\u63DB\\u4E0B\\u62C9\\u9078\\u55AE\"\n },\n cascader: {\n noMatch: \"\\u7121\\u76F8\\u7B26\\u8CC7\\u6599\",\n loading: \"\\u8F09\\u5165\\u4E2D\",\n placeholder: \"\\u8ACB\\u9078\\u64C7\",\n noData: \"\\u7121\\u8CC7\\u6599\"\n },\n pagination: {\n goto: \"\\u524D\\u5F80\",\n pagesize: \"\\u9805/\\u9801\",\n total: \"\\u5171 {total} \\u9805\",\n pageClassifier: \"\\u9801\",\n page: \"\\u9801\",\n prev: \"\\u4E0A\\u4E00\\u9801\",\n next: \"\\u4E0B\\u4E00\\u9801\",\n currentPage: \"\\u7B2C {pager} \\u9801\",\n prevPages: \"\\u5411\\u524D {pager} \\u9801\",\n nextPages: \"\\u5411\\u5F8C {pager} \\u9801\",\n deprecationWarning: \"\\u5075\\u6E2C\\u5230\\u5DF2\\u904E\\u6642\\u7684\\u4F7F\\u7528\\u65B9\\u5F0F\\uFF0C\\u8ACB\\u53C3\\u95B1 el-pagination \\u8AAA\\u660E\\u6587\\u4EF6\\u4EE5\\u4E86\\u89E3\\u66F4\\u591A\\u8CC7\\u8A0A\"\n },\n dialog: {\n close: \"\\u95DC\\u9589\\u6B64\\u5C0D\\u8A71\\u6846\"\n },\n drawer: {\n close: \"\\u95DC\\u9589\\u6B64\\u5C0D\\u8A71\\u6846\"\n },\n messagebox: {\n title: \"\\u63D0\\u793A\",\n confirm: \"\\u78BA\\u5B9A\",\n cancel: \"\\u53D6\\u6D88\",\n error: \"\\u8F38\\u5165\\u7684\\u8CC7\\u6599\\u4E0D\\u7B26\\u5408\\u898F\\u5B9A!\",\n close: \"\\u95DC\\u9589\\u6B64\\u5C0D\\u8A71\\u6846\"\n },\n upload: {\n deleteTip: \"\\u6309 Delete \\u9375\\u4EE5\\u522A\\u9664\",\n delete: \"\\u522A\\u9664\",\n preview: \"\\u67E5\\u770B\\u5716\\u7247\",\n continue: \"\\u7E7C\\u7E8C\\u4E0A\\u50B3\"\n },\n slider: {\n defaultLabel: \"\\u6ED1\\u687F\\u4ECB\\u65BC {min} \\u81F3 {max}\",\n defaultRangeStartLabel: \"\\u9078\\u64C7\\u8D77\\u59CB\\u503C\",\n defaultRangeEndLabel: \"\\u9078\\u64C7\\u7D50\\u675F\\u503C\"\n },\n table: {\n emptyText: \"\\u66AB\\u7121\\u8CC7\\u6599\",\n confirmFilter: \"\\u7BE9\\u9078\",\n resetFilter: \"\\u91CD\\u7F6E\",\n clearFilter: \"\\u5168\\u90E8\",\n sumText: \"\\u5408\\u8A08\"\n },\n tour: {\n next: \"\\u4E0B\\u4E00\\u6B65\",\n previous: \"\\u4E0A\\u4E00\\u6B65\",\n finish: \"\\u7D50\\u675F\\u5C0E\\u89BD\"\n },\n tree: {\n emptyText: \"\\u66AB\\u7121\\u8CC7\\u6599\"\n },\n transfer: {\n noMatch: \"\\u7121\\u76F8\\u7B26\\u8CC7\\u6599\",\n noData: \"\\u7121\\u8CC7\\u6599\",\n titles: [\"\\u5217\\u8868 1\", \"\\u5217\\u8868 2\"],\n filterPlaceholder: \"\\u8ACB\\u8F38\\u5165\\u641C\\u5C0B\\u5167\\u5BB9\",\n noCheckedFormat: \"\\u5171 {total} \\u9805\",\n hasCheckedFormat: \"\\u5DF2\\u9078 {checked}/{total} \\u9805\"\n },\n image: {\n error: \"\\u8F09\\u5165\\u5931\\u6557\"\n },\n pageHeader: {\n title: \"\\u8FD4\\u56DE\"\n },\n popconfirm: {\n confirmButtonText: \"\\u78BA\\u8A8D\",\n cancelButtonText: \"\\u53D6\\u6D88\"\n },\n carousel: {\n leftArrow: \"\\u4E0A\\u4E00\\u5F35\\u6295\\u5F71\\u7247\",\n rightArrow: \"\\u4E0B\\u4E00\\u5F35\\u6295\\u5F71\\u7247\",\n indicator: \"\\u6295\\u5F71\\u7247\\u5207\\u63DB\\u81F3\\u7D22\\u5F15 {index}\"\n }\n }\n};\n\nexport { zhTw as default };\n//# sourceMappingURL=zh-tw.mjs.map\n","export default {\n 'zh-tw': {\n System_Error: '系統錯誤',\n Service_Unavailable: '系統服務暫停',\n Remote_Service_Error: '遠端連線錯誤',\n IP_Limit: 'IP限制不能請求該資源',\n Illegal_Request: '非法請求',\n Token_Missing: '缺少source (token) 參數',\n Unsupport_Mediatype: '不支援的MediaType',\n Param_Error: '參數錯誤,您回傳的資料內容或代碼數量不符規範',\n System_Busy: '系統過載',\n Job_Expired: '執行超時',\n RPC_Error: 'RPC錯誤',\n Partial_Data_Error: '部分資料錯誤',\n Time_Out: '連線逾時',\n Mail_Failed: '寄信功能異常',\n Decode_Failed: '解密功能異常',\n WeChat_GetOpenID_Error: '微信取OpenID功能異常',\n SDK_Unsupport_Function: 'SDK不支援此功能',\n API_Internet_Error: '連線其他API失敗',\n SMS_Failed: '簡訊發送異常,請檢查國碼及手機號碼是否輸入正確',\n Insert_Problem_Type_Wrong: '插入錯誤之參數型態不正確',\n Insert_Problem_KeyColumn_Exist: '已存在相同主鍵欄位',\n Update_Problem_Type_Wrong: '更新錯誤之參數型態不正確',\n Update_Problem_KeyColumn_Miss: '缺少主鍵',\n Select_Problem_No_Data: '查無資料',\n Update_Error: '更新錯誤',\n Insert_Error: '插入失敗',\n Upsert_Error: '更新插入失敗',\n Delete_Error: '刪除失敗',\n DBRelated_Error: '資料庫相關系統錯誤',\n Data_Duplicate: '資料重複',\n Password_Wrong: '密碼錯誤',\n ProcessOrder_Duplicate: '工序子工單重複',\n No_Right_to_Access: '權限不足',\n UserID_UnExist: '帳號不存在',\n Account_Quit: '帳號停用',\n Verify_Fail: '驗證錯誤',\n ID_SameAs_Password: '帳號等同於密碼',\n Auth_Error: '帳號認證錯誤',\n Machine_Number_Limit: '機台授權數量限制',\n Token_Expired: '權證時效過期,請重新整理或重新提交表單',\n Password_Need_Change: '密碼必須更改(忘記密碼時)',\n Cookie_Error: 'Cookie驗證錯誤,您的登入時限可能過期,請重新登入',\n WeChat_First_Login: '微信首次登入',\n Token_Verify_Fail: 'Token驗證失敗',\n Option_Right_Invalid: '選配功能權限不足',\n No_Right_to_Access_CNC: '對控制器權限不足',\n Mail_Verify_Fail: '信箱尚未驗證',\n No_Right_to_Access_Equipment: '對其他設備權限不足',\n Equipment_Name_Duplicate: '其他設備名稱重複',\n Software_Serial_Number_Valid: '軟體序號非法,直聯網用之序號不得拿來使用SMB軟體序號相關 API',\n Input_Type_Wrong: '參數型態不正確',\n Input_Size_Exceeded: '輸入參數過多',\n File_Not_Exist: '檔案不存在',\n File_Using_Conflict: '檔案使用衝突',\n File_Not_ExistInRequest: '檔案不存在於參數中',\n File_Upload_Number_Limit: '檔案上傳數量問題',\n Oss_Upload_Fail: '上傳到OSS失敗',\n File_Size_Exceeded: '單一檔案大小超過上限',\n Folder_Size_Exceeded: '單一資料夾檔案大小超過上限',\n File_Extension_Invalid: '非法的副檔名',\n File_Delete_Fail: '刪除檔案失敗',\n File_Related_Error: '檔案相關錯誤',\n File_InUse_Error: '檔案正在使用中',\n Folder_Not_Exist: '資料夾不存在',\n Folder_InUse_Error: '資料夾正在使用中',\n Folder_Error: '通用資料夾錯誤訊息',\n Partial_File_Fail: '部分檔案失敗',\n OSS_Error: 'OSS通用錯誤訊息',\n Connect_Broker_Failed: '連線Broker失敗',\n Subscribe_Topic_Failed: '訂閱topic失敗',\n Publish_Topic_Failed: '發布topic失敗',\n Duplicate_Subscribe_Topic: '重複訂閱topic',\n Not_Subscribe_Topic_Yet: '尚未訂閱此Topic',\n Unsubscribe_Topic_Failed: '取消訂閱topic失敗',\n DisConnect_Broker_Failed: '斷線Broker失敗',\n CNC_MQTT_Error: '通用控制器MQTT相關錯誤',\n CNC_Offline: '控制器離線',\n CNC_Busy: '控制器忙碌中',\n CNC_Busy_MQTT: '控制器因為MQTT指令忙碌中',\n SMB_MQTT_Error: '通用 SMB MQTT 相關錯誤',\n SMB_Offline: 'SMB離線',\n SMB_Busy: 'SMB忙碌中',\n SMB_Busy_MQTT: 'SMB 因為MQTT忙碌中',\n Client_Already_Connect: '已經有相同資訊的Client連線中',\n CNC_Error: '控制器通用錯誤碼',\n CNC_Not_Regist: '控制器沒有註冊過',\n CNC_Already_Decode: '該控制器對應的檢查碼已經解密成功了',\n CNC_Already_Bind_SynFactory: '該控制器已經被註冊綁定給其他終端使用者',\n CNC_Name_Duplicate: '終端使用者的控制器名稱重複',\n CNC_Connection_Full: '終端使用者的連線數量已達上限',\n CNC_Not_Binding: '控制器並沒有被任何終端綁定',\n CNC_Disk_Not_Enough: '控制器磁碟未足夠',\n CNC_Dispatch_Type: '控制器派送類型問題(例如:參數不對)',\n CNC_Busy_FileRelated: '控制器忙碌處理檔案相關事宜',\n Robot_CNC_Direct_Dispatch_Deny: '機器人控制器不允許接收派工',\n CNC_Busy_LogBackup: '控制器忙碌處理Log備份相關事宜',\n CNC_Disconnected: '控制器離線中,無法交握',\n CNC_Invalid_BindingType: '控制器綁定類型不適用,如部分功能只有直聯網機台能使用',\n CNC_Invalid_Brand: '控制器廠牌不適用,如部分功能只有新代廠牌能使用',\n CNC_Busy_ReportWorkRelated: '控制器忙碌無法修改報工方式',\n CNC_Check_Connection: '控制器不合法或連線問題',\n Decode_Error: '序號或檢查代碼輸入錯誤',\n Decode_Illegal: '此檢查代碼或解密行為異常,請聯繫新代進一步確認',\n Subaccount_Auth_Illegal: '您沒有權限,請洽您的機械廠管理者',\n VerifyCode_Illegal: '檢查代碼異常',\n SN_Not_Found: '資料庫查無此筆序號',\n Decode_DataBase_Action_Error: '解密資料庫操作錯誤,請聯繫新代進一步確認',\n Remote_Decode_Error: '遠距解密失敗',\n CNCType_Model_Not_Found: '查無控制器機型或控制器類別',\n SubAccount_Multi_Wechat_Bind: '子帳號存在多組微信綁定',\n MotherAccount_Multi_Wechat_Bind: '母帳號存在多組微信綁定',\n Production_Plan_Error: '生產計劃管理通用錯誤碼',\n Production_Order_Duplicate: '工單重複',\n Order_Duplicate: '訂單重複或訂單資料不一致',\n InValid_WorkOrderID: '工令ID 不合法 (不屬於該使用者或者不存在)',\n InValid_CNC_ID: '不合法的控制器ID (可能不屬於當前使用者 或者根本不存在)',\n InValid_ExceptedStartTime_Parameter: '工單起始時間有誤',\n Out_Of_Number: '取號碼系統發現 規格內可用號碼用鑿',\n Production_Order_Not_Same_Order: '工單已存在,對應到不同訂單號錯誤',\n Work_Order_Inconsistency: '子工單已存在,機台ID、工序相同 但其他欄位(如需求工件數)不同',\n PLM_Data_Inconsistent: '與工藝包資料不一致',\n Work_Order_Comes_From_OT: '子工單來源是OT的錯誤碼',\n InValid_ProductionOrderID: '工單ID不合法(不屬於該使用者或不存在)',\n PLM_CraftPath_Info_Inconsistent: '與工藝包的工藝路徑資料不符',\n PLM_ProdctionProcess_Info_Inconsistent: '與工藝包的工序資料不符',\n PLM_Machine_Info_Inconsistent: '與工藝包的機台資料不符',\n InValid_Shift_ID: '不合法的班別ID',\n InValid_Emp_ID: '不合法的職員ID',\n Part_Serial_Number_In_Use: '序號已經被使用',\n Part_Serial_Number_Process_Lock: '已有人正在取序號',\n Serial_Number_Count_Setting_Conflict: '取號數量和設定不符',\n Insufficient_Number: '剩餘號碼數量不足',\n Work_Order_Status_Error: '子工單狀態有誤',\n Part_Serial_Number_Length_Limit: '序號長度過長',\n Duplicate_SN_List: '清單號碼內序號重複',\n Work_Order_Duplicate_Start: '子工單在一分鐘內重複開工',\n Work_Order_Start_Fail: '子工單開工失敗',\n Work_Order_Suspend_Fail: '子工單暫停加工失敗',\n Work_Order_Close_Fail_But_Suspend_Success: '子工單關閉失敗,但是暫停加工成功',\n Work_Order_Part_Count_Not_Fulfill: '子工單需求數尚未完成,無法完工',\n Work_Order_Start_Switch_Fail: '子工單開工時換單失敗',\n Duplicate_Production_Order_List: '清單內工單重複',\n Work_order_Can_not_Direct_Start_work: '子工單無法直接開工',\n Unbind_Part_Serial_Number_When_Start_work: '加工中的工單不能執行解綁',\n InValid_Part_Serial_Number: '不合法的序號',\n Machine_Send_File_When_Start_Work: '機台正在開工傳檔中,無法執行開工',\n Serial_Number_Bind_Different_Part_Number: '序號綁定到不同料號',\n Need_Part_Serial_Number_Export_Time: '已有出站時間的序號,更新後需要有序號的出站時間',\n Shift_Error: '班別錯誤',\n Employee_Error: '人員錯誤',\n Shift_Pattern_Not_Exist: '班制模式不存在',\n Same_Pattern_System_Exist: '已存在相同班制模式的實際班制',\n Pattern_Shift_Number_Conflict: '欲新增的班別數量與班制模式不符',\n Shift_Time_Overlap: '班別時間重疊',\n Shift_Time_Sum_Exceed: '班制時間區間超過上限(一天)',\n Shift_Start_End_Time_Conflict: '班別開始時間大於等於結束時間',\n Shift_System_Not_Exist: '實際班制不存在',\n Shift_ID_Shift_System_Conflict: '該班別不屬於此實際班制',\n Duplicate_Dept: '部門名稱重複',\n Success: '成功',\n Work_Report_Review_Error: '審核失敗',\n Wrong_Work_Quantity: '報工數量數量錯誤,數量被卡控',\n Field_Count_Max: '自定義字段數量過多',\n Field_Name_Repeat: '自定義字段名稱重復',\n Break_Time_Out_Of_Range: '有休息時間超出該輪班區間',\n FileDispatch_Error: '檔案派送通用錯誤碼',\n TakeEvent_ID_Error: '取事件代碼錯誤',\n Service_Original_Connect_Error: '串接原生SynFactory API錯誤',\n IsProxyCheck_Error: '確認是否為代理時發生錯誤',\n IsCNCIdentityValid_Check_Error: '確認CNC認證資訊是否正確時發生錯誤',\n CanSNAccessEquipment_Check_Error: '確認軟體序號是否可使用設備時發生錯誤',\n SNCanNotAccessEquipment: '該序號不能使用該設備',\n GetTriggerHistory_Error: '呼叫取派送記錄API時發生錯誤',\n Duplicate_Setting_Data: '預設路徑設定重複',\n Setting_Number_Limit_Exceed: '預設路徑設定 數量 達到設定上限',\n None_Data_Delete: '沒有資料被刪除',\n Material_Error: '物料通用錯誤碼',\n MaterialPartNumber_Invalid: '物料編號不合法',\n MaterialPartNumber_Duplicated: '物料編號重複',\n MaterialType_Duplicated: '物料類型重複',\n MaterialPartNumber_Not_Found: '物料編號不存在',\n MaterialBOM_Exist: '物料BOM表已存在',\n MaterialBOM_Child_Relation_Invalid: '物料BOM表子項非法',\n MaterialBOM_RelationShip_Invalid: '不能存在其他BOM表有父子料相反的關係',\n MaterialBOM_Self_Contained: '父項物料與子項物料不能相同',\n MaterialBOM_Not_Exist: '物料BOM表不存在',\n MaterialBOM_Bulk_Insert_Exceed: '超出批量匯入數量',\n MaterialBOM_Version_Not_Exist: '料號BOM版本不存在',\n Material_Sync_To_PDM_Fail: '料號同步到PDM失敗',\n Material_Do_Not_Have_BatchNumber_Setting: '料號沒有批次號設定',\n MaterialPartNumber_Status_Disable: '料號狀態停用',\n Response_Fomat_Error: '格式不正確',\n Equipmnet_Craft_Bind_Error: '設備工藝綁定錯誤',\n Template_Format_Error: '刀具模板格式錯誤',\n Craft_NO_ToolLIfeTemplate: '該設備對應工序無刀具壽命資料',\n Tool_Axis_Error: '系統(軸群)錯誤',\n Specification_Update_Error: '規範更新錯誤',\n Equip_Monitor_Setting_Name_Existed: '監控設定名稱已存在',\n Equip_In_Monitor_Setting_Has_Existed_In_Same_Indicator_And_Immediate_Noti: '設備在該監控指標下已設定過即時通知',\n Equip_ID_Not_Exist: '設備ID不存在',\n Equip_Monitor_Setting_ID_Not_Existed: '監控設定ID不存在',\n CVUS_Error: '通用客製變數系統錯誤',\n CVUS_Setting_Not_Exist: '客製變數設定不存在',\n CVUS_Parameter_Validation_Fail: 'CVUS通用參數驗證失敗',\n CVUS_SETTING_COUNT_LIMIT: '達到CVUS 設定數量上限',\n CVUS_VARTYPE_LENGTH_LIMIT: 'vartype 參數超過長度限制',\n CVUS_Map_Diff_Set_Result: '不同設定結果',\n CVUS_Map_Error_Busy: '設備忙碌,無法設定',\n CVUS_Map_When_Get_Setting: '當取得設定時發生錯誤',\n CVUS_Map_Unsup_Var: '不支援的變數',\n CVUS_Map_Var_Addr: '不支援的變數指向',\n CVUS_Map_Unsup_Var_Tp: '不支援的變數類型',\n CVUS_Map_Unsup_Freq: '不支援的上傳頻率',\n CVUS_EventID_Not_Exist: '該派送事件不存在',\n CVM_Parameter_Validation_Fail: '客製變數修改參數驗證失敗',\n CVM_SETTING_COUNT_LIMIT: '達到CVM設定數量上限',\n CVM_VARTYPE_LENGTH_LIMIT: 'CVM vartype 參數超過長度限制',\n CVM_Take_Event_ID: 'CVM 服務取得派送ID錯誤',\n CVM_Different_Result: 'CVM 有不同修改結果',\n CVM_Busy_Var_Modifying: 'CVM執行失敗,忙碌中,正在變更變數數值',\n CVM_Error_DataType_Trans_Error: 'CVM執行失敗,資料型別轉型失敗',\n CVM_Error_Unsupport_VarType: 'CVM執行失敗,不支援的變數類別',\n CVM_Error_Wrong_Var_Address: 'CVM執行失敗,變數位址不合法',\n CVM_Error_Unsupport_DataType: 'CVM執行失敗,不支援的型別代碼',\n CVUS_Error_GroupSub_NotExist: '該群組相關資料不存在,有可能是設備ID不存在,有可能是該設備名稱或者ID不存在',\n CVUS_Equip_Not_Support: '設備不支援群組訂閱功能',\n CVUS_Error_DataType_Inconsistent: '資料型態不一致',\n CVUS_Error_Unsupport_DataType: '不支援的資料型態',\n CVUS_PLC_Setting_Count_Limit: 'PLC設備達數量設定上限',\n Data_Already_Exists: '數據已存在',\n Data_Count_Few: '資料筆數過少',\n APP_Service_Common: 'APP服務通用錯誤',\n APP_Not_Exist: 'APP不存在',\n APP_Duplicate_MQ_Connection: 'APP已經連線到MQTT',\n Part_Serial_Number_Error: '料件序號通用錯誤',\n Part_Serial_Number_Already_Bind_Part_Number: '料件序號已經綁在料號上了',\n Part_Serial_Number_Not_Found: '找不到該料件序號',\n Part_Serial_Number_Do_Not_Bind_Part_Number: '料件序號沒有綁定的料號',\n Operation_Uuid_Already_Bind_Other_Part_Number: '該操作記錄已經綁定在其他料號上了',\n Custom_Parameter_Already_Used_By_Part_Serial_Number_Setting: '序號自定義參數已經被序號設定所使用',\n Serial_Number_Rule_Setting_Name_Duplicate: '序號規則設定的名稱重複',\n Serial_Number_Interval_Setting_Error: '流水號區間設定錯誤',\n Machine_Type_Exit_Error: '機台類別已存在',\n Cnc_Already_Bound: '控制器已绑定',\n Batch_Number_Error: '批次號通用錯誤',\n Batch_Number_Setting_Name_Duplicate: '批次號設定名稱重複',\n Batch_Number_Setting_ID_Not_Exist: '批次號設定ID不存在',\n Batch_Number_Setting_Not_Enable: '批次號設定未啟用',\n Batch_Number_Insufficient: '批次號數量不足',\n Batch_Number_Already_Bind_Other_Production_Order: '批次號已經綁定在其他工單上',\n Illegal_Batch_Number: '不合法的批次號',\n Batch_Number_Setting_Exceed_Max_Digit: '批次號設定超過最大位數',\n Message_Push_Error: '推播服務通用錯誤',\n Message_Push_Server_Not_Initialized: '推播服務尚未與伺服器做初始化連線設定',\n Message_Push_Mobile_Message_Excced: '推播服務手機提醒訊息達到上限',\n Message_Push_Server_Connect_Fail: '推播服務與推播伺服器連線失敗',\n Message_Push_Emp_Not_Bind_APP: '推播服務要發送訊息的人員尚未綁定APP',\n Message_Push_Message_Setting_Not_Initialized: '推播服務手機提醒訊息設定尚未初始化開通',\n Tag_Over_Count: '超出工單可綁定標簽數量',\n Data_Not_Exists: '數據不存在',\n Encoding_Exceeds_Upper_Limit: '編碼會超過系統設定上限,請至工廠建模中的編號規則設定',\n No_Beat_Point: '請先至工廠建模_產品工藝設定該路徑節拍點',\n Last_Process: '最後一道工序,不能删除',\n MaterialUnit_Not_Exist: '單位不存在',\n Production_Order_Not_In_NotDispatch: '非未派工的工單不可刪除',\n Production_Order_Has_Source_Document_Association: '生產工單存在源單關聯',\n Production_Order_Tag_Number_Released: '生產工單已發行標簽',\n Out_Storage_Not_Exit: '出庫倉庫不存在',\n Out_Stock_Space_Not_Exit: '出庫倉位不存在',\n In_Storage_Not_Exit: '入库仓库不存在',\n In_Stock_Space_Not_Exit: '入库仓位不存在',\n Def_In_Storage_Not_Exit: '不良入库仓库不存在',\n Def_In_Stock_Space_Not_Exit: '不良入庫倉庫不存在',\n Purchase_In_Storage_Not_Exit: '采购入库仓库不存在',\n Purchase_In_Stock_Space_Not_Exit: '採購入庫倉位不存在',\n },\n 'zh-cn': {\n System_Error: '系统错误',\n Service_Unavailable: '系统服务暂停',\n Remote_Service_Error: '远端连线错误',\n ProcessOrder_Duplicate: '工序子工单重复',\n IP_Limit: 'IP限制不能请求该资源',\n Illegal_Request: '非法请求',\n Token_Missing: '缺少source (token) 参数',\n Unsupport_Mediatype: '不支援的MediaType',\n Param_Error: '参数错误,您回传的资料内容或代码数量不符规范',\n System_Busy: '系统过载',\n Job_Expired: '执行超时',\n RPC_Error: 'RPC错误',\n Partial_Data_Error: '部分资料错误',\n Time_Out: '连线逾时',\n Mail_Failed: '寄信功能异常',\n Decode_Failed: '解密功能异常',\n WeChat_GetOpenID_Error: '微信取OpenID功能异常',\n SDK_Unsupport_Function: 'SDK不支援此功能',\n API_Internet_Error: '连线其他API失败',\n SMS_Failed: '简讯发送异常,请检查国码及手机号码是否输入正确',\n Insert_Problem_Type_Wrong: '插入错误之参数型态不正确',\n Insert_Problem_KeyColumn_Exist: '已存在相同主键栏位',\n Update_Problem_Type_Wrong: '更新错误之参数型态不正确',\n Update_Problem_KeyColumn_Miss: '缺少主键',\n Select_Problem_No_Data: '查无资料',\n Update_Error: '更新错误',\n Insert_Error: '插入失败',\n Upsert_Error: '更新插入失败',\n Delete_Error: '删除失败',\n DBRelated_Error: '资料库相关系统错误',\n Data_Duplicate: '资料重复',\n Password_Wrong: '密码错误',\n No_Right_to_Access: '权限不足',\n UserID_UnExist: '帐号不存在',\n Account_Quit: '帐号停用',\n Verify_Fail: '验证错误',\n ID_SameAs_Password: '帐号等同于密码',\n Auth_Error: '帐号认证错误',\n Machine_Number_Limit: '机台授权数量限制',\n Token_Expired: '权证时效过期,请重新整理或重新提交表单',\n Password_Need_Change: '密码必须更改(忘记密码时)',\n Cookie_Error: 'Cookie验证错误,您的登入时限可能过期,请重新登入',\n WeChat_First_Login: '微信首次登入',\n Token_Verify_Fail: 'Token验证失败',\n Option_Right_Invalid: '选配功能权限不足',\n No_Right_to_Access_CNC: '对控制器权限不足',\n Mail_Verify_Fail: '信箱尚未验证',\n No_Right_to_Access_Equipment: '对其他设备权限不足',\n Equipment_Name_Duplicate: '其他设备名称重复',\n Software_Serial_Number_Valid: '软体序号非法,直联网用之序号不得拿来使用SMB软体序号相关 API',\n Input_Type_Wrong: '参数型态不正确',\n Input_Size_Exceeded: '输入参数过多',\n File_Not_Exist: '档案不存在',\n File_Using_Conflict: '档案使用冲突',\n File_Not_ExistInRequest: '档案不存在于参数中',\n File_Upload_Number_Limit: '档案上传数量问题',\n Oss_Upload_Fail: '上传到OSS失败',\n File_Size_Exceeded: '单一档案大小超过上限',\n Folder_Size_Exceeded: '单一资料夹档案大小超过上限',\n File_Extension_Invalid: '非法的副档名',\n File_Delete_Fail: '删除档案失败',\n File_Related_Error: '档案相关错误',\n File_InUse_Error: '档案正在使用中',\n Folder_Not_Exist: '资料夹不存在',\n Folder_InUse_Error: '资料夹正在使用中',\n Folder_Error: '通用资料夹错误讯息',\n Partial_File_Fail: '部分档案失败',\n OSS_Error: 'OSS通用错误讯息',\n Connect_Broker_Failed: '连线Broker失败',\n Subscribe_Topic_Failed: '订阅topic失败',\n Publish_Topic_Failed: '发布topic失败',\n Duplicate_Subscribe_Topic: '重复订阅topic',\n Not_Subscribe_Topic_Yet: '尚未订阅此Topic',\n Unsubscribe_Topic_Failed: '取消订阅topic失败',\n DisConnect_Broker_Failed: '断线Broker失败',\n CNC_MQTT_Error: '通用控制器MQTT相关错误',\n CNC_Offline: '控制器离线',\n CNC_Busy: '控制器忙碌中',\n CNC_Busy_MQTT: '控制器因为MQTT指令忙碌中',\n SMB_MQTT_Error: '通用 SMB MQTT 相关错误',\n SMB_Offline: 'SMB离线',\n SMB_Busy: 'SMB忙碌中',\n SMB_Busy_MQTT: 'SMB 因为MQTT忙碌中',\n Client_Already_Connect: '已经有相同资讯的Client连线中',\n CNC_Error: '控制器通用错误码',\n CNC_Not_Regist: '控制器没有注册过',\n CNC_Already_Decode: '该控制器对应的检查码已经解密成功了',\n CNC_Already_Bind_SynFactory: '该控制器已经被注册绑定给其他终端使用者',\n CNC_Name_Duplicate: '终端使用者的控制器名称重复',\n CNC_Connection_Full: '终端使用者的连线数量已达上限',\n CNC_Not_Binding: '控制器并没有被任何终端绑定',\n CNC_Disk_Not_Enough: '控制器磁碟未足够',\n CNC_Dispatch_Type: '控制器派送类型问题(例如:参数不对)',\n CNC_Busy_FileRelated: '控制器忙碌处理档案相关事宜',\n Robot_CNC_Direct_Dispatch_Deny: '机器人控制器不允许接收派工',\n CNC_Busy_LogBackup: '控制器忙碌处理Log备份相关事宜',\n CNC_Disconnected: '控制器离线中,无法交握',\n CNC_Invalid_BindingType: '控制器绑定类型不适用,如部分功能只有直联网机台能使用',\n CNC_Invalid_Brand: '控制器厂牌不适用,如部分功能只有新代厂牌能使用',\n CNC_Busy_ReportWorkRelated: '控制器忙碌无法修改报工方式',\n CNC_Check_Connection: '控制器不合法或连线问题',\n Decode_Error: '序号或检查代码输入错误',\n Decode_Illegal: '此检查代码或解密行为异常,请联系新代进一步确认',\n Subaccount_Auth_Illegal: '您没有权限,请洽您的机械厂管理者',\n VerifyCode_Illegal: '检查代码异常',\n SN_Not_Found: '资料库查无此笔序号',\n Decode_DataBase_Action_Error: '解密资料库操作错误,请联系新代进一步确认',\n Remote_Decode_Error: '远距解密失败',\n CNCType_Model_Not_Found: '查无控制器机型或控制器类别',\n Wechat_Error: '微信错误通用错误码',\n SubAccount_Multi_Wechat_Bind: '子帐号存在多组微信绑定',\n MotherAccount_Multi_Wechat_Bind: '母帐号存在多组为信绑定',\n Production_Plan_Error: '生产计划管理通用错误码',\n Production_Order_Duplicate: '工单重复',\n Order_Duplicate: '订单重复或订单资料不一致',\n InValid_WorkOrderID: '工令ID 不合法 (不属于该使用者或者不存在)',\n InValid_CNC_ID: '不合法的控制器ID (可能不属于当前使用者 或者根本不存在)',\n InValid_ExceptedStartTime_Parameter: '工单起始时间有误',\n Out_Of_Number: '取号码系统发现 规格内可用号码用凿',\n Production_Order_Not_Same_Order: '工单已存在,对应到不同订单号错误',\n Work_Order_Inconsistency: '子工单已存在,机台ID、工序相同 但其他栏位(如需求工件数)不同',\n PLM_Data_Inconsistent: '与工艺包资料不一致',\n Work_Order_Comes_From_OT: '子工单来源是OT的错误码',\n InValid_ProductionOrderID: '工单ID不合法(不属于该使用者或不存在)',\n PLM_CraftPath_Info_Inconsistent: '与工艺包的工艺路径资料不符',\n PLM_ProdctionProcess_Info_Inconsistent: '与工艺包的工序资料不符',\n PLM_Machine_Info_Inconsistent: '与工艺包的机台资料不符',\n InValid_Shift_ID: '不合法的班别ID',\n InValid_Emp_ID: '不合法的职员ID',\n Part_Serial_Number_In_Use: '序号已经被使用',\n Part_Serial_Number_Process_Lock: '已有人正在取序号',\n Serial_Number_Count_Setting_Conflict: '取号数量和设定不符',\n Insufficient_Number: '剩余号码数量不足',\n Work_Order_Status_Error: '子工单状态有误',\n Part_Serial_Number_Length_Limit: '序号长度过长',\n Duplicate_SN_List: '清单号码内序号重复',\n Work_Order_Duplicate_Start: '子工单在一分钟内重复开工',\n Work_Order_Start_Fail: '子工单开工失败',\n Work_Order_Suspend_Fail: '子工单暂停加工失败',\n Work_Order_Close_Fail_But_Suspend_Success: '子工单关闭失败,但是暂停加工成功',\n Work_Order_Part_Count_Not_Fulfill: '子工单需求数尚未完成,无法完工',\n Work_Order_Start_Switch_Fail: '子工单开工时换单失败',\n Duplicate_Production_Order_List: '清单内工单重复',\n Work_order_Can_not_Direct_Start_work: '子工单无法直接开工',\n Unbind_Part_Serial_Number_When_Start_work: '加工中的工单不能执行解绑',\n InValid_Part_Serial_Number: '不合法的序号',\n Machine_Send_File_When_Start_Work: '机台正在开工传档中,无法执行开工',\n Serial_Number_Bind_Different_Part_Number: '序号绑定到不同料号',\n Need_Part_Serial_Number_Export_Time: '已有出站时间的序号,更新后需要有序号的出站时间',\n Shift_Error: '班别错误',\n Employee_Error: '人员错误',\n Shift_Pattern_Not_Exist: '班制模式不存在',\n Same_Pattern_System_Exist: '已存在相同班制模式的实际班制',\n Pattern_Shift_Number_Conflict: '欲新增的班别数量与班制模式不符',\n Shift_Time_Overlap: '班别时间重叠',\n Shift_Time_Sum_Exceed: '班制时间区间超过上限(一天)',\n Shift_Start_End_Time_Conflict: '班别开始时间大于等于结束时间',\n Shift_System_Not_Exist: '实际班制不存在',\n Shift_ID_Shift_System_Conflict: '该班别不属于此实际班制',\n Duplicate_Dept: '部门名称重复',\n Success: '成功',\n Work_Report_Review_Error: '审核失败',\n Wrong_Work_Quantity: '报工数量数量错误,数量被卡控',\n Field_Count_Max: '自定义字段数量过多',\n Field_Name_Repeat: '自定义字段名称重复',\n Break_Time_Out_Of_Range: '有休息时间超出该轮班区间',\n FileDispatch_Error: '档案派送通用错误码',\n TakeEvent_ID_Error: '取事件代码错误',\n Service_Original_Connect_Error: '串接原生SynFactory API错误',\n IsProxyCheck_Error: '确认是否为代理时发生错误',\n IsCNCIdentityValid_Check_Error: '确认CNC认证资讯是否正确时发生错误',\n CanSNAccessEquipment_Check_Error: '确认软体序号是否可使用设备时发生错误',\n SNCanNotAccessEquipment: '该序号不能使用该设备',\n GetTriggerHistory_Error: '呼叫取派送记录API时发生错误',\n Duplicate_Setting_Data: '预设路径设定重复',\n Setting_Number_Limit_Exceed: '预设路径设定 数量 达到设定上限',\n None_Data_Delete: '没有资料被删除',\n Material_Error: '物料通用错误码',\n MaterialPartNumber_Invalid: '物料编号不合法',\n MaterialPartNumber_Duplicated: '物料编号重复',\n MaterialType_Duplicated: '物料类型重复',\n MaterialPartNumber_Not_Found: '物料编号不存在',\n MaterialBOM_Exist: '物料BOM表已存在',\n MaterialBOM_Child_Relation_Invalid: '物料BOM表子项非法',\n MaterialBOM_RelationShip_Invalid: '不能存在其他BOM表有父子料相反的关系',\n MaterialBOM_Self_Contained: '父项物料与子项物料不能相同',\n MaterialBOM_Not_Exist: '物料BOM表不存在',\n MaterialBOM_Bulk_Insert_Exceed: '超出批量汇入数量',\n MaterialBOM_Version_Not_Exist: '料号BOM版本不存在',\n Material_Sync_To_PDM_Fail: '料号同步到PDM失败',\n Material_Do_Not_Have_BatchNumber_Setting: '料号没有批次号设定',\n MaterialPartNumber_Status_Disable: '料号状态停用',\n Response_Fomat_Error: '格式不正确',\n Equipmnet_Craft_Bind_Error: '设备工艺绑定错误',\n Template_Format_Error: '刀具模板格式错误',\n Craft_NO_ToolLIfeTemplate: '该设备对应工序无刀具寿命资料',\n Tool_Axis_Error: '系统(轴群)错误',\n Specification_Update_Error: '规范更新错误',\n Equip_Monitor_Setting_Name_Existed: '监控设定名称已存在',\n Equip_In_Monitor_Setting_Has_Existed_In_Same_Indicator_And_Immediate_Noti: '设备在该监控指标下已设定过即时通知',\n Equip_ID_Not_Exist: '设备ID不存在',\n Equip_Monitor_Setting_ID_Not_Existed: '监控设定ID不存在',\n CVUS_Error: '通用客制变数系统错误',\n CVUS_Setting_Not_Exist: '客制变数设定不存在',\n CVUS_Parameter_Validation_Fail: 'CVUS通用参数验证失败',\n CVUS_SETTING_COUNT_LIMIT: '达到CVUS 设定数量上限',\n CVUS_VARTYPE_LENGTH_LIMIT: 'vartype 参数超过长度限制',\n CVUS_Map_Diff_Set_Result: '不同设定结果',\n CVUS_Map_Error_Busy: '设备忙碌,无法设定',\n CVUS_Map_When_Get_Setting: '当取得设定时发生错误',\n CVUS_Map_Unsup_Var: '不支援的变数',\n CVUS_Map_Var_Addr: '不支援的变数指向',\n CVUS_Map_Unsup_Var_Tp: '不支援的变数类型',\n CVUS_Map_Unsup_Freq: '不支援的上传频率',\n CVUS_EventID_Not_Exist: '该派送事件不存在',\n CVM_Parameter_Validation_Fail: '客制变数修改参数验证失败',\n CVM_SETTING_COUNT_LIMIT: '达到CVM设定数量上限',\n CVM_VARTYPE_LENGTH_LIMIT: 'CVM vartype 参数超过长度限制',\n CVM_Take_Event_ID: 'CVM 服务取得派送ID错误',\n CVM_Different_Result: 'CVM 有不同修改结果',\n CVM_Busy_Var_Modifying: 'CVM执行失败,忙碌中,正在变更变数数值',\n CVM_Error_DataType_Trans_Error: 'CVM执行失败,资料型别转型失败',\n CVM_Error_Unsupport_VarType: 'CVM执行失败,不支援的变数类别',\n CVM_Error_Wrong_Var_Address: 'CVM执行失败,变数位址不合法',\n CVM_Error_Unsupport_DataType: 'CVM执行失败,不支援的型别代码',\n CVUS_Error_GroupSub_NotExist: '该群组相关资料不存在,有可能是设备ID不存在,有可能是该设备名称或者ID不存在',\n CVUS_Equip_Not_Support: '设备不支援群组订阅功能',\n CVUS_Error_DataType_Inconsistent: '资料型态不一致',\n CVUS_Error_Unsupport_DataType: '资料型态不支援',\n CVUS_PLC_Setting_Count_Limit: 'PLC设备达数量设定上限',\n Part_Serial_Number_Error: '料件序号通用错误',\n Part_Serial_Number_Already_Bind_Part_Number: '料件序号已经绑在料号上了',\n Part_Serial_Number_Not_Found: '找不到该料件序号',\n Part_Serial_Number_Do_Not_Bind_Part_Number: '料件序号没有绑定的料号',\n Operation_Uuid_Already_Bind_Other_Part_Number: '该操作记录已经绑定在其他料号上了',\n Custom_Parameter_Already_Used_By_Part_Serial_Number_Setting: '序号自定义参数已经被序号设定所使用',\n Serial_Number_Rule_Setting_Name_Duplicate: '序号规则设定的名称重复',\n Serial_Number_Interval_Setting_Error: '流水号区间设定错误',\n Machine_Type_Exit_Error: '机台类别已存在',\n Cnc_Already_Bound: '控制器已绑定',\n Batch_Number_Error: '批次号通用错误',\n Batch_Number_Setting_Name_Duplicate: '批次号设定名称重复',\n Batch_Number_Setting_ID_Not_Exist: '批次号设定ID不存在',\n Batch_Number_Setting_Not_Enable: '批次号设定未启用',\n Batch_Number_Insufficient: '批次号数量不足',\n Batch_Number_Already_Bind_Other_Production_Order: '批次号已经绑定在其他工单上',\n Illegal_Batch_Number: '不合法的批次号',\n Batch_Number_Setting_Exceed_Max_Digit: '批次号设定超过最大位数',\n Message_Push_Error: '推播服务通用错误',\n Message_Push_Server_Not_Initialized: '推播服务尚未与伺服器做初始化连线设定',\n Message_Push_Mobile_Message_Excced: '推播服务手机提醒讯息达到上限',\n Message_Push_Server_Connect_Fail: '推播服务与推播伺服器连线失败',\n Message_Push_Emp_Not_Bind_APP: '推播服务要发送讯息的人员尚未绑定APP',\n Message_Push_Message_Setting_Not_Initialized: '推播服务手机提醒讯息设定尚未初始化开通',\n Tag_Over_Count: '超出工单可绑定标签数量',\n Data_Not_Exists: '数据不存在',\n Encoding_Exceeds_Upper_Limit: '编码会超过系统设定上限,请至工厂建模中的编号规则设定',\n No_Beat_Point: '请先至工厂建模_产品工艺设定该路径节拍点',\n Last_Process: '最后一道工序,不能删除',\n MaterialUnit_Not_Exist: '单位不存在',\n Production_Order_Not_In_NotDispatch: '非未派工的工单不可删除',\n Production_Order_Has_Source_Document_Association: '生产工单存在源单关联',\n Production_Order_Tag_Number_Released: '生产工单已发行标签',\n Out_Storage_Not_Exit: '出库仓库不存在',\n Out_Stock_Space_Not_Exit: '出库仓位不存在',\n In_Storage_Not_Exit: '入库仓库不存在',\n In_Stock_Space_Not_Exit: '入库仓位不存在',\n Def_In_Storage_Not_Exit: '不良入库仓库不存在',\n Def_In_Stock_Space_Not_Exit: '不良入库仓库不存在',\n Purchase_In_Storage_Not_Exit: '采购入库仓库不存在',\n Purchase_In_Stock_Space_Not_Exit: '采购入库仓位不存在',\n },\n en: {\n System_Error: 'System Error.',\n Service_Unavailable: 'System service is suspended.',\n Remote_Service_Error: 'Remote connection error.',\n IP_Limit: 'IP limit cannot request this resource.',\n Illegal_Request: 'Illegal request.',\n Token_Missing: 'The source (token) parameter is missing.',\n Unsupport_Mediatype: 'Unsupported MediaType.',\n Param_Error:\n 'Parameter error, the content of the data or the number of codes you returned does not meet the specifications.',\n System_Busy: 'System overload.',\n Job_Expired: 'Execution timed out.',\n RPC_Error: 'RPC error.',\n Partial_Data_Error: 'Partial data error.',\n Time_Out: 'Connection timed out.',\n Mail_Failed: 'The mailing function is abnormal.',\n Decode_Failed: 'Decryption function is abnormal.',\n WeChat_GetOpenID_Error: 'WeChat get OpenID function abnormal.',\n SDK_Unsupport_Function: 'SDK unsupport function.',\n API_Internet_Error: 'Failed to connect to other API.',\n SMS_Failed:\n 'SMS sending is abnormal. Please check whether the country code and phone number are entered correctly.',\n Insert_Problem_Type_Wrong: 'Insert Error. The parameter type is incorrect.',\n Insert_Problem_KeyColumn_Exist: 'The same primary key column already exists.',\n Update_Problem_Type_Wrong: 'Update Error. The parameter type is incorrect.',\n Update_Problem_KeyColumn_Miss: 'Missing primary key.',\n Select_Problem_No_Data: 'Check no data.',\n Update_Error: 'Update error.',\n Insert_Error: 'Insert failed.',\n Upsert_Error: 'Update insert failed.',\n Delete_Error: 'Delete failed.',\n DBRelated_Error: 'DB Related Error.',\n Password_Wrong: 'Password Wrong.',\n No_Right_to_Access: 'Insufficient permissions.',\n UserID_UnExist: 'Account does not exist.',\n Account_Quit: 'Account is disabled.',\n Verify_Fail: 'Verification error.',\n ProcessOrder_Duplicate: 'The process sub-work order is repeated',\n ID_SameAs_Password: 'Account is equivalent to password.',\n Auth_Error: 'Account authentication error.',\n Machine_Number_Limit: 'Machine authorized number limit.',\n Token_Expired: 'Login time limit expired, please refresh or resubmit the form.',\n Password_Need_Change: 'The password must be changed (when the password is forgotten).',\n Cookie_Error: 'Cookie verification error. Your login time limit may have expired, please login again.',\n WeChat_First_Login: 'WeChat first login.',\n Token_Verify_Fail: 'Token verification failed.',\n Option_Right_Invalid: 'Insufficient Option right.',\n No_Right_to_Access_CNC: 'No right to access CNC.',\n Mail_Verify_Fail: 'The mail has not been verified.',\n No_Right_to_Access_Equipment: 'Insufficient permission to other devices.',\n Equipment_Name_Duplicate: 'Other equipment names are duplicated.',\n Software_Serial_Number_Valid:\n 'The software serial number is illegal, the serial number used for direct networking cannot be used to use the SMB software serial number related API.',\n Input_Type_Wrong: 'The parameter type is incorrect.',\n File_Not_Exist: 'File does not exist.',\n File_Using_Conflict: 'File usage conflict.',\n File_Not_ExistInRequest: 'File does not exist in the parameter.',\n File_Upload_Number_Limit: 'File upload number problem.',\n Oss_Upload_Fail: 'Upload to OSS failed.',\n File_Size_Exceeded: 'Single file size exceeds the upper limit.',\n Folder_Size_Exceeded: 'The file size of a single folder exceeds the upper limit.',\n File_Extension_Invalid: 'Illegal extension.',\n File_Delete_Fail: 'Failed to delete file.',\n File_Related_Error: 'File related error.',\n File_InUse_Error: 'File is in use.',\n Folder_Not_Exist: 'Folder does not exist.',\n Folder_InUse_Error: 'Folder is in use.',\n Folder_Error: 'Generic folder error message.',\n Partial_File_Fail: 'Partial file failed.',\n OSS_Error: 'OSS general error.',\n Connect_Broker_Failed: 'Failed to connect to Broker.',\n Subscribe_Topic_Failed: 'Subscription to topic failed.',\n Publish_Topic_Failed: 'Publish topic failed.',\n Duplicate_Subscribe_Topic: 'Duplicate subscription topic.',\n Not_Subscribe_Topic_Yet: 'Not yet subscribed to this topic.',\n Unsubscribe_Topic_Failed: 'Unsubscribe topic failed.',\n DisConnect_Broker_Failed: 'Broker failed to disconnect.',\n CNC_MQTT_Error: 'General controller MQTT related error.',\n CNC_Offline: 'Controller is offline.',\n CNC_Busy: 'The controller is busy.',\n CNC_Busy_MQTT: 'The controller is busy due to MQTT instructions.',\n SMB_MQTT_Error: 'General SMB MQTT related errors.',\n SMB_Offline: 'SMB offline.',\n SMB_Busy: 'SMB is busy.',\n SMB_Busy_MQTT: 'SMB is busy because of MQTT.',\n Client_Already_Connect: 'A client with the same information is already connected',\n CNC_Error: 'controller general error code.',\n CNC_Not_Regist: 'The controller has not been registered.',\n CNC_Already_Decode: 'The check code corresponding to this controller has been successfully decrypted.',\n CNC_Already_Bind_SynFactory: 'The controller has been registered and bound to other user.',\n CNC_Name_Duplicate: 'The controller name of the end user is duplicated.',\n CNC_Connection_Full: 'The number of connections for the end user has reached the upper limit.',\n CNC_Not_Binding: 'The controller is not bound by any terminal.',\n CNC_Disk_Not_Enough: 'Not enough CNC disk',\n CNC_Dispatch_Type: 'The CNC dispatch type problem (for example: the parameter is incorrect)',\n CNC_Busy_FileRelated: 'The CNC is busy with file related matters',\n Robot_CNC_Direct_Dispatch_Deny: 'Robot CNC is not allowed to receive dispatches',\n CNC_Busy_LogBackup: 'The controller is busy with log backup related matters',\n CNC_Disconnected: 'The controller is offline, unable to shake hands',\n CNC_Invalid_BindingType:\n 'The controller binding type is not applicable, such as some functions can only be used by directly connected machines',\n CNC_Busy_ReportWorkRelated: 'The controller is busy and cannot modify the reporting method',\n CNC_Invalid_Brand:\n 'The controller brand is not applicable, such as some functions can only be used by the new generation brand',\n CNC_Check_Connection: 'Invalid controller or connection problem',\n Decode_Error: 'Serial number or check code input error.',\n Decode_Illegal:\n 'This check code or decryption behavior is abnormal, please contact the new generation for further confirmation.',\n Subaccount_Auth_Illegal: 'You do not have permission, please contact your machine factory manager.',\n VerifyCode_Illegal: 'Check code exception.',\n SN_Not_Found: 'No such serial number found in the database.',\n Decode_DataBase_Action_Error:\n 'Decode database operation error, please contact New Generation for further confirmation.',\n Remote_Decode_Error: 'Remote decryption failed.',\n CNCType_Model_Not_Found: 'Check without controller model or controller type.',\n Wechat_Error: 'Wechat error.',\n SubAccount_Multi_Wechat_Bind: 'There are multiple WeChat bindings for sub-accounts.',\n MotherAccount_Multi_Wechat_Bind: 'The parent account has multiple groups for WeChat binding.',\n Production_Plan_Error: 'Production plan management error.',\n Production_Order_Duplicate: 'Production order number duplicate.',\n Order_Duplicate: 'Order duplicate or inconsistent order Number information.',\n InValid_WorkOrderID:\n 'The sub production order number is invalid. (It does not belong to the account or does not exist)',\n InValid_CNC_ID: 'Invalid CNC ID (It may not belong to the account or does not exist at all)',\n InValid_ExceptedStartTime_Parameter: 'The start time of the production order number is incorrect',\n Out_Of_Number: 'The number system found that the available numbers in the specification are used up',\n Production_Order_Not_Same_Order:\n 'Production order number already exists, corresponding to a different order number error.',\n Work_Order_Inconsistency:\n 'The sub-work order already exists, the machine ID and process are the same, but other fields (such as the number of required workpieces) are different',\n PLM_Data_Inconsistent: 'Inconsistent with the PLM data',\n Work_Order_Comes_From_OT: 'The source of the sub-work order is the error code of OT',\n InValid_ProductionOrderID: 'The work order ID is invalid (does not belong to the user or does not exist)',\n PLM_CraftPath_Info_Inconsistent: 'Inconsistent with the craft path information of the craft package',\n PLM_ProdctionProcess_Info_Inconsistent: 'Inconsistent with the process information of the process package',\n PLM_Machine_Info_Inconsistent: 'Inconsistent with the machine information of the craft package',\n InValid_Shift_ID: 'Invalid shift ID',\n InValid_Emp_ID: 'Invalid employee ID',\n Part_Serial_Number_In_Use: 'The serial number has been used',\n Part_Serial_Number_Process_Lock: 'Someone is accessing the serial number',\n Serial_Number_Count_Setting_Conflict: 'Number of SN to be taken does not match the setting',\n Insufficient_Number: 'Insufficient number of remaining numbers',\n Work_Order_Status_Error: 'Work order status error',\n Part_Serial_Number_Length_Limit: 'The length of the serial number is too long',\n Duplicate_SN_List: 'The serial number in the list number is repeated',\n Work_Order_Duplicate_Start: 'The sub-work order starts repeatedly within one minute',\n Work_Order_Start_Fail: 'Failed to start sub-work order',\n Work_Order_Suspend_Fail: 'The sub-work order suspend processing failed',\n Work_Order_Close_Fail_But_Suspend_Success:\n 'Failed to close the sub-work order, but suspend processing successfully',\n Work_Order_Part_Count_Not_Fulfill:\n 'The sub-work order partCountRequired has not been completed and cannot be completed',\n Work_Order_Start_Switch_Fail: 'Failed to change the order when the sub-work order started',\n Duplicate_Production_Order_List: 'Duplicate work orders in the list',\n Work_order_Can_not_Direct_Start_work: 'The sub-work order cannot start directly',\n Unbind_Part_Serial_Number_When_Start_work: 'The work order in processing cannot be unbind',\n InValid_Part_Serial_Number: 'Invalid serial number',\n Machine_Send_File_When_Start_Work: 'The machine is in the process of starting work, unable to start work',\n Serial_Number_Bind_Different_Part_Number: 'The serial number is bound to a different part number',\n Need_Part_Serial_Number_Export_Time:\n 'The serial number of the export time already exists, and the export time of the serial number is required after the update',\n Shift_Error: 'Shift error',\n Employee_Error: 'Employee error',\n Shift_Pattern_Not_Exist: 'Shift pattern does not exist',\n Same_Pattern_System_Exist: 'The shift with the same shift pattern already exists',\n Pattern_Shift_Number_Conflict: 'The number of shifts does not match the shift pattern',\n Shift_Time_Overlap: 'Shift time overlap',\n Shift_Time_Sum_Exceed: 'The shift time interval exceeds the upper limit (one day)',\n Shift_Start_End_Time_Conflict: 'The shift start time is greater than or equal to the end time',\n Shift_System_Not_Exist: 'The actual shift system does not exist',\n Shift_ID_Shift_System_Conflict: 'This shift name does not belong to this actual shift',\n Duplicate_Dept: 'Duplicate department name',\n Success: 'Success',\n Work_Report_Review_Error: 'Review failed',\n Wrong_Work_Quantity: 'The number of work reports is incorrect, and the quantity is stuck',\n Field_Count_Max: 'Too many custom fields',\n Field_Name_Repeat: 'Duplicate custom field names',\n Break_Time_Out_Of_Range: 'This break time beyond the shift interval',\n FileDispatch_Error: 'File delivery general error code',\n TakeEvent_ID_Error: 'Error taking event code',\n Service_Original_Connect_Error: 'Error in connecting native SynFactory API',\n IsProxyCheck_Error: 'An error occurred while confirming whether it is a proxy',\n IsCNCIdentityValid_Check_Error:\n 'An error occurred while confirming whether the CNC certification information is correct',\n CanSNAccessEquipment_Check_Error:\n 'An error occurred while confirming whether the software serial number can use the device',\n SNCanNotAccessEquipment: 'This serial number cannot use this device',\n GetTriggerHistory_Error: 'An error occurred while calling the API to get the dispatch record',\n Duplicate_Setting_Data: 'Duplicate default path settings',\n Setting_Number_Limit_Exceed: 'The number of default path settings has reached the setting upper limit',\n None_Data_Delete: 'No data was deleted',\n Material_Error: 'Material general error code',\n MaterialPartNumber_Invalid: 'The material number is illegal',\n MaterialPartNumber_Duplicated: 'Duplicate material number',\n MaterialType_Duplicated: 'Duplicated material type',\n MaterialPartNumber_Not_Found: 'The material number does not exist',\n MaterialBOM_Exist: 'Material BOM already exists',\n MaterialBOM_Child_Relation_Invalid: 'Illegal material BOM child item',\n MaterialBOM_RelationShip_Invalid:\n 'There cannot be any other BOM table with an opposite relationship between parent and child materials',\n MaterialBOM_Self_Contained: 'Parent and child materials cannot be the same',\n MaterialBOM_Not_Exist: 'Material BOM table does not exist',\n MaterialBOM_Bulk_Insert_Exceed: 'Exceeded batch import quantity',\n MaterialBOM_Version_Not_Exist: 'The material number BOM version does not exist',\n Material_Sync_To_PDM_Fail: 'Failed to synchronize material number to PDM',\n Material_Do_Not_Have_BatchNumber_Setting: 'The material number does not have a batch number setting',\n MaterialPartNumber_Status_Disable: 'Material number status disabled',\n Response_Fomat_Error: 'Incorrect format',\n Equipmnet_Craft_Bind_Error: 'Equipment craft binding error',\n Template_Format_Error: 'Tool template format error',\n Craft_NO_ToolLIfeTemplate: 'There is no tool life data for the corresponding process of this equipment',\n Tool_Axis_Error: 'System (axis group) error',\n Specification_Update_Error: 'Specification update error',\n Equip_Monitor_Setting_Name_Existed: 'Monitoring setting name already exists',\n Equip_In_Monitor_Setting_Has_Existed_In_Same_Indicator_And_Immediate_Noti:\n 'The device has set up real-time notification under this monitoring indicator',\n Equip_ID_Not_Exist: 'Device ID does not exist',\n Equip_Monitor_Setting_ID_Not_Existed: 'Monitoring setting ID does not exist',\n CVUS_Error: 'General custom variable system error',\n CVUS_Setting_Not_Exist: 'Custom variable setting does not exist',\n CVUS_Parameter_Validation_Fail: 'CVUS general parameter validation failed',\n CVUS_SETTING_COUNT_LIMIT: 'CVUS setting limit reached',\n CVUS_VARTYPE_LENGTH_LIMIT: 'The vartype parameter exceeds the length limit',\n CVUS_Map_Diff_Set_Result: 'Different setting results',\n CVUS_Map_Error_Busy: 'The device is busy and cannot be set',\n CVUS_Map_When_Get_Setting: 'An error occurred when getting the setting',\n CVUS_Map_Unsup_Var: 'Unsupported variable',\n CVUS_Map_Var_Addr: 'Unsupported variable pointer',\n CVUS_Map_Unsup_Var_Tp: 'Unsupported variable type',\n CVUS_Map_Unsup_Freq: 'Unsupported upload frequency',\n CVUS_EventID_Not_Exist: 'The dispatch event does not exist',\n CVM_Parameter_Validation_Fail: 'Custom variable modification parameter validation failed',\n CVM_SETTING_COUNT_LIMIT: 'The upper limit of the number of CVM settings has been reached',\n CVM_VARTYPE_LENGTH_LIMIT: 'CVM vartype parameter exceeds length limit',\n CVM_Take_Event_ID: 'The CVM service got a delivery ID error',\n CVM_Different_Result: 'CVM has different modification results',\n CVM_Busy_Var_Modifying: 'CVM execution failed, busy, changing variable value',\n CVM_Error_DataType_Trans_Error: 'CVM execution failed, data type transformation failed',\n CVM_Error_Unsupport_VarType: 'CVM execution failed, unsupported variable type',\n CVM_Error_Wrong_Var_Address: 'CVM execution failed, the variable address is invalid',\n CVM_Error_Unsupport_DataType: 'CVM execution failed, unsupported type code',\n CVUS_Error_GroupSub_NotExist:\n 'The group-related information does not exist, it may be that the device ID does not exist, it may be that the device name or ID does not exist',\n CVUS_Equip_Not_Support: 'The device does not support the group subscription function',\n CVUS_Error_DataType_Inconsistent: 'Data type is inconsistent',\n CVUS_Error_Unsupport_DataType: 'Unsupported data type',\n CVUS_PLC_Setting_Count_Limit: 'PLC device reaches the setting upper limit',\n Part_Serial_Number_Error: 'General error of material serial number',\n Part_Serial_Number_Already_Bind_Part_Number:\n 'The serial number of the material has been bound to the material number',\n Part_Serial_Number_Not_Found: 'The part serial number cannot be found',\n Part_Serial_Number_Do_Not_Bind_Part_Number: 'The material part serial number does not have a bound material number',\n Operation_Uuid_Already_Bind_Other_Part_Number: 'This operation record has been bound to other material numbers',\n Custom_Parameter_Already_Used_By_Part_Serial_Number_Setting:\n 'The serial number custom parameter has been used by the serial number setting',\n Serial_Number_Rule_Setting_Name_Duplicate: 'The name of the serial number rule setting is duplicated',\n Serial_Number_Interval_Setting_Error: 'Serial number interval setting error',\n Machine_Type_Exit_Error: 'Machine type already exists',\n Cnc_Already_Bound: 'Controller is bound',\n Batch_Number_Error: 'Batch number error.',\n Batch_Number_Setting_Name_Duplicate: 'Duplicate batch number setting name.',\n Batch_Number_Setting_ID_Not_Exist: 'The batch number setting ID does not exist.',\n Batch_Number_Setting_Not_Enable: 'Batch number setting is not enabled.',\n Batch_Number_Insufficient: 'Insufficient batch number.',\n Batch_Number_Already_Bind_Other_Production_Order: 'The batch number has been bound to other work orders.',\n Illegal_Batch_Number: 'Illegal batch number',\n Batch_Number_Setting_Exceed_Max_Digit: 'The batch number setting exceeds the maximum number of digits.',\n Message_Push_Error: 'Push service general error',\n Message_Push_Server_Not_Initialized:\n 'The push service has not yet initialized the connection settings with the server',\n Message_Push_Mobile_Message_Excced: 'The push service mobile phone reminder message has reached the upper limit',\n Message_Push_Server_Connect_Fail: 'The connection between push service and push server failed',\n Message_Push_Emp_Not_Bind_APP:\n 'The person to whom the push service wants to send messages has not been bound to the APP',\n Message_Push_Message_Setting_Not_Initialized:\n 'The push service mobile phone reminder message setting has not been initialized and activated',\n Tag_Over_Count: 'Exceeding the number of tags that can be bound to the work order',\n Data_Not_Exists: 'Data does not exist',\n Encoding_Exceeds_Upper_Limit:\n 'The coding will exceed the upper limit set by the system. Please go to the numbering rule setting in the factory modeling',\n No_Beat_Point: 'Please first go to the factory to model the product process and set the beat point for this path',\n Last_Process: 'The last process cannot be deleted',\n MaterialUnit_Not_Exist: 'Unit does not exist',\n Production_Order_Not_In_NotDispatch: 'Non-assigned work orders cannot be deleted',\n Production_Order_Has_Source_Document_Association: 'The production order has a source order association',\n Production_Order_Tag_Number_Released: 'Production Work Order Issued Label',\n Out_Storage_Not_Exit: 'The outbound storage does not exist',\n Out_Stock_Space_Not_Exit: 'Outbound storage location does not exist',\n In_Storage_Not_Exit: 'The storage warehouse does not exist',\n In_Stock_Space_Not_Exit: 'The inbound storage location does not exist',\n Def_In_Storage_Not_Exit: 'The defective product storage warehouse does not exist',\n Def_In_Stock_Space_Not_Exit: 'The defective product storage warehouse does not exist',\n Purchase_In_Storage_Not_Exit: 'The purchase inbound warehouse does not exist',\n Purchase_In_Stock_Space_Not_Exit: 'The purchase inbound storage location does not exist',\n },\n};\n","import { createI18n } from 'vue-i18n';\n\n// 导入 element-plus 的国际化文件\nimport elementZhCn from 'element-plus/es/locale/lang/zh-cn';\nimport elementEn from 'element-plus/es/locale/lang/en';\nimport elementZhTw from 'element-plus/es/locale/lang/zh-tw';\n\nimport zhCnFiles from '../i18n/lang/zh-cn.json';\nimport enUsFiles from '../i18n/lang/en-us.json';\nimport zhTwFiles from '../i18n/lang/zh-tw.json';\nimport errorCodeTranslate from '../i18n/lang/errorCodeTranslate.mjs';\n\nconst messages = {\n 'zh-cn': {\n ...zhCnFiles,\n ...errorCodeTranslate['zh-cn'],\n el: elementZhCn,\n },\n 'zh-tw': {\n ...zhTwFiles,\n ...errorCodeTranslate['zh-tw'],\n el: elementZhTw,\n },\n 'en': {\n ...enUsFiles,\n ...errorCodeTranslate['en'],\n el: elementEn,\n },\n};\n\nconst i18n = createI18n({\n locale: localStorage.getItem('lang') || 'zh-cn',\n fallbackLocale: 'zh-cn',\n silentTranslationWarn: true,\n missingWarn: false,\n silentFallbackWarn: true,\n fallbackWarn: false,\n messages,\n});\n\n// 创建 i18n 实例并导出\nexport default i18n;\n","<template>\n <el-dropdown\n size=\"default\"\n type=\"primary\"\n :hide-on-click=\"false\"\n trigger=\"click\"\n style=\"margin-left: 15px\"\n :disabled=\"disabled\"\n data-test-id=\"EL-DROPDOWN-eo8M84\"\n >\n <el-button type=\"primary\" color=\"#125088\" :disabled=\"disabled\" data-test-id=\"EL-BUTTON-WQugCA\">\n {{ t('columnConfiguration') }}\n <el-icon class=\"el-icon--right\" data-test-id=\"EL-ICON-9BpySy\">\n <arrow-down data-test-id=\"ARROW-DOWN-iXQ8EA\" />\n </el-icon>\n </el-button>\n <template #dropdown>\n <!-- filter 禁止拖拽 -->\n <div style=\"display: flex\" data-test-id=\"DIV-ksWjQV\">\n <div data-test-id=\"DIV-0Bp9xN\">\n <el-space v-if=\"parentLabel\" direction=\"vertical\" data-test-id=\"EL-SPACE-SwiJNQ\">\n <el-text tag=\"b\" data-test-id=\"EL-TEXT-PtuT6g\">{{ parentLabel }}</el-text>\n </el-space>\n <!-- 父表头 -->\n <el-dropdown-menu style=\"max-height: 400px\" data-test-id=\"EL-DROPDOWN-MENU-P9MKSO\">\n <VueDraggable\n ref=\"el\"\n v-model=\"parentDraggableItems\"\n :handle=\"handle\"\n filter=\".disabled-color\"\n data-test-id=\"VUEDRAGGABLE-XbqWos\"\n @end=\"parentSaveData\"\n @move=\"(evt) => onDragMove(evt, parentDraggableItems)\"\n >\n <el-dropdown-item\n v-for=\"item in parentDraggableItems\"\n :key=\"item.value\"\n :command=\"item\"\n data-test-id=\"EL-DROPDOWN-ITEM-qhw6G6\"\n >\n <v-icon\n :class=\"['mdi mdi-drag dragindicator', dynamicClasses(item)]\"\n style=\"margin-right: 10px\"\n data-test-id=\"V-ICON-4nKZUW\"\n />\n <el-checkbox\n v-if=\"isParentCheckbox\"\n v-model=\"item.isShown\"\n :label=\"item.customizeFields ? item.text : $t(item.text)\"\n size=\"large\"\n :disabled=\"item.disabled\"\n data-test-id=\"EL-CHECKBOX-7VXhXa\"\n @change=\"parentSaveData(item)\"\n />\n <span v-else :class=\"dynamicClasses(item)\" style=\"margin-right: 10px\" data-test-id=\"SPAN-VpmSwI\">{{\n item.customizeFields ? item.text : $t(item.text)\n }}</span>\n <v-icon\n v-if=\"!item.freeze\"\n class=\"mdi mdi-lock-open-variant\"\n style=\"margin-left: 10px\"\n data-test-id=\"V-ICON-gfsrPv\"\n @click=\"isFrozen(item, parentDraggableItems, 'parentSaveData')\"\n />\n <v-icon\n v-if=\"item.freeze\"\n class=\"mdi mdi-lock\"\n style=\"margin-left: 10px\"\n data-test-id=\"V-ICON-bfzpiZ\"\n @click=\"isFrozen(item, parentDraggableItems, 'parentSaveData')\"\n />\n </el-dropdown-item>\n </VueDraggable>\n </el-dropdown-menu>\n </div>\n <div v-if=\"isChild\" data-test-id=\"DIV-FUfjAE\">\n <el-space v-if=\"childLabel\" direction=\"vertical\" data-test-id=\"EL-SPACE-tJl63c\">\n <el-text tag=\"b\" data-test-id=\"EL-TEXT-BqEDSr\">{{ childLabel }}</el-text>\n </el-space>\n <!-- 子表头 -->\n <el-dropdown-menu style=\"max-height: 400px\" data-test-id=\"EL-DROPDOWN-MENU-PAz7a2\">\n <VueDraggable\n ref=\"el\"\n v-model=\"childDraggableItems\"\n :handle=\"handle\"\n filter=\".disabled-color\"\n data-test-id=\"VUEDRAGGABLE-QgDzSV\"\n @end=\"childSaveData\"\n @move=\"(evt) => onDragMove(evt, childDraggableItems)\"\n >\n <el-dropdown-item\n v-for=\"item in childDraggableItems\"\n :key=\"item.value\"\n :command=\"item\"\n data-test-id=\"EL-DROPDOWN-ITEM-LBKFI2\"\n >\n <v-icon\n :class=\"['mdi mdi-drag dragindicator', dynamicClasses(item)]\"\n style=\"margin-right: 10px\"\n data-test-id=\"V-ICON-8xH3OY\"\n />\n <el-checkbox\n v-if=\"isChildCheckbox\"\n v-model=\"item.isShown\"\n :label=\"item.customizeFields ? item.text : $t(item.text)\"\n size=\"large\"\n :disabled=\"item.disabled\"\n data-test-id=\"EL-CHECKBOX-EMAn7J\"\n @change=\"childSaveData(item)\"\n />\n <span v-else :class=\"dynamicClasses(item)\" style=\"margin-right: 10px\" data-test-id=\"SPAN-DCpyQn\">{{\n item.customizeFields ? item.text : $t(item.text)\n }}</span>\n <v-icon\n v-if=\"!item.freeze\"\n class=\"mdi mdi-lock-open-variant\"\n style=\"margin-left: 10px\"\n data-test-id=\"V-ICON-BJQDvq\"\n @click=\"isFrozen(item, childDraggableItems, 'childSaveData')\"\n />\n <v-icon\n v-if=\"item.freeze\"\n class=\"mdi mdi-lock\"\n style=\"margin-left: 10px\"\n data-test-id=\"V-ICON-fcAGHD\"\n @click=\"isFrozen(item, childDraggableItems, 'childSaveData')\"\n />\n </el-dropdown-item>\n </VueDraggable>\n </el-dropdown-menu>\n </div>\n </div>\n </template>\n </el-dropdown>\n</template>\n\n<script setup>\nimport { ref, watch } from 'vue';\nimport { VueDraggable } from 'vue-draggable-plus';\nimport { useI18n } from 'vue-i18n';\nimport { ElMessage } from 'element-plus';\nconst { t } = useI18n();\nconst props = defineProps({\n disabled: Boolean, // 是否禁用列配置按钮\n parentItems: Array, // 父表头数据\n isParentCheckbox: Boolean, // 父表头是否显示复选框\n parentLabel: String, // 父表头名称\n childLabel: String, // 子表头名称\n childItems: Array, // 子表头数据\n isChildCheckbox: Boolean, // 子表头是否显示复选框\n isChild: Boolean, // 是否子表头列配置\n});\nconst emit = defineEmits(['parentSaveData', 'childSaveData']);\nconst parentDraggableItems = ref([]);\nconst childDraggableItems = ref([]);\nconst handle = ref('.dragindicator');\nwatch(\n () => props,\n () => {\n parentDraggableItems.value = props.parentItems;\n childDraggableItems.value = props.childItems;\n },\n {\n immediate: true,\n deep: true,\n },\n);\nfunction parentSaveData(val) {\n const count = parentDraggableItems.value.filter((item) => item.isShown === true).length;\n if (count < 6 && !val.isShown) {\n val.isShown = true;\n ElMessage.error(t('theMinimumColumns6'));\n return;\n }\n emit('parentSaveData', parentDraggableItems.value);\n}\nfunction childSaveData(val) {\n const count = childDraggableItems.value.filter((item) => item.isShown === true).length;\n if (count < 6 && !val.isShown) {\n val.isShown = true;\n ElMessage.error(t('theMinimumColumns6'));\n return;\n }\n emit('childSaveData', childDraggableItems.value);\n}\nfunction isFrozen(item, data, event) {\n const frozenCount = data.filter((item) => item.freeze === true).length;\n\n if (item.freeze) {\n // 取消冻结逻辑\n item.freeze = false;\n item.isFixed = false;\n // 将取消冻结的栏位移动到未冻结栏位的第一位\n const currentIndex = data.indexOf(item);\n if (currentIndex !== -1) {\n const [removed] = data.splice(currentIndex, 1);\n const firstNonFrozenIndex = data.findIndex((i) => !i.freeze);\n if (firstNonFrozenIndex !== -1) {\n data.splice(firstNonFrozenIndex, 0, removed);\n } else {\n data.push(removed); // 如果没有未冻结栏位,则放到最后\n }\n }\n } else {\n // 冻结逻辑\n if (frozenCount >= 4) {\n ElMessage.error(t('upTo4ColumnsFrozen'));\n return;\n }\n item.freeze = true;\n item.isFixed = true;\n\n // 将冻结的栏位移动到最后一个冻结栏位之后\n const currentIndex = data.indexOf(item);\n if (currentIndex !== -1) {\n const [removed] = data.splice(currentIndex, 1);\n const lastFrozenIndex = data.findLastIndex((i) => i.freeze);\n if (lastFrozenIndex !== -1) {\n data.splice(lastFrozenIndex + 1, 0, removed);\n } else {\n data.unshift(removed); // 如果没有冻结栏位,则放到最前面\n }\n }\n }\n // 触发保存事件\n emit(event, data);\n}\nfunction dynamicClasses(item) {\n return item.freeze ? 'disabled-color' : '';\n}\n// 禁止未冻结列拖动到冻结列的上方或中间\nfunction onDragMove(evt, val) {\n // 获取拖拽项的索引\n const draggedIndex = Array.from(evt.from.children).indexOf(evt.dragged);\n const draggedItem = val[draggedIndex];\n\n // 获取目标项的索引\n let relatedIndex = Array.from(evt.to.children).indexOf(evt.related);\n // willInsertAfter 为 true 时,目标索引要+1\n if (evt.willInsertAfter && relatedIndex !== -1) {\n relatedIndex += 1;\n }\n // 如果 related 为空,说明拖到最后\n if (evt.related == null) {\n relatedIndex = val.length;\n }\n\n const frozenCount = val.filter((item) => item.freeze).length;\n\n // 未冻结列不能拖到冻结区(前frozenCount个)内部或前面\n if (!draggedItem.freeze && relatedIndex < frozenCount) {\n return false;\n }\n // 冻结列只能在冻结区内移动\n if (draggedItem.freeze && relatedIndex >= frozenCount) {\n return false;\n }\n return true;\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.disabled-color {\n color: #ccc !important;\n cursor: not-allowed !important;\n}\n:deep(.el-space--vertical) {\n padding: 5px 0 0 16px;\n position: relative;\n top: 5px;\n z-index: 9999;\n}\n</style>\n","<template>\n <el-dialog\n v-model=\"showDialog\"\n class=\"global-dialog\"\n :width=\"`${width}rem`\"\n center\n align-center\n :close-on-click-modal=\"false\"\n :close-on-press-escape=\"false\"\n :modal-append-to-body=\"true\"\n :append-to-body=\"true\"\n @close=\"close\"\n >\n <div\n :class=\"className || 'dialog-container'\"\n :style=\"`max-height: calc(${dialogContainerVHHeightName}vh - 30px); overflow-y: auto`\"\n >\n <slot></slot>\n </div>\n <template #header>\n <slot name=\"header\">{{ title }}</slot>\n </template>\n <div class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </el-dialog>\n</template>\n\n<script setup>\nimport { defineProps, watch, ref } from 'vue';\nconst emit = defineEmits(['close']);\nconst props = defineProps({\n title: String,\n value: Boolean,\n width: {\n type: Number,\n default: 50,\n },\n className: String,\n dialogContainerVHHeightName: {\n type: Number,\n default: 60,\n },\n});\nconst showDialog = ref(false);\nwatch(\n () => props.value,\n (val) => {\n showDialog.value = val;\n },\n);\nfunction close() {\n emit('close');\n}\n</script>\n\n<style scoped>\n.dialog-footer {\n text-align: center;\n margin: 0 auto;\n margin-top: 1rem;\n}\n\n/**修改全局的滚动条*/\n/**滚动条的宽度*/\n::-webkit-scrollbar {\n width: 8px;\n}\n::-webkit-scrollbar-thumb {\n background-color: #eaecf1;\n border-radius: 3px;\n}\n/*表格*/\n.el-table__body-wrapper::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n}\n.el-table__body-wrapper::-webkit-scrollbar-thumb {\n background-color: #a1a3a9;\n border-radius: 3px;\n}\n:deep(.el-card__body) {\n padding-bottom: 0px;\n}\n</style>\n","const BUILD_TYPE = process.env.NODE_ENV;\n\nfunction serviceRoute(productionRoute, devRoute = '') {\n let localDevRoute = devRoute;\n if (localDevRoute.length === 0) {\n localDevRoute = productionRoute;\n }\n let originPath = '';\n if (BUILD_TYPE === 'production') {\n // 放上研發測試環境或是整合測試環境(連自己同源的API)\n const { protocol } = window.location;\n const { hostname } = window.location;\n const { port } = window.location;\n originPath = `${protocol}//${hostname}:${port}/${productionRoute}`;\n } else if (BUILD_TYPE === 'development') {\n // 在本地端開發連研發測試環境(讓devServer代理到API專案)\n originPath = `/${localDevRoute}`;\n }\n\n return originPath;\n}\n\nexport default serviceRoute;\n","import axios from 'axios';\nimport serviceRoute from './serviceRoute';\n\nconst originPath = serviceRoute(\n\t'PrivateCloudCore/API/V1',\n\t'PrivateCloudCoreApi_SynComponent/PrivateCloudCore/API/V1',\n);\n\nconst getBaseApi = axios.create({\n\tbaseURL: originPath,\n});\n\nexport default getBaseApi;\n","import coreApiList from '@/configFiles/apiFile/coreApiList.json';\nimport getCoreBaseApi from '../apiConfig/privateCloudCoreApis';\n\nexport default {\n refreshToken(data) {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n token: 'store.state.login.token',\n },\n };\n const returnObject = getCoreBaseApi.post(coreApiList.refreshToken, data, config);\n return returnObject;\n },\n logins(data) {\n return getCoreBaseApi.post(coreApiList.logins, data);\n },\n logout() {\n localStorage.removeItem('synFactoryUserID');\n localStorage.removeItem('synFactoryUserName');\n localStorage.removeItem('synFactoryPermission');\n localStorage.removeItem('synFactoryEmpID');\n const returnObject = getCoreBaseApi.get(coreApiList.logout);\n return returnObject;\n },\n //获取全部人员接口\n getEmployeeList(params) {\n return getCoreBaseApi.post(coreApiList.employeeList, params);\n },\n QueryMyPermission(params) {\n return getCoreBaseApi.get(coreApiList.QueryMyPermission, {\n params,\n });\n },\n // 查询分页配置API\n queryPageSetting(data) {\n return getCoreBaseApi.get(\n `${coreApiList.queryPageSetting}?permissionCode=${data.permissionCode}&pageType=${data.pageType}`,\n );\n },\n // 更新分页配置API\n updatePageSetting(data) {\n return getCoreBaseApi.post(coreApiList.updatePageSetting, data);\n },\n queryDeptAssigneeInfoList(data) {\n return getCoreBaseApi.post(coreApiList.queryDeptAssigneeInfoList, data);\n },\n //查询视图只读列表\n getViewOnlyReadList(data) {\n return getCoreBaseApi.post(coreApiList.getViewOnlyReadList, data);\n },\n //获取视图操作记录\n getViewOpLogList(data) {\n return getCoreBaseApi.post(coreApiList.getViewLogList, data);\n },\n //获取视图操作人员列表\n getViewEmployeeList(data) {\n return getCoreBaseApi.post(coreApiList.getViewOptEmployeeList, data);\n },\n \n //获取视图列表\n getViewList(data) {\n return getCoreBaseApi.post(coreApiList.getViewList, data);\n },\n //新增视图\n addView(data) {\n return getCoreBaseApi.post(coreApiList.addView, data);\n },\n //视图名称重复校验\n checkViewName(data) {\n return getCoreBaseApi.post(coreApiList.IsExistViewName, data);\n },\n //编辑视图\n editView(data) {\n return getCoreBaseApi.post(coreApiList.modifyView, data);\n },\n //删除视图\n deleteView(id) {\n return getCoreBaseApi.get(`${coreApiList.deleteView}?id=${id}`);\n },\n //获取视图详情\n getViewDetail(id, type) {\n return getCoreBaseApi.get(`${coreApiList.getViewTabDetail}?id=${id}&isCopy=${type}`);\n },\n //获取筛选字段\n getViewFilterList(data) {\n return getCoreBaseApi.post(coreApiList.getViewFieldList, data);\n },\n //视图排序\n viewSortList(data) {\n return getCoreBaseApi.post(coreApiList.upadateViewOrder, data);\n },\n //获取查阅权限人员列表\n getViewReadEmployeeList(data) {\n return getCoreBaseApi.post(coreApiList.getViewPermissionEmployeeList, data);\n },\n //查询人元列表\n getViewPersionList(data) {\n return getCoreBaseApi.post(coreApiList.getViewpersionList, data);\n },\n};\n","import axios from 'axios';\nimport serviceRoute from './serviceRoute';\n\nconst originPath = serviceRoute('API/V1', 'baseApi_SynComponent/API/V1');\n\nconst getBaseApi = axios.create({\n baseURL: originPath,\n});\n\nexport default getBaseApi;","import baseApi from '../apiConfig/baseApis';\nimport baseApiList from '@/configFiles/apiFile/baseApiList';\n\nexport default {\n // 文件上传\n docCustomUpload(data) {\n const config = {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n };\n return baseApi.post(`${baseApiList.docCustomUpload}/${data.DocCode}/${data.DocCustomId}`, data.file, config);\n },\n // 查询单据自定义栏位\n querySetting(data) {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n },\n };\n return baseApi.post(baseApiList.querySetting, data, config);\n },\n // 单据自定义附件下载\n docDownloadFile(data) {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n },\n responseType: 'blob',\n };\n return baseApi.post(baseApiList.docDownloadFile, data, config);\n },\n // 更新列配置数据(最新版)\n updateColumnSettingNext(data) {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n },\n };\n return baseApi.put(baseApiList.updateColumnSettingNext, data, config);\n },\n // 查询列配置数据(最新版)\n queryColumnSettingNext(data) {\n const config = {\n headers: {\n 'Content-Type': 'application/json',\n },\n };\n return baseApi.post(baseApiList.queryColumnSettingNext, data, config);\n },\n // 新增或更新筛选条件\n insertOrUpdateFilterCondition(data) {\n return baseApi.post(baseApiList.insertOrUpdateFilterCondition, data);\n },\n // 查询筛选条件\n queryFilterCondition(data) {\n return baseApi.post(baseApiList.queryFilterCondition, data);\n },\n // 获取自定义筛选字段内容\n getFieldSetting(permissionCode) {\n return baseApi.get(`${baseApiList.getFieldSetting}?permissionCode=${permissionCode}`);\n },\n};\n","import axios from 'axios';\nimport serviceRoute from './serviceRoute';\n\nconst originPath = serviceRoute('MES/API/V1', 'mesApi_SynComponent/MES/API/V1');\n\nconst getBaseApi = axios.create({\n baseURL: originPath,\n});\n\nexport default getBaseApi;","import mesApiList from '@/configFiles/apiFile/mesApiList.json';\nimport mesApi from '../apiConfig/mesApis';\n\nexport default {\n // 生产工单页查询接口\n planFormulationQuery(data) {\n const returnObject = mesApi.post(mesApiList.planFormulationQuery, data);\n return returnObject;\n },\n // 报工审核查询接口\n GetReviewRecord(data) {\n const returnObject = mesApi.post(mesApiList.GetReviewRecord, data);\n return returnObject;\n },\n};\n","import axios from 'axios';\nimport serviceRoute from './serviceRoute';\n\nconst originPath = serviceRoute('MMS/API/V1', 'mmsApi_SynComponent/MMS/API/V1');\n\nconst getBaseApi = axios.create({\n baseURL: originPath,\n});\n\nexport default getBaseApi;","import mmsApiList from '@/configFiles/apiFile/mmsApiList.json';\nimport mmsApi from '../apiConfig/mmsApis';\n\nexport default {\n // 获取物料类别末级数据\n materialCategoryLastLevel() {\n return mmsApi.get(mmsApiList.materialCategoryLastLevel);\n },\n};\n","import privateCloudCoreApiFunction from './apis/privateCloudCoreApiFunction';\nimport baseApiFun from './apis/baseApiFunction';\nimport mesApiFun from './apis/mesApiFunction';\nimport mmsApiFun from './apis/mmsApiFunction';\n\nexport default {\n ...privateCloudCoreApiFunction,\n ...baseApiFun,\n ...mesApiFun,\n ...mmsApiFun,\n};\n","import errorCode from '@/configFiles/errorCode.json';\nimport apiFunction from './backendApiFunction.js';\nimport { ElMessage } from 'element-plus';\nimport i18n from '@/utils/i18n.js';\n\nconst delay = (times) =>\n\tnew Promise((resolve) => {\n\t\tsetTimeout(() => {\n\t\t\tconst timeAddTime = times + 1;\n\t\t\tresolve(timeAddTime);\n\t\t\treturn timeAddTime;\n\t\t}, 3000);\n\t});\nconst JumpLogin = () => {\n const BUILD_TYPE = process.env.NODE_ENV;\n if (BUILD_TYPE === 'production') {\n // 生产环境\n const { protocol } = window.location;\n const { hostname } = window.location;\n const { port } = window.location;\n window.location.href = `${protocol}//${hostname}:${port}/BASE/login`;\n } else if (BUILD_TYPE === 'development') {\n // 本地研发环境\n window.location.href = '/login';\n }\n};\nconst callRefreshAPI = async (action, prop, times) => {\n\tlet apiResult = {};\n\tawait apiFunction\n\t\t.refreshToken({\n\t\t\taccount: localStorage.synFactoryUserID,\n\t\t})\n\t\t.then(async (response) => {\n\t\t\tswitch (response.data.code) {\n\t\t\t\tcase errorCode.Success: {\n\t\t\t\t\tawait action(...prop)\n\t\t\t\t\t\t.then((res) => {\n\t\t\t\t\t\t\tapiResult = res;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\tapiResult = err;\n\t\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// case errorCode.Token_Expired:\n\t\t\t\t// case errorCode.Cookie_Error:\n\t\t\t\t// case errorCode.Verify_Fail: {\n\t\t\t\t// \tapiFunction\n\t\t\t\t// \t\t.logout()\n\t\t\t\t// \t\t.then(() => {\n\t\t\t\t// \t\t\tJumpLogin();\n\t\t\t\t// \t\t})\n\t\t\t\t// \t\t.catch((err) => {\n\t\t\t\t// \t\t\tconsole.log(err);\n\t\t\t\t// \t\t});\n\t\t\t\t// \tapiResult = {};\n\t\t\t\t// \tbreak;\n\t\t\t\t// }\n\t\t\t\tdefault: {\n\t\t\t\t\tapiFunction\n\t\t\t\t\t\t.logout()\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tJumpLogin();\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t});\n\t\t\t\t\tapiResult = {};\n\t\t\t\t\tElMessage.error('Refresh Token Api Error!');\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.catch(async (err) => {\n\t\t\tapiResult = err;\n\t\t\tconst timeAdd = await delay(times);\n\t\t\tif (timeAdd > 1) {\n\t\t\t\tElMessage.error(i18n.global.t('canNotGetToken'));\n\t\t\t\treturn apiResult;\n\t\t\t}\n\t\t\treturn await callRefreshAPI(action, prop, timeAdd);\n\t\t});\n\treturn apiResult;\n};\n\nconst retryExecute = async (action, parameter, times, shouldAlert) => {\n\ttry {\n\t\tconst result = await action(...parameter);\n\t\tif (result.data.code === errorCode.Verify_Fail || result.data.code === errorCode.Cookie_Error || result.data.code === errorCode.UserID_UnExist) {\n\t\t\tapiFunction\n\t\t\t\t.logout()\n\t\t\t\t.then(() => {\n\t\t\t\t\tJumpLogin();\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.log(err);\n\t\t\t\t});\n\t\t\treturn result;\n\t\t}\n\t\tif (result.data.code === errorCode.Token_Expired) {\n\t\t\treturn await callRefreshAPI(action, parameter, 0);\n\t\t}\n\t\treturn result;\n\t} catch (error) {\n\t\tconst timeAdd = await delay(times);\n\t\tif (timeAdd > 1) {\n\t\t\tif (shouldAlert) {\n\t\t\t\t// ElMessage.error(i18n.global.t('apiError'));\n\t\t\t\treturn error;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\treturn await retryExecute(action, parameter, times + 1, shouldAlert);\n\t}\n};\n\n/**\n *\n * @param {object} apis apiFunction\n * @param {boolean}shouldAlert should alert when error\n * @returns {Object} proxy object\n */\nfunction createApiProxy(apis, shouldAlert = false) {\n\treturn new Proxy(apis, {\n\t\tget(...args) {\n\t\t\tconst allFunction = Reflect.get(...args);\n\t\t\treturn async function thisFun(...param) {\n\t\t\t\treturn retryExecute(allFunction, param, 0, shouldAlert);\n\t\t\t};\n\t\t},\n\t});\n}\n\nconst nonAlertProxy = createApiProxy(apiFunction);\nconst proxyObj = createApiProxy(apiFunction, true);\n\nexport default proxyObj;\nexport { nonAlertProxy };\n","<template>\n <el-pagination\n v-model:current-page=\"pageInfo.page\"\n v-model:page-size=\"pageInfo.size\"\n class=\"pagination-table\"\n :page-sizes=\"[5, 10, 20, 50, 100, 200]\"\n :disabled=\"!total\"\n background\n layout=\"slot, sizes, prev, pager, next, jumper\"\n :total=\"total\"\n :pager-count=\"pagerCount\"\n :data-test-id=\"`${dataTestId}-EL-PAGINATION-fvu9sB`\"\n @size-change=\"handleSizeChange\"\n @current-change=\"handleCurrentChange\"\n >\n <div class=\"slot_style\" :data-test-id=\"`${dataTestId}-DIV-yISBZh`\">\n <span :data-test-id=\"`${dataTestId}-SPAN-lX8Y8q`\">{{ $t('currentCount', { currentSize: currentCount }) }},</span>\n <span v-if=\"hasSelected\" :data-test-id=\"`${dataTestId}-SPAN-BlXSV7`\">\n {{ $t('selectedRecordsNum', { selectedNum: selectedNum }) }},\n </span>\n <span :data-test-id=\"`${dataTestId}-SPAN-qnY4fg`\">{{ $t('allRecordsNum', { total: total }) }}</span>\n </div>\n </el-pagination>\n</template>\n\n<script setup>\nimport { ref, watch, onMounted } from 'vue';\nimport apiFunction from '@/scriptFiles/checkApiErrorMechanism.js';\n\nconst props = defineProps({\n total: {\n type: Number,\n default: 0,\n },\n currentPage: {\n type: Number,\n default: 1,\n },\n pageSize: {\n type: Number,\n default: 20,\n },\n selectedNum: {\n type: Number,\n default: 0,\n },\n hasSelected: {\n type: Boolean,\n default: false,\n },\n currentCount: {\n type: Number,\n default: 0,\n },\n pagerCount: {\n type: Number,\n default: 7,\n },\n dataTestId: {\n // data-test-id\n type: String,\n default: '',\n },\n pageType: {\n type: Number,\n default: 1,\n },\n permissionCode: {\n type: String,\n default: '',\n },\n});\nconst emits = defineEmits(['changePage']);\nconst pageInfo = ref({\n page: props.currentPage,\n size: props.pageSize,\n});\n\nfunction changePage() {\n emits('changePage', pageInfo.value);\n}\n\nfunction handleSizeChange(val) {\n pageInfo.value.size = val;\n changePage(pageInfo);\n if (props.permissionCode) {\n // 更新分页显示条数\n apiFunction.updatePageSetting({\n permissionCode: props.permissionCode,\n pageNumber: val,\n pageType: props.pageType,\n });\n }\n}\n\nfunction handleCurrentChange(val) {\n pageInfo.value.page = val;\n changePage(pageInfo);\n}\nwatch(\n () => props.currentPage,\n (val) => {\n pageInfo.value.page = val;\n },\n);\nonMounted(() => {\n if (props.permissionCode) {\n // 查询分页显示条数\n apiFunction\n .queryPageSetting({\n permissionCode: props.permissionCode,\n pageType: props.pageType,\n })\n .then((res) => {\n if (res.data.code === 0) {\n pageInfo.value.size = parseInt(res.data.content.pageNumber, 10);\n changePage(pageInfo);\n }\n });\n }\n});\n</script>\n\n<style scoped>\n.pagination-table {\n display: flex;\n justify-content: end;\n width: 100%;\n margin: 0;\n box-sizing: border-box;\n position: relative;\n}\n\n.slot_style {\n width: 15rem;\n position: absolute;\n left: 0;\n}\n</style>\n","<template>\n <el-popover v-model=\"isVisible\" placement=\"right\" width=\"350\" :hide-after=\"200\">\n <template #reference>\n <slot name=\"reference\"></slot>\n </template>\n <div v-loading=\"isShowlading\">\n <!-- 标题 -->\n <div class=\"custom-title\">{{ t('materialDetails') }}</div>\n <el-divider />\n <div style=\"overflow: auto; max-height: 500px\">\n <!-- 表单 -->\n <el-form :model=\"form\" label-width=\"25%\" label-position=\"right\">\n <!-- 物料名称 -->\n <el-form-item :label=\"t('productName')\">\n <el-input class=\"input-max-width\" :value=\"form[currentStrategy.nameField]\" readonly />\n </el-form-item>\n\n <!-- 规格 -->\n <!-- 可能存在页面无型号规格 -->\n <el-form-item :label=\"t('spec')\">\n <el-input class=\"input-max-width\" :value=\"form[currentStrategy.specField] || '--'\" readonly />\n </el-form-item>\n\n <!-- 物料自定义栏位 -->\n <!-- 无自定义栏位则不显示 -->\n <el-form-item\n v-for=\"CustomizeFields in props.popCustomizeFields\"\n :key=\"CustomizeFields[currentStrategy.customizeField.key]\"\n >\n <!-- label -->\n <template #label>\n <el-tooltip\n v-if=\"CustomizeFields[currentStrategy.customizeField.label].length > 6\"\n effect=\"dark\"\n :content=\"CustomizeFields[currentStrategy.customizeField.label]\"\n placement=\"top\"\n >\n <template #default>\n <span>{{ `${CustomizeFields[currentStrategy.customizeField.label].slice(0, 6)}...` }}</span>\n </template>\n </el-tooltip>\n <span v-else> {{ CustomizeFields[currentStrategy.customizeField.label] }} </span>\n </template>\n <!-- 附件 -->\n <span\n v-if=\"\n CustomizeFields[currentStrategy.customizeField.type] === 5 &&\n handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n ).length !== 0\n \"\n class=\"input-max-width\"\n >\n <el-check-tag\n v-for=\"multipleItem in handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n )\"\n :key=\"multipleItem.fileId\"\n checked\n type=\"primary\"\n style=\"margin-right: 0.5rem\"\n round\n @click=\"dowFileItem(multipleItem)\"\n >\n {{ multipleItem.fileName }}\n </el-check-tag>\n </span>\n <!-- 超链接 -->\n <span\n v-else-if=\"\n CustomizeFields[currentStrategy.customizeField.type] === 6 &&\n handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n ) !== ''\n \"\n >\n <el-tooltip\n :content=\"\n handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n )\n \"\n placement=\"top\"\n :enterable=\"false\"\n >\n <el-button link @click=\"hyperLinkClick(CustomizeFields, form[currentStrategy.customizeField.value])\">\n <v-icon class=\"mdi mdi-link\"></v-icon>\n </el-button>\n </el-tooltip>\n </span>\n <!-- 单选 -->\n <span\n v-else-if=\"\n CustomizeFields[currentStrategy.customizeField.type] === 7 &&\n handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n ) !== ''\n \"\n class=\"input-max-width\"\n >\n <el-tag type=\"primary\" style=\"margin-right: 0.5rem\" round>\n {{\n handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n )\n }}\n </el-tag>\n </span>\n <!-- 多选 -->\n <span\n v-else-if=\"\n CustomizeFields[currentStrategy.customizeField.type] === 8 &&\n handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n ) !== ''\n \"\n class=\"input-max-width\"\n >\n <el-tag\n v-for=\"(multipleItem, multipleItemIndex) in handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n )\"\n :key=\"multipleItemIndex\"\n type=\"primary\"\n style=\"margin-right: 0.5rem\"\n round\n >\n {{ multipleItem }}\n </el-tag>\n </span>\n <!-- 其余自定义栏位 -->\n <el-input\n v-else\n class=\"input-max-width\"\n :value=\"\n handleCustomFieldAndValues(\n CustomizeFields[currentStrategy.customizeField.key],\n form[currentStrategy.customizeField.value],\n ) || '--'\n \"\n readonly\n />\n </el-form-item>\n\n <!-- 图片预览 -->\n <!-- 长宽最大200px,比例自适应 -->\n <el-form-item :label=\"t('preview')\">\n <div v-if=\"url\" style=\"max-height: 200px; max-width: 200px\">\n <el-image :src=\"url\" fit=\"contain\" />\n </div>\n <el-input v-else class=\"input-max-width\" :value=\"imageText\" readonly />\n </el-form-item>\n </el-form>\n </div>\n </div>\n </el-popover>\n</template>\n\n<script setup>\nimport { ref, onMounted, nextTick, computed } from 'vue';\nimport backendApiFunction from '@/scriptFiles/checkApiErrorMechanism';\nimport { useI18n } from 'vue-i18n';\nimport { dayjs, ElMessage } from 'element-plus';\n\nconst { t } = useI18n();\n/* 字段映射额外说明\n props.popStrategies\n {\n numberField: 'productNumber', //物料编号\n nameField: 'materialName', //物料名称\n specField: 'materialSpec', //物料规格\n customizeField: { //自定义字段\n key: 'customAttributeId', //表单内字段数据与自定义字段串联key\n customizeFieldKey: 'customAttributeId',\n label: 'label', //form-ltem上的label\n value: 'customValues', //表单内的数据\n writeValue: 'attributeValue', //值\n type: 'displayType', //不同类型的枚举,不同路由下枚举字段未统一\n expandField: 'customAttribute', //自定义字段存放的层级不同,无法筛选,需要展开至同一层级,无需展开则不传\n },\n}\n*/\nconst props = defineProps({\n value: {\n type: Boolean,\n required: true,\n },\n popInformation: {\n type: Object,\n required: true,\n }, //数据(缺少自定义字段数据)\n popType: String, //路由\n popCustomizeFields: {\n type: Object,\n default: () => {\n [];\n },\n }, //自定义字段\n popTitle: {\n type: String,\n default: '物料详情',\n }, //标题\n popStrategies: {\n type: Object,\n required: true,\n }, //字段映射\n});\nconst isVisible = ref(props.value);\nconst isShowlading = ref(false);\nconst form = ref({});\n\n// 当前策略\nconst currentStrategy = computed(() => props.popStrategies);\n\n/* 图片相关 */\nconst url = ref(null);\nconst imageText = t('materialNoImage');\nconst fetchPopoverImage = async () => {\n try {\n const { data } = await backendApiFunction.getMaterialImage({\n materialPartNumber: form.value[currentStrategy.value.numberField],\n });\n if (data?.type.includes('image')) {\n const blob = new Blob([data], { type: data.type });\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onload = () => {\n url.value = reader.result;\n };\n }\n } catch (error) {\n console.error('[error]错误:', error);\n ElMessage.error(t('apiError'));\n }\n};\n\n/**\n * 自定义字段是超链接时的点击事件\n * @param {object} item 自定义字段对象\n * @param {array} docCustomFieldAndValues 自定义字段所有数据\n */\nconst hyperLinkClick = (item, docCustomFieldAndValues) => {\n const hyperLinkUrlStr = docCustomFieldAndValues.filter(\n (ite) => ite.docCustomId === item[currentStrategy.value.customizeField.customizeFieldKey],\n )[0][currentStrategy.value.customizeField.writeValue];\n window.open(hyperLinkUrlStr, '_blank');\n};\n/**\n * 下载附件序列化方法\n * @param {string} fileName 文件名\n * @param {object} res 请求响应对象\n */\nconst fileDownSerialize = (fileName, res) => {\n // 创建一个 Blob URL 指向这个 Blob 对象\n const url = window.URL.createObjectURL(new Blob([res.data], { type: res.headers['content-type'] }));\n // 创建一个临时的 <a> 元素\n const link = document.createElement('a');\n link.href = url;\n // 设置下载的文件名(可选,但推荐)\n // 如果服务器没有在响应头中提供 Content-Disposition,你需要手动设置文件名\n link.setAttribute('download', fileName);\n // 将 <a> 元素添加到文档中(不需要真正添加到可视区域)\n document.body.appendChild(link);\n // 触发点击事件以下载文件\n link.click();\n // 释放 Blob URL(可选,但推荐)\n // 注意:这应该在确保文件下载已经开始之后进行,否则在某些浏览器中可能会导致下载失败\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n document.body.removeChild(link);\n }, 0);\n};\n/**\n * 自定义字段是附件时的点击事件\n * @param {object} item 附件对象\n */\nconst dowFileItem = async (item) => {\n const fileName = item.fileName;\n if (item) {\n const data = {\n docCode: 'doc_5',\n docCustomId: item.docCustomId,\n fileId: item.fileId,\n };\n isShowlading.value = true;\n try {\n const res = await backendApiFunction.docDownloadFile(data);\n if (res.status === 200) {\n fileDownSerialize(fileName, res);\n ElMessage.success(t('downloadSuccessful'));\n } else {\n ElMessage.error(t('apiError'));\n }\n } catch (error) {\n console.error('[error]错误:', error);\n ElMessage.error(t('apiError'));\n } finally {\n isShowlading.value = false;\n }\n }\n};\n/**\n * 根据type进行数据处理\n * @param fieldId 自定义字段数据key\n * @param list 表单数据value\n */\nconst handleCustomFieldAndValues = (fieldId, list) => {\n const field = props.popCustomizeFields.find(\n (item) => item[currentStrategy.value.customizeField.customizeFieldKey] === fieldId,\n );\n const i = list?.find((item) => item.docCustomId === fieldId);\n if (list && field && i) {\n // 日期\n if (field[currentStrategy.value.customizeField.type] === 3) {\n return dayjs(Number(i[currentStrategy.value.customizeField.writeValue])).format('YYYY-MM-DD HH:mm:ss');\n }\n // 日期区间\n if (field[currentStrategy.value.customizeField.type] === 4) {\n try {\n const val = JSON.parse(i[currentStrategy.value.customizeField.writeValue]);\n if (val) {\n return `${dayjs(Number(val[0])).format('YYYY-MM-DD HH:mm:ss')} ~ ${dayjs(Number(val[1])).format('YYYY-MM-DD HH:mm:ss')}`;\n }\n return '';\n } catch (error) {\n return '';\n }\n }\n // 附件\n if (field[currentStrategy.value.customizeField.type] === 5) {\n if (i.fileData && i.fileData.length !== 0) {\n return i.fileData.map((item) => ({\n ...item,\n docCustomId: i.docCustomId,\n }));\n } else {\n return '';\n }\n }\n // 单选\n if (field[currentStrategy.value.customizeField.type] === 7) {\n return i[currentStrategy.value.customizeField.writeValue]\n ? JSON.parse(i[currentStrategy.value.customizeField.writeValue])\n : '';\n }\n // 复选框\n if (field[currentStrategy.value.customizeField.type] === 8) {\n return i[currentStrategy.value.customizeField.writeValue]\n ? JSON.parse(i[currentStrategy.value.customizeField.writeValue])\n : '';\n }\n return i[currentStrategy.value.customizeField.writeValue] || '';\n }\n return '';\n};\nconst fetchPopoverInfo = async () => {\n try {\n form.value = props.popInformation;\n if (currentStrategy.value.customizeField?.expandField) {\n form.value.customValues = form.value.customValues.map((customValue) => {\n const { customAttribute, ...rest } = customValue;\n return {\n ...rest,\n ...customAttribute,\n };\n });\n }\n } catch (error) {\n console.error('[error]错误:', error);\n ElMessage.error(t('apiError'));\n }\n};\n\nonMounted(() => {\n nextTick(async () => {\n isShowlading.value = true;\n await fetchPopoverInfo();\n await fetchPopoverImage();\n isShowlading.value = false;\n });\n});\n</script>\n<style scoped>\n.el-divider {\n margin: 4px 0px 12px;\n}\n.custom-title {\n font-size: 16px;\n text-align: center;\n}\n.input-max-width {\n max-width: 96%;\n}\n</style>\n","<template>\n <div>\n <el-form\n v-for=\"(item, index) in filterConditions\"\n ref=\"filterForm\"\n :key=\"index\"\n :model=\"item\"\n :rules=\"getRules(item)\"\n :data-test-id=\"`EL-FORM-t4nN1q-${index}`\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-i6hi71\">\n <!-- 字段选择 -->\n <el-col :span=\"6\" data-test-id=\"EL-COL-YtO6It\">\n <el-form-item\n :label=\"isItDefault ? t('dataFilter') : ''\"\n prop=\"CloumnName\"\n data-test-id=\"EL-FORM-ITEM-X2DfMG\"\n >\n <el-select\n v-model=\"item.CloumnName\"\n filterable\n data-test-id=\"EL-SELECT-Tla5bC\"\n @change=\"handleChangeColumn($event, index)\"\n >\n <el-option\n v-for=\"(it, index) in fieldSetting\"\n :key=\"it.key\"\n :label=\"t(it.fieldName)\"\n :value=\"it.key\"\n :disabled=\"\n filterConditions.some((item) => item.CloumnName === it.key) ||\n otherFilterConditions.some((item) => item.CloumnName === it.key)\n \"\n :data-test-id=\"`EL-OPTION-24JqP4-${index}`\"\n />\n </el-select>\n </el-form-item>\n </el-col>\n\n <!-- 操作符 -->\n <el-col v-if=\"item.CloumnName\" :span=\"4\" data-test-id=\"EL-COL-o6tUCn\">\n <el-form-item prop=\"Operator\" data-test-id=\"EL-FORM-ITEM-lwyEu4\">\n <el-select\n v-model=\"item.Operator\"\n :placeholder=\"t('selectOperation')\"\n data-test-id=\"EL-SELECT-B8JVKa\"\n @change=\"handleChangeOperator($event, index)\"\n >\n <el-option\n v-for=\"(it, index) in operatorOptionsFunction(item.ColumnType)\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-698Ga6-${index}`\"\n />\n </el-select>\n </el-form-item>\n\n <!-- StartOrEnd(仅类型4) -->\n <el-form-item v-if=\"item.ColumnType === 4\" prop=\"StartOrEnd\" data-test-id=\"EL-FORM-ITEM-iI09Nl\">\n <el-select\n v-model=\"item.StartOrEnd\"\n style=\"margin-top: 1rem\"\n :placeholder=\"t('startOrEndTime')\"\n data-test-id=\"EL-SELECT-hYLMt4\"\n >\n <el-option\n v-for=\"(it, index) in startOrEndOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-qkQDv6-${index}`\"\n />\n </el-select>\n </el-form-item>\n </el-col>\n\n <!-- 值输入 -->\n <el-col v-if=\"item.Operator && ![9, 10].includes(item.Operator)\" :span=\"12\" data-test-id=\"EL-COL-bWX9Cb\">\n <!-- 文本 / 附件 / 超链接 -->\n <el-form-item\n v-if=\"isTextLikeType(item.ColumnType) && isTextOperator(item.Operator)\"\n prop=\"TextValue\"\n data-test-id=\"EL-FORM-ITEM-MaRru1\"\n >\n <el-input v-model=\"item.TextValue\" :placeholder=\"t('inputText')\" clearable data-test-id=\"EL-INPUT-RoUXuD\" />\n </el-form-item>\n\n <!-- 数字范围 -->\n <el-form-item\n v-else-if=\"item.ColumnType === 2 && [13, 14].includes(item.Operator)\"\n prop=\"NumberRangeValue\"\n data-test-id=\"EL-FORM-ITEM-vLLx0f\"\n >\n <el-input-number\n v-model=\"item.NumberRangeValue[0]\"\n :max=\"item.NumberRangeValue[1] ?? Number.MAX_SAFE_INTEGER\"\n :controls=\"false\"\n :placeholder=\"t('minValue')\"\n disabled-scientific\n clearable\n data-test-id=\"EL-INPUT-NUMBER-nxVp98\"\n />\n <span data-test-id=\"SPAN-aJGkhM\"> - </span>\n <el-input-number\n v-model=\"item.NumberRangeValue[1]\"\n :min=\"item.NumberRangeValue[0] ?? Number.MIN_SAFE_INTEGER\"\n :controls=\"false\"\n :placeholder=\"t('maxValue')\"\n disabled-scientific\n clearable\n data-test-id=\"EL-INPUT-NUMBER-BhVdW7\"\n />\n <el-button type=\"text\" data-test-id=\"EL-BUTTON-1EWCV6\" @click=\"handleNumberValidate(index)\">\n <i class=\"mdi mdi-close\" data-test-id=\"I-a2oGJf\" />\n </el-button>\n </el-form-item>\n\n <!-- 单选/多选 -->\n <el-form-item\n v-else-if=\"isSelectType(item.ColumnType) && [15, 16].includes(item.Operator)\"\n prop=\"SelectRangeValue\"\n data-test-id=\"EL-FORM-ITEM-tjsXva\"\n >\n <el-select\n v-model=\"item.SelectRangeValue\"\n collapse-tags\n collapse-tags-tooltip\n multiple\n filterable\n :placeholder=\"t('selectOptions')\"\n clearable\n data-test-id=\"EL-SELECT-3wxMW0\"\n >\n <el-option\n v-for=\"(opt, index) in fieldSelectOptionsFunction(item.CloumnName)\"\n :key=\"opt.value\"\n :label=\"t(opt.label)\"\n :value=\"opt.value\"\n :data-test-id=\"`EL-OPTION-5wrWi6-${index}`\"\n />\n </el-select>\n </el-form-item>\n <el-form-item\n v-else-if=\"isSelectType(item.ColumnType) && [5].includes(item.Operator)\"\n prop=\"SingleSelectValue\"\n data-test-id=\"EL-FORM-ITEM-tjsXvb\"\n >\n <el-select\n v-model=\"item.SingleSelectValue\"\n collapse-tags\n collapse-tags-tooltip\n filterable\n :placeholder=\"t('selectOptions')\"\n clearable\n data-test-id=\"EL-SELECT-3wxMWS\"\n >\n <el-option\n v-for=\"(opt, index) in fieldSelectOptionsFunction(item.CloumnName)\"\n :key=\"opt.value\"\n :label=\"t(opt.label)\"\n :value=\"opt.value\"\n :data-test-id=\"`EL-OPTION-5wrWi5-${index}`\"\n />\n </el-select>\n </el-form-item>\n\n <!-- 日期单值 -->\n <el-form-item\n v-else-if=\"isDateType(item.ColumnType) && [1, 2, 3, 4, 5].includes(item.Operator)\"\n prop=\"DateTimeOperatorValue\"\n data-test-id=\"EL-FORM-ITEM-932Tco\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-CWWfMC\">\n <el-col :span=\"6\" data-test-id=\"EL-COL-3tGiBz8\">\n <el-select\n v-model=\"item.DateTimeOperatorValue.TimeType\"\n :placeholder=\"t('timePrecision')\"\n clearable\n data-test-id=\"EL-SELECT-nphb5z\"\n >\n <el-option\n v-for=\"(it, index) in timePrecisionOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-7foEY9-${index}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"18\" data-test-id=\"EL-COL-rxXI8U\">\n <el-date-picker\n v-model=\"item.DateTimeOperatorValue.TimeValue\"\n :type=\"item.DateTimeOperatorValue.TimeType === 0 ? 'date' : 'datetime'\"\n :format=\"timePrecisionOptionsFunction(item.DateTimeOperatorValue.TimeType)\"\n value-format=\"x\"\n :placeholder=\"t('selectTime')\"\n clearable\n data-test-id=\"EL-DATE-PICKER-BFwrVh\"\n />\n </el-col>\n </el-row>\n </el-form-item>\n\n <!-- 日期范围 -->\n <el-form-item\n v-else-if=\"isDateType(item.ColumnType) && item.Operator === 11\"\n prop=\"DateTimeRangeValue\"\n data-test-id=\"EL-FORM-ITEM-nM49hw\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-zZIFj0\">\n <el-col :span=\"6\" data-test-id=\"EL-COL-k6LrJP\">\n <el-select\n v-model=\"item.DateTimeRangeValue.TimeType\"\n :placeholder=\"t('timePrecision')\"\n clearable\n data-test-id=\"EL-SELECT-93yQnb\"\n >\n <el-option\n v-for=\"(it, index) in timePrecisionOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-WuL5hF-${index}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"24\" data-test-id=\"EL-COL-Zy3UKA\">\n <el-date-picker\n :key=\"componentKey\"\n v-model=\"item.DateTimeRangeValue.TimeValue\"\n style=\"width: 90%; margin-top: 1rem\"\n :type=\"item.DateTimeRangeValue.TimeType === 0 ? 'daterange' : 'datetimerange'\"\n :format=\"timePrecisionOptionsFunction(item.DateTimeRangeValue.TimeType)\"\n value-format=\"x\"\n clearable\n range-separator=\"-\"\n :start-placeholder=\"t('starttime')\"\n :end-placeholder=\"t('endtime')\"\n data-test-id=\"EL-DATE-PICKER-fPXNSn\"\n @clear=\"item.DateTimeRangeValue.TimeValue = []\"\n @change=\"(() => {\n componentKey++\n })\"\n />\n </el-col>\n </el-row>\n </el-form-item>\n\n <!-- 动态筛选 -->\n <el-form-item\n v-else-if=\"isDateType(item.ColumnType) && item.Operator === 12\"\n prop=\"DateTimeDynamicFilteringValue\"\n data-test-id=\"EL-FORM-ITEM-3pz54d\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-wcwmDm\">\n <el-col :span=\"12\" data-test-id=\"EL-COL-1WOBcB\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringValue.DateType\"\n :placeholder=\"t('dynamicFiltering')\"\n clearable\n data-test-id=\"EL-SELECT-93zW0f\"\n @change=\"handleDateTimeDynamicFilteringValueChange($event, index)\"\n >\n <el-option\n v-for=\"(it, index) in dynamicFilteringOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-j2Gto6-${index}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"12\" data-test-id=\"8\">\n <div style=\"width: 200px\" data-test-id=\"DIV-oQYQZI\" />\n </el-col>\n </el-row>\n </el-form-item>\n\n <!-- 自定义单区间 -->\n <el-form-item\n v-if=\"\n item.DateTimeDynamicFilteringValue.DateType === 0 || item.DateTimeDynamicFilteringValue.DateType === 1\n \"\n prop=\"DateTimeDynamicFilteringCustomize\"\n data-test-id=\"EL-FORM-ITEM-oKi0MK\"\n >\n <el-col v-if=\"item.DateTimeDynamicFilteringValue.DateType === 0\" :span=\"24\" data-test-id=\"EL-COL-5XNCgU\">\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-zHGl1c\">\n <el-col :span=\"8\" data-test-id=\"EL-COL-tTDMtb\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].PastOrFuture\"\n :placeholder=\"t('pastOrFuture')\"\n clearable\n data-test-id=\"EL-SELECT-xifi4x\"\n >\n <el-option\n v-for=\"(it, index) in pastOrFutureOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-0ql2zr-${index}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-T5qcri\">\n <el-input-number\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].NumberValue\"\n :min=\"1\"\n :max=\"365\"\n :precision=\"0\"\n :controls=\"false\"\n style=\"width: 100%\"\n clearable\n data-test-id=\"EL-INPUT-NUMBER-RYLnRt\"\n />\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-JlxABO\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].DayType\"\n :placeholder=\"t('unit')\"\n clearable\n data-test-id=\"EL-SELECT-8Lpazq\"\n >\n <el-option\n v-for=\"(it, index) in dayTypeOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-ncuVRo-${index}`\"\n />\n </el-select>\n </el-col>\n </el-row>\n </el-col>\n\n <!-- 自定义双区间 -->\n <el-col\n v-else-if=\"item.DateTimeDynamicFilteringValue.DateType === 1\"\n :span=\"24\"\n data-test-id=\"EL-COL-eM8opS\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-lcZ8pe\">\n <el-col :span=\"8\" data-test-id=\"EL-COL-7j3j0p\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].PastOrFuture\"\n :placeholder=\"t('pastOrFuture')\"\n clearable\n data-test-id=\"EL-SELECT-FjHTpQ\"\n >\n <el-option\n v-for=\"(it, index) in pastOrFutureOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-xpcYp5-${index}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-JnQ12D\">\n <el-input-number\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].NumberValue\"\n :min=\"1\"\n :max=\"365\"\n :precision=\"0\"\n :controls=\"false\"\n style=\"width: 100%\"\n clearable\n data-test-id=\"EL-INPUT-NUMBER-3lwksG\"\n />\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-ms7sgy\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].DayType\"\n :placeholder=\"t('unit')\"\n clearable\n data-test-id=\"EL-SELECT-fgZOLb\"\n >\n <el-option\n v-for=\"(it, index) in dayTypeOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-Q07Tx8-${index}`\"\n />\n </el-select>\n </el-col>\n </el-row>\n <el-row :gutter=\"10\" style=\"margin-top: 1rem\" data-test-id=\"EL-ROW-XkOYka\">\n <el-col :span=\"8\" data-test-id=\"EL-COL-dLQQRb\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[1].PastOrFuture\"\n :placeholder=\"t('pastOrFuture')\"\n clearable\n data-test-id=\"EL-SELECT-ZNyGMx\"\n >\n <el-option\n v-for=\"(it, index) in pastOrFutureOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-nlnE2g-${index}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-3uTjYF\">\n <el-input-number\n v-model=\"item.DateTimeDynamicFilteringCustomize[1].NumberValue\"\n :min=\"1\"\n :max=\"365\"\n :precision=\"0\"\n :controls=\"false\"\n style=\"width: 100%\"\n clearable\n data-test-id=\"EL-INPUT-NUMBER-w1GgpV\"\n />\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-wDLRGi\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[1].DayType\"\n :placeholder=\"t('unit')\"\n clearable\n data-test-id=\"EL-SELECT-3d7Hyz\"\n >\n <el-option\n v-for=\"(it, index) in dayTypeOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-wkFjZV-${index}`\"\n />\n </el-select>\n </el-col>\n </el-row>\n </el-col>\n </el-form-item>\n </el-col>\n <el-col v-if=\"!isItDefault\" :span=\"2\" data-test-id=\"EL-COL-7VbmTB\">\n <!-- 删除按钮 -->\n <el-button type=\"text\" data-test-id=\"EL-BUTTON-f9487D\" @click=\"removeFilter(index)\">\n <i class=\"mdi mdi-close\" data-test-id=\"I-lr2pJ2\" />\n </el-button>\n </el-col>\n </el-row>\n </el-form>\n </div>\n</template>\n<script setup>\nimport { ref, nextTick } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { ElMessageBox, ElMessage } from 'element-plus';\n\nconst { t } = useI18n();\nconst props = defineProps({\n filterConditions: {\n type: Array,\n default: () => [],\n }, // 筛选条件\n fieldSetting: {\n type: Array,\n default: () => [],\n }, // 筛选条件内容的字段配置\n isItDefault: {\n type: Boolean,\n default: false,\n }, // 是否默认筛选条件\n otherFilterConditions: {\n type: Array,\n default: () => [],\n }, // 其他筛选条件\n selectOptions: {\n type: Object,\n default: function () {\n return {};\n },\n }, // 外部传入的筛选选项数据\n});\nconst componentKey = ref(1);\nconst { filterConditions, fieldSetting, isItDefault, otherFilterConditions } = props;\n// 工具函数:判断字段类型\nconst isTextLikeType = (type) => [1, 5, 6].includes(type); // 文本、附件、超链接\nconst isSelectType = (type) => [7, 8].includes(type); // 单选、多选\nconst isDateType = (type) => [3, 4].includes(type); // 日期、日期范围\nconst isTextOperator = (op) => [5, 6, 7, 8].includes(op); // 等于、包含等\n\nconst filterForm = ref([]);\n// 验证规则动态生成\nconst getRules = (item) => {\n const rules = {};\n\n if (![9, 10].includes(item?.Operator)) {\n if (item.ColumnType === 2 && [13, 14].includes(item.Operator)) {\n rules.NumberRangeValue = [\n {\n validator: (rule, value, callback) => {\n if (value.length === 1 && value[0] !== null) {\n return callback(new Error(t('inputValidRange')));\n }\n if (value.length === 2 && (value[0] === null) !== (value[1] === null)) {\n return callback(new Error(t('inputValidRange')));\n }\n if (value.length === 2 && value[0] !== null && value[1] !== null && value[0] > value[1]) {\n return callback(new Error(t('startValueCannotGreaterThanEndValue')));\n }\n callback();\n },\n trigger: 'change',\n },\n ];\n }\n }\n\n return rules;\n};\n/**\n * 数字范围验证\n * @param index 筛选条件索引\n */\nconst handleNumberValidate = (index) => {\n filterConditions[index].NumberRangeValue = [];\n filterForm.value[index].clearValidate('NumberRangeValue');\n filterForm.value[index].validateField('NumberRangeValue');\n};\n\n/* 时间精度 */\nconst timePrecisionOptions = ref([\n { value: 0, label: 'daily', timeFormat: 'YYYY-MM-DD' },\n { value: 1, label: 'hour', timeFormat: 'YYYY-MM-DD HH' },\n { value: 2, label: 'minute', timeFormat: 'YYYY-MM-DD HH:mm' },\n { value: 3, label: 'second', timeFormat: 'YYYY-MM-DD HH:mm:ss' },\n]);\n/**\n * 时间精度选项\n * @param timeType 时间精度\n * @returns 时间格式\n */\nconst timePrecisionOptionsFunction = (timeType) => {\n return timePrecisionOptions.value.find((item) => item.value === timeType)?.timeFormat;\n};\n/* 动态筛选 */\nconst dynamicFilteringOptions = ref([\n { value: 2, label: 'today' },\n { value: 3, label: 'yesterday' },\n { value: 4, label: 'thisWeek' },\n { value: 5, label: 'lastWeek' },\n { value: 6, label: 'thisMonth' },\n { value: 7, label: 'lastMonth' },\n { value: 8, label: 'lastThreeMonths' },\n { value: 0, label: 'custom' },\n { value: 1, label: 'customRange' },\n]);\n/* 动态筛选自定义筛选 */\nconst pastOrFutureOptions = ref([\n { value: 0, label: 'past' },\n { value: 1, label: 'future' },\n]);\n/* 动态筛选自定义筛选时间类型 */\nconst dayTypeOptions = ref([\n { value: 1, label: 'daily' },\n { value: 2, label: 'week' },\n { value: 3, label: 'month' },\n { value: 4, label: 'quarter' },\n { value: 5, label: 'year' },\n]);\n/* 筛选条件内容的字段类型为4时,判断逻辑选项 */\nconst startOrEndOptions = ref([\n { value: 0, label: 'intervalStart' },\n { value: 1, label: 'intervalEnd' },\n]);\n/* 判断逻辑 */\nconst operatorOptions = ref([\n { value: 1, label: 'greaterThan' },\n { value: 2, label: 'greaterThanOrEqualTo' },\n { value: 3, label: 'lessThan' },\n { value: 4, label: 'lessThanOrEqualTo' },\n { value: 5, label: 'equalTo' },\n { value: 6, label: 'notEqualTo' },\n { value: 7, label: 'contains' },\n { value: 8, label: 'notContains' },\n { value: 9, label: 'yesEmpty' },\n { value: 10, label: 'notEmpty' },\n { value: 11, label: 'selectRange' },\n { value: 12, label: 'dynamicFiltering' },\n { value: 13, label: 'inRange' },\n { value: 14, label: 'notInRange' },\n { value: 15, label: 'isOneOf' },\n { value: 16, label: 'notAnyOf' },\n]);\n/**\n * 筛选条件内容的字段类型改变时,判断逻辑选项改变\n * @param fieldTypeId 筛选条件内容的字段类型\n * @returns 筛选条件内容的判断逻辑选项\n */\nconst operatorOptionsFunction = (fieldTypeId) => {\n const mapping = {\n 1: [5, 6, 7, 8, 9, 10], // 文本\n 2: [9, 10, 13, 14], // 数字\n 3: [1, 2, 3, 4, 5, 9, 10, 11, 12], // 日期\n 4: [1, 2, 3, 4, 5, 9, 10, 11, 12], // 日期范围\n 5: [5, 6, 7, 8, 9, 10], // 附件\n 6: [5, 6, 7, 8, 9, 10], // 超链接\n 7: [5], // 单选\n 8: [9, 10, 15, 16], // 多选\n };\n const allowed = mapping[fieldTypeId] || [];\n return operatorOptions.value.filter((op) => allowed.includes(op.value));\n};\n/**\n * 筛选条件内容的字段类型改变时,判断逻辑选项改变\n * @param columnName 筛选条件内容的字段类型\n * @returns 筛选条件内容的判断逻辑选项\n */\nconst fieldSelectOptionsFunction = (columnName) => {\n // 添加输入验证,确保columnName是有效的字符串\n if (columnName === null || columnName === undefined) {\n return [];\n }\n try {\n // 优先使用外部提供的直接字段配置\n if (props.selectOptions && typeof props.selectOptions === 'object') {\n // 1.直接通过字段名配置\n if (props.selectOptions[columnName]) {\n return Array.isArray(props.selectOptions[columnName]) ? props.selectOptions[columnName] : [];\n }\n // 2.通过类型配置(例如xxxOptions)\n const typeOptionsKey = Object.keys(props.selectOptions).find(\n (key) => key.endsWith('Options') && columnName.includes(key.replace('Options', '')),\n );\n if (typeOptionsKey) {\n return Array.isArray(props.selectOptions[typeOptionsKey]) ? props.selectOptions[typeOptionsKey] : [];\n }\n }\n // 从字段配置中获取选项\n const dataSource = Array.isArray(fieldSetting) ? fieldSetting : [];\n const field = dataSource.find((f) => f && f.key === columnName);\n if (field && (field.fieldTypeId === 7 || field.fieldTypeId === 8)) {\n // 选择类型字段(单选/多选)\n if (field.fieldSelectOptions) {\n try {\n const opts = JSON.parse(field.fieldSelectOptions);\n return Array.isArray(opts)\n ? opts.map((opt) => ({\n label: field.isDoc ? opt : opt ? opt.key || opt.label || opt.value : '',\n value: field.isDoc ? opt : opt ? opt.value : '',\n }))\n : [];\n } catch (jsonError) {\n ElMessage.error(t('apiError'));\n }\n }\n }\n\n return [];\n } catch (e) {\n return [];\n }\n};\n/**\n * 筛选条件内容的字段类型改变时,赋默认值\n * @param type 筛选条件内容的字段类型\n */\nconst fieldTypeFun = (type) => {\n if ([1, 5, 6].includes(type)) {\n return 5;\n }\n if (type === 2) {\n return 13;\n }\n if ([3, 4].includes(type)) {\n return 11;\n }\n if (type === 7) {\n return 5;\n }\n if (type === 8) {\n return 15;\n }\n return null;\n};\n/**\n * 筛选条件内容的字段类型改变时,判断逻辑选项改变\n * @param value 筛选条件内容的字段类型\n * @param index 筛选条件的索引\n */\nconst handleChangeColumn = (value, index) => {\n const field = props.fieldSetting.find((f) => f.key === value);\n const item = filterConditions[index];\n Object.assign(item, {\n CloumnName: value,\n ColumnType: field?.fieldTypeId,\n Operator: fieldTypeFun(field?.fieldTypeId),\n StartOrEnd: null,\n TextValue: null,\n IsCustomSetting: field?.isDoc,\n DocCustomId: field?.isDoc ? field.key : null,\n NumberRangeValue: [],\n SelectRangeValue: [],\n SingleSelectValue: null,\n DateTimeOperatorValue: { TimeType: null, TimeValue: null },\n DateTimeRangeValue: { TimeType: [3, 4].includes(field?.fieldTypeId) ? 0 : null, TimeValue: [] },\n DateTimeDynamicFilteringValue: { DateType: null },\n DateTimeDynamicFilteringCustomize: [\n { PastOrFuture: null, NumberValue: null, DayType: null },\n { PastOrFuture: null, NumberValue: null, DayType: null },\n ],\n });\n};\n/**\n *\n * @param value 筛选条件内容的判断逻辑\n * @param index 筛选条件的索引\n */\nconst handleChangeOperator = (value, index) => {\n const item = filterConditions[index];\n // 清空无关字段\n Object.assign(item, {\n TextValue: null,\n NumberRangeValue: [],\n SelectRangeValue: [],\n SingleSelectValue: null,\n DateTimeOperatorValue: { TimeType: null, TimeValue: null },\n DateTimeRangeValue: { TimeType: null, TimeValue: [] },\n DateTimeDynamicFilteringValue: { DateType: null },\n DateTimeDynamicFilteringCustomize: [\n { PastOrFuture: null, NumberValue: null, DayType: null },\n { PastOrFuture: null, NumberValue: null, DayType: null },\n ],\n });\n};\n/**\n * 动态筛选自定义筛选时间类型改变时,判断逻辑选项改变\n * @param value 动态筛选自定义筛选时间类型\n * @param index 筛选条件的索引\n */\nconst handleDateTimeDynamicFilteringValueChange = (value, index) => {\n const item = filterConditions[index];\n item.DateTimeDynamicFilteringCustomize = [\n { PastOrFuture: null, NumberValue: null, DayType: null },\n { PastOrFuture: null, NumberValue: null, DayType: null },\n ];\n};\n/**\n * 删除筛选条件\n * @param index 筛选条件的索引\n */\nconst removeFilter = (index) => {\n ElMessageBox.confirm(t('confirmToDelete'), t('confirmDelete'), {\n confirmButtonText: t('confirm'),\n cancelButtonText: t('cancel'),\n type: 'warning',\n }).then(() => {\n filterConditions.splice(index, 1);\n // emit('update:filterConditions', filterConditions);\n });\n};\n// 暴露提交方法\nconst validateAllForms = async () => {\n await nextTick();\n try {\n await Promise.all(filterForm.value.map((form) => form?.validate?.() || Promise.resolve()));\n return true;\n } catch (error) {\n ElMessage.error(t('checkForm'));\n return false;\n }\n};\ndefineExpose({ validateAllForms });\n</script>\n<style scoped lang=\"scss\"></style>\n","<template>\n <div v-loading=\"!isLoad\" data-test-id=\"DIV-Ydf0yz\">\n <div data-test-id=\"DIV-uWyNOt\">\n <el-row data-test-id=\"EL-ROW-Qs8O6C\">\n <el-col :span=\"15\" data-test-id=\"EL-COL-7SqxcZ\">\n <filterCriteria\n v-if=\"isLoad\"\n ref=\"defaultFilterRef\"\n :is-it-default=\"true\"\n :filter-conditions=\"defaultFilterConditions\"\n :other-filter-conditions=\"extraFilterConditions\"\n :field-setting=\"fieldSetting\"\n :select-options=\"selectOptions\"\n data-test-id=\"FILTERCRITERIA-1hVwQx\"\n />\n </el-col>\n <el-col :span=\"9\" align=\"center\" data-test-id=\"EL-COL-jTNbYx\">\n <div class=\"button-container\" data-test-id=\"DIV-jtoMT9\">\n <el-button type=\"primary\" data-test-id=\"EL-BUTTON-heY1hB\" @click=\"handleSearch(true)\">\n <i class=\"mdi mdi-magnify\" data-test-id=\"I-tbxET9\" />\n {{ t('query') }}\n </el-button>\n <el-popover\n ref=\"popoverRef\"\n :visible=\"visible\"\n placement=\"bottom-start\"\n width=\"800\"\n trigger=\"click\"\n data-test-id=\"EL-POPOVER-fMMv4b\"\n >\n <div v-loading=\"loading\" data-test-id=\"DIV-u82ZkA\">\n <filterCriteria\n v-if=\"visible\"\n ref=\"extraFilterRef\"\n :is-it-default=\"false\"\n :filter-conditions=\"extraFilterConditions\"\n :other-filter-conditions=\"defaultFilterConditions\"\n :field-setting=\"fieldSetting\"\n :select-options=\"selectOptions\"\n data-test-id=\"FILTERCRITERIA-1hVwQx\"\n />\n <el-text\n class=\"title-content cursor mx-1\"\n type=\"primary\"\n data-test-id=\"EL-TEXT-fiYiUY\"\n @click=\"addFilterCondition\"\n >\n <v-icon class=\"mdi mdi-plus\" data-test-id=\"V-ICON-RTH8U1\" />\n {{ t('addFilterCriteria') }}\n </el-text>\n </div>\n <template #reference>\n <el-button data-test-id=\"EL-BUTTON-AzDm8o\" @click=\"handleMoreFilter\">\n <i class=\"mdi mdi-cog\" data-test-id=\"I-tbxET9\" />\n {{ t('moreFilter') }}\n </el-button>\n </template>\n </el-popover>\n <el-button data-test-id=\"EL-BUTTON-f5txPo\" @click=\"handleReset\">{{ t('reset') }}</el-button>\n <columnConfigNext\n v-if=\"hasColumnConfig\"\n :parent-items=\"canEditHeaders\"\n :is-parent-checkbox=\"true\"\n :is-child-checkbox=\"false\"\n :is-child=\"false\"\n data-test-id=\"COLUMNCONFIGNEXT-fZb3uK\"\n @parentSaveData=\"parentSaveData\"\n @childSaveData=\"childSaveData\"\n />\n </div>\n </el-col>\n </el-row>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, onMounted, nextTick, onBeforeUnmount, watch } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport columnConfigNext from '@/components/columnConfigNext.vue';\nimport filterCriteria from '@/components/customFilter/filterCriteria.vue';\nimport apiFunction from '@/scriptFiles/checkApiErrorMechanism';\nimport { ElMessage } from 'element-plus';\nconst { t } = useI18n();\nconst emit = defineEmits(['filterSearch', 'parentSaveData', 'childSaveData']);\nconst props = defineProps({\n hasColumnConfig: {\n type: Boolean,\n default: true,\n },\n canEditHeaders: Array,\n permissionCode: String,\n selectOptions: {\n type: Object,\n default: () => ({}),\n },\n});\nconst isLoad = ref(false);\nconst visible = ref(false);\n/* 列配置 */\nconst canEditHeaders = computed(() => props.canEditHeaders);\n/* 权限编码 */\nconst permissionCode = computed(() => props.permissionCode);\n\n/**\n * 类配置修改\n * @param {*} val\n */\nconst parentSaveData = (val) => {\n emit('parentSaveData', val);\n};\n/**\n * 子级数据保存\n * @param {*} val\n */\nconst childSaveData = (val) => {\n emit('childSaveData', val);\n};\n\n/* 过滤条件 */\nconst filterConditions = ref([]);\nconst defaultFilterConditions = ref([]); //外部默认筛选条件\nconst extraFilterConditions = ref([]); //内部额外筛选条件\n/**\n * 获取自定义筛选条件\n */\nconst fetchFilterConditions = async () => {\n try {\n const {\n data: { code, message, content },\n } = await apiFunction.queryFilterCondition({ permissionCode: permissionCode.value });\n if (code !== 0) {\n ElMessage.error(t(message));\n return;\n }\n if (\n content.data.filterCondition === '' ||\n content.data.filterCondition === '[]' ||\n content.data.filterCondition === null\n ) {\n defaultFilterConditions.value = [\n {\n Operator: null,\n IsCustomSetting: null,\n DocCustomId: null,\n ColumnType: null,\n TextValue: null,\n NumberValue: null,\n NumberRangeValue: [],\n CloumnName: null,\n SelectRangeValue: [],\n SingleSelectValue: null,\n DateTimeOperatorValue: { TimeType: null, TimeValue: null },\n DateTimeRangeValue: { TimeType: null, TimeValue: [] },\n DateTimeDynamicFilteringValue: {\n DateType: null,\n },\n DateTimeDynamicFilteringCustomize: [\n {\n PastOrFuture: null,\n NumberValue: null,\n DayType: null,\n },\n {\n PastOrFuture: null,\n NumberValue: null,\n DayType: null,\n },\n ],\n },\n ];\n extraFilterConditions.value = [];\n return;\n }\n filterConditions.value = JSON.parse(content.data.filterCondition);\n defaultFilterConditions.value = [filterConditions.value[0]];\n extraFilterConditions.value = filterConditions.value.length === 1 ? [] : filterConditions.value.slice(1, 10);\n } catch (error) {\n ElMessage.error(t('apiError'));\n }\n};\n/**\n * 添加筛选条件\n */\nconst addFilterCondition = () => {\n if (extraFilterConditions.value.length >= 9) {\n ElMessage.error(t('maxFilterConditions'));\n return;\n }\n extraFilterConditions.value.push({\n Operator: null,\n IsCustomSetting: null,\n DocCustomId: null,\n ColumnType: null,\n TextValue: null,\n NumberValue: null,\n NumberRangeValue: [],\n CloumnName: null,\n SelectRangeValue: [],\n SingleSelectValue: null,\n DateTimeOperatorValue: { TimeType: null, TimeValue: null },\n DateTimeRangeValue: { TimeType: null, TimeValue: [] },\n DateTimeDynamicFilteringValue: {\n DateType: null,\n },\n DateTimeDynamicFilteringCustomize: [\n {\n PastOrFuture: null,\n NumberValue: null,\n DayType: null,\n },\n {\n PastOrFuture: null,\n NumberValue: null,\n DayType: null,\n },\n ],\n });\n};\n/* 查询自定义筛选字段内容 */\nconst fieldSetting = ref([]);\n/**\n * 获取自定义筛选字段内容\n * @param permissionCode 权限编码\n */\nconst getFieldSetting = async (permissionCode) => {\n try {\n const {\n data: { code, content, message },\n } = await apiFunction.getFieldSetting(permissionCode);\n if (code !== 0) {\n ElMessage.error(t(message));\n return;\n }\n const docCustomSettings = content.docCustomSettings.map((item) => ({\n fieldName: item.fieldName,\n fieldTypeId: item.fieldTypeId,\n fieldSelectOptions: item.fieldSelectOptions,\n key: item.docCustomId,\n isDoc: true,\n }));\n const fieldSettings = content.fieldSettings.map((item) => ({\n fieldName: item.fieldKey,\n fieldTypeId: item.fieldTypeId,\n fieldSelectOptions: item.fieldSelectOptions,\n key: item.fieldKey,\n isDoc: false,\n }));\n fieldSetting.value = [...fieldSettings, ...docCustomSettings];\n } catch (error) {\n ElMessage.error(t('apiError'));\n }\n};\n\n/* 查询 */\nconst defaultFilterRef = ref(null);\nconst extraFilterRef = ref(null);\nconst loading = ref(false);\n/**\n * 校验筛选条件\n */\nconst validate = async () => {\n try {\n const defaultValidate = (await defaultFilterRef.value?.validateAllForms()) ?? true;\n const extraValidate = (await extraFilterRef.value?.validateAllForms()) ?? true;\n return defaultValidate && extraValidate;\n } catch (error) {\n return false;\n }\n};\n/**\n * 保存更多筛选条件\n */\nconst handleSaveExtraFilter = async () => {\n isLoad.value = false;\n loading.value = true;\n try {\n const valid = await validate();\n if (!valid) {\n return;\n }\n const {\n data: { code, message },\n } = await apiFunction.insertOrUpdateFilterCondition({\n permissionCode: permissionCode.value,\n filterCondition: JSON.stringify(\n [...defaultFilterConditions.value, ...extraFilterConditions.value]\n .filter((item) => item.CloumnName !== null)\n .map((it) => ({\n ...it,\n NumberRangeValue: it.NumberRangeValue.every((num) => num === null) ? [] : it.NumberRangeValue,\n })),\n ),\n });\n if (code !== 0) {\n ElMessage.error(t(message));\n return;\n }\n await fetchFilterConditions();\n visible.value = false;\n } catch (error) {\n ElMessage.error(t('apiError'));\n } finally {\n loading.value = false;\n isLoad.value = true;\n }\n};\n/**\n * 筛选查询\n * @param type\n */\nconst handleSearch = async (type) => {\n if (type) {\n await handleSaveExtraFilter();\n }\n // 获取筛选条件数据\n const defaultConditions = defaultFilterRef.value?.filterConditions || [];\n const extraConditions = extraFilterRef.value?.filterConditions || [];\n\n // 合并筛选条件\n const filterData = {\n defaultConditions,\n extraConditions,\n };\n emit('filterSearch', filterData);\n};\n/**\n * 更多筛选条件\n */\nconst handleMoreFilter = () => {\n visible.value = !visible.value;\n};\n\n// 添加点击外部区域关闭弹窗的逻辑\nconst popoverRef = ref(null);\nconst referenceRef = ref(null);\n\nconst handleClickOutside = (event) => {\n if (visible.value) {\n const popoverEl = popoverRef.value?.$el;\n const referenceEl = referenceRef.value?.$el || document.querySelector('[data-test-id=\"EL-BUTTON-AzDm8o\"]');\n if (popoverEl && referenceEl) {\n // 检查点击的元素是否在弹窗或引用元素内部\n const isClickInside = popoverEl.contains(event.target) || referenceEl.contains(event.target);\n // 检查点击的元素是否是Element Plus的弹出组件(如日期选择器、下拉菜单等)\n let isClickOnPopper = false;\n let target = event.target;\n // 向上遍历DOM树,检查是否是popper组件\n while (target) {\n if (\n target.classList?.contains('el-popper') ||\n target.classList?.contains('el-date-editor') ||\n target.dataset?.testId?.includes('EL-DATE-PICKER') ||\n target.dataset?.testId?.includes('EL-SELECT')\n ) {\n isClickOnPopper = true;\n break;\n }\n target = target.parentElement;\n }\n // 检查点击的元素是否在弹窗的子组件内部\n const isClickInFilterCriteria = event.target.closest('[data-test-id=\"FILTERCRITERIA-1hVwQx\"]');\n // 只有当点击确实在弹窗外部且不是弹窗的子组件或popper组件时,才关闭弹窗\n if (!isClickInside && !isClickOnPopper && !isClickInFilterCriteria) {\n visible.value = false;\n }\n }\n }\n};\n\n// 监听visible变化,添加或移除事件监听器\nwatch(visible, (newVal) => {\n if (newVal) {\n // 在下一个事件循环添加监听器,避免触发点击事件\n setTimeout(() => {\n document.addEventListener('click', handleClickOutside);\n }, 0);\n } else {\n document.removeEventListener('click', handleClickOutside);\n }\n});\n/**\n * 重置筛选条件\n */\nconst handleReset = async () => {\n isLoad.value = false;\n loading.value = true;\n filterConditions.value = [];\n defaultFilterConditions.value = [];\n extraFilterConditions.value = [];\n try {\n const {\n data: { code, message },\n } = await apiFunction.insertOrUpdateFilterCondition({\n permissionCode: permissionCode.value,\n filterCondition: null,\n });\n if (code !== 0) {\n ElMessage.error(t(message));\n return;\n }\n await fetchFilterConditions();\n await handleSearch(false);\n visible.value = false;\n } catch (error) {\n ElMessage.error(t('apiError'));\n } finally {\n loading.value = false;\n isLoad.value = true;\n }\n};\n\ndefineExpose({\n handleSearch,\n});\n\nonMounted(async () => {\n await nextTick();\n await getFieldSetting(permissionCode.value);\n await fetchFilterConditions();\n const stockViewQueryDataObj = window.stockViewQueryDataObj;\n let searchObj = {};\n if (stockViewQueryDataObj) {\n searchObj = stockViewQueryDataObj.searchObj;\n }\n if (searchObj?.sourceOrderNumber) {\n isLoad.value = false;\n loading.value = true;\n filterConditions.value = [\n {\n Operator: 5,\n IsCustomSetting: false,\n DocCustomId: null,\n ColumnType: 1,\n TextValue: searchObj.sourceOrderNumber,\n NumberValue: null,\n NumberRangeValue: [],\n CloumnName: 'productionOrderNumber',\n SelectRangeValue: [],\n SingleSelectValue: null,\n DateTimeOperatorValue: { TimeType: null, TimeValue: null },\n DateTimeRangeValue: { TimeType: null, TimeValue: [] },\n DateTimeDynamicFilteringValue: {\n DateType: null,\n },\n DateTimeDynamicFilteringCustomize: [\n {\n PastOrFuture: null,\n NumberValue: null,\n DayType: null,\n },\n {\n PastOrFuture: null,\n NumberValue: null,\n DayType: null,\n },\n ],\n },\n ];\n defaultFilterConditions.value = [filterConditions.value[0]];\n extraFilterConditions.value = filterConditions.value.length === 1 ? [] : filterConditions.value.slice(1, 10);\n await handleSearch(true);\n loading.value = false;\n isLoad.value = true;\n }\n isLoad.value = true;\n});\nonBeforeUnmount(() => {\n delete window.stockViewQueryDataObj;\n // 移除事件监听器\n document.removeEventListener('click', handleClickOutside);\n});\n</script>\n\n<style scoped>\n.el-form-item__content {\n width: 100%;\n}\n\n.title-content {\n max-width: 50%;\n display: inline-block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 20px !important;\n}\n\n.cursor {\n cursor: pointer;\n}\n</style>\n","<template>\n <div\n v-show=\"visibleShow\"\n v-loading=\"loading\"\n :value=\"visibleShow\"\n class=\"full_page\"\n :style=\"{ height: height ? height : 'calc(100% + 1rem)', top: top ? top : '-1rem' }\"\n :data-test-id=\"`${dataTestId}-DIV-NjXo0`\"\n >\n <div v-if=\"globalProps\" class=\"title_name\" :data-test-id=\"`${dataTestId}-DIV-VCvcCd`\">\n {{ globalProps }}\n </div>\n <div style=\"height: 2rem; float: right; line-height: 2rem\" :data-test-id=\"`${dataTestId}-DIV-E2CzeU`\">\n <slot name=\"head_button\" />\n <el-button\n v-if=\"isShowSave\"\n class=\"button_item\"\n type=\"primary\"\n link\n :data-test-id=\"`${dataTestId}-EL-BUTTON-w4qzUN`\"\n @click=\"dialogEvent('submit')\"\n >\n <i\n :class=\"`mdi mdi-content-save-check-outline`\"\n style=\"margin-right: 0.5rem\"\n :data-test-id=\"`${dataTestId}-I-oIdZaY`\"\n />\n {{ $t('save') }}\n </el-button>\n <el-button\n class=\"button_item\"\n type=\"primary\"\n style=\"padding-right: 10px\"\n link\n :data-test-id=\"`${dataTestId}-EL-BUTTON-SM1nlI`\"\n @click=\"dialogEvent('close')\"\n >\n <i :class=\"`mdi mdi-close`\" style=\"margin-right: 0.5rem\" :data-test-id=\"`${dataTestId}-I-kreuD8`\" />\n {{ $t('cancel') }}\n </el-button>\n </div>\n <div style=\"height: calc(100% - 2rem)\" :data-test-id=\"`${dataTestId}-DIV-2oISpK`\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { computed, ref } from 'vue';\nconst props = defineProps({\n modelValue: {\n type: Boolean,\n default: false,\n },\n globalProps: {\n title: {\n type: String,\n default: '',\n },\n },\n height: {\n type: String,\n default: '100%',\n },\n top: {\n type: String,\n default: '0rem',\n },\n isShowSave: {\n type: Boolean,\n default: true,\n },\n dataTestId: {\n type: String,\n default: '',\n },\n});\nconst loading = ref(false);\nconst emit = defineEmits(['update:modelValue', 'update:address', 'submit', 'close']);\nconst visibleShow = computed({\n get() {\n return props.modelValue;\n },\n set(value) {\n emit('update:modelValue', value);\n },\n});\n\nfunction dialogEvent(type) {\n emit(type);\n}\ndefineExpose({ closed, open });\n</script>\n\n<style lang=\"scss\" scoped>\n.full_page {\n width: 100%;\n height: calc(100% + 1rem);\n position: absolute;\n top: -3rem;\n z-index: 300;\n background: white;\n}\n.title_name {\n float: left;\n height: 1.5rem;\n text-align: center;\n font-size: 15px;\n font-weight: 600;\n line-height: 1.5rem;\n border-left: 5px solid rgb(3, 3, 151);\n}\n</style>\n","<template>\n <el-dialog\n v-model=\"showDialog\"\n :before-close=\"dialogOptions.beforeClose\"\n :width=\"`${dialogOptions.width}%`\"\n :close-on-click-modal=\"closeOnClickModal\"\n :btn_array=\"dialogOptions.btns\"\n :scope=\"dialogOptions.scope\"\n :append-to-body=\"true\"\n :modal-append-to-body=\"true\"\n center\n align-center\n class=\"globalDialog\"\n style=\"border-radius: 6px\"\n data-test-id=\"EL-DIALOG-cQVOLz\"\n @optionClick=\"optionClick\"\n >\n <template #header>\n {{ $t(dialogOptions.title) }}\n </template>\n <div :style=\"{ height: defHeight + 'rem' }\" data-test-id=\"DIV-9zutsg\">\n <div class=\"bodydivcontent\" data-test-id=\"DIV-KWYRpI\">\n <slot />\n </div>\n </div>\n <template v-if=\"!dialogOptions.isReadonly\" #footer>\n <div v-if=\"!dialogOptions.customFooter\" class=\"dialog-footer\" data-test-id=\"DIV-YsulBT\">\n <el-button\n v-show=\"!dialogOptions.detail && !loading\"\n type=\"primary\"\n data-test-id=\"EL-BUTTON-atr1gR\"\n @click=\"dialogEvent('submit')\"\n >{{ $t('confirm') }}\n </el-button>\n <el-button\n v-show=\"!dialogOptions.detail && loading\"\n type=\"primary\"\n :loading=\"loading\"\n data-test-id=\"EL-BUTTON-Kjdhyk\"\n @click=\"dialogEvent('submit')\"\n >{{ $t('confirm') }}\n </el-button>\n <!-- <el-button style=\"color: #595959\" @click=\"dialogEvent('close')\">{{ $t('cancel') }}</el-button> -->\n </div>\n <span v-else class=\"dialog-footer\" data-test-id=\"SPAN-bKKXSO\">\n <slot name=\"footer\" />\n </span>\n </template>\n </el-dialog>\n</template>\n\n<script setup>\nimport { ref, watch } from 'vue';\n// eslint-disable-next-line vue/valid-define-emits\nconst emit = defineEmits();\nconst props = defineProps({\n dialogOptions: {\n type: Object,\n required: true,\n width: {\n type: String,\n default: '30%',\n },\n title: {\n type: String,\n default: '标题',\n },\n appendBody: {\n type: Boolean,\n default: false,\n },\n dialogStatus: {\n type: Boolean,\n required: true,\n default: false,\n },\n isReadonly: {\n type: Boolean,\n default: false,\n },\n },\n});\nconst loading = ref(false);\nconst closeOnClickModal = ref(false);\nconst defHeight = ref(props.dialogOptions.height);\n\nfunction optionClick(name, obj, btns, scope) {\n emit(name, obj, btns, scope);\n}\nfunction dialogEvent(type) {\n loading.value = true;\n emit(type);\n setTimeout(function () {\n loading.value = false;\n }, 2000);\n}\nconst showDialog = ref(false);\nwatch(\n () => props.dialogOptions.dialogStatus,\n (val) => {\n showDialog.value = val;\n },\n);\n</script>\n\n<style scoped lang=\"scss\">\n.bodydivcontent {\n height: 100%;\n}\n.dialog-footer {\n margin: 0 auto;\n text-align: center;\n height: 40px;\n}\n</style>\n","/* 动态筛选 */\nconst dynamicFilteringOptions = [\n { value: 2, label: 'today', sql: 'today' }, // 今天需要处理\n { value: 3, label: 'yesterday', sql: 'yesterday' }, // 昨天需要处理\n { value: 4, label: 'thisWeek', sql: 'thisweek' },\n { value: 5, label: 'lastWeek', sql: 'lastweek' },\n { value: 6, label: 'thisMonth', sql: 'thismonth' },\n { value: 7, label: 'lastMonth', sql: 'lastmonth' },\n { value: 8, label: 'lastThreeMonths', sql: 'lastthreemonths' },\n { value: 0, label: 'custom', sql: 'custom' },\n { value: 1, label: 'customRange' }, // 自定义范围\n];\n/* 动态筛选自定义筛选 */\nconst pastOrFutureOptions = [\n { value: 0, label: 'past' },\n { value: 2, label: 'current' },\n { value: 1, label: 'future' },\n];\n/* 动态筛选自定义筛选时间类型 */\nconst dayTypeOptions = [\n { value: 1, label: 'daily' },\n { value: 2, label: 'week' },\n { value: 3, label: 'month' },\n { value: 4, label: 'quarter' },\n { value: 5, label: 'year' },\n];\n/* 筛选条件内容的字段类型为4时,判断逻辑选项 */\nconst startOrEndOptions = [\n { value: 0, label: 'intervalStart' },\n { value: 1, label: 'intervalEnd' },\n];\n/* 判断逻辑 */\nconst operatorOptions = [\n { value: 1, label: 'greaterThan', sql: '>' }, // 大于\n { value: 2, label: 'greaterThanOrEqualTo', sql: '>=' }, // 大于等于\n { value: 3, label: 'lessThan', sql: '<' }, // 小于\n { value: 4, label: 'lessThanOrEqualTo', sql: '<=' }, // 小于等于\n { value: 5, label: 'equalTo', sql: '=' }, // 等于\n { value: 6, label: 'notEqualTo', sql: '!=' }, // 不等于\n { value: 7, label: 'contains', sql: 'LIKE' }, // 包含\n { value: 8, label: 'notContains', sql: 'NOT LIKE' }, // 不包含\n { value: 9, label: 'yesEmpty', sql: 'is' }, // 为空\n { value: 10, label: 'notEmpty', sql: 'is not' }, // 不为空\n { value: 11, label: 'selectRange', sql: 'BETWEEN' }, // 选择范围\n { value: 12, label: 'dynamicFiltering', sql: 'BETWEEN' }, // 动态筛选\n { value: 13, label: 'inRange', sql: 'BETWEEN' }, // 在范围内\n { value: 14, label: 'notInRange', sql: 'NOT BETWEEN' }, // 不在范围内\n { value: 15, label: 'isOneOf', sql: 'IN' }, // 是其中一个\n { value: 16, label: 'notAnyOf', sql: 'NOT IN' }, // 不是任何一个\n];\n/* 时间精度 */\nconst timePrecisionOptions = [\n { value: 0, label: 'daily', timeFormat: 'YYYY-MM-DD' },\n { value: 1, label: 'hour', timeFormat: 'YYYY-MM-DD HH' },\n { value: 2, label: 'minute', timeFormat: 'YYYY-MM-DD HH:mm' },\n { value: 3, label: 'second', timeFormat: 'YYYY-MM-DD HH:mm:ss' },\n];\nexport default {\n dynamicFilteringOptions,\n pastOrFutureOptions,\n dayTypeOptions,\n startOrEndOptions,\n operatorOptions,\n timePrecisionOptions,\n};\n","<template>\n <div>\n <el-form\n v-for=\"(item, index) in filterConditions\"\n ref=\"filterForm\"\n :key=\"index\"\n :model=\"item\"\n :rules=\"getRules(item)\"\n style=\"margin-bottom: 1rem\"\n :data-test-id=\"`EL-FORM-t4nN1q-${index}`\"\n class=\"filter-item\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-i6hi71\">\n <!-- 字段选择 -->\n <el-col :span=\"5\" data-test-id=\"EL-COL-YtO6It\">\n <el-form-item prop=\"CloumnName\" data-test-id=\"EL-FORM-ITEM-X2DfMG\">\n <el-select\n v-model=\"item.CloumnName\"\n data-test-id=\"EL-SELECT-Tla5bC\"\n :disabled=\"item.CloumnName === defaultCreateTimeString\"\n filterable\n @change=\"handleChangeColumn($event, index)\"\n >\n <el-option\n v-for=\"(it, index) in fieldSelectDataSource\"\n :key=\"it.key\"\n :label=\"it.key === 'salesOrderNumber' ? t(it.key) : t(it.fieldName)\"\n :value=\"it.key\"\n :disabled=\"filterConditions.some((item) => item.CloumnName === it.key)\"\n :data-test-id=\"`EL-OPTION-24JqP4-${index}`\"\n />\n </el-select>\n </el-form-item>\n </el-col>\n\n <!-- 操作符 -->\n <el-col v-if=\"item.CloumnName\" :span=\"5\" data-test-id=\"EL-COL-o6tUCn\">\n <el-form-item prop=\"Operator\" data-test-id=\"EL-FORM-ITEM-lwyEu4\">\n <el-select\n v-model=\"item.Operator\"\n :placeholder=\"t('selectOperation')\"\n data-test-id=\"EL-SELECT-B8JVKa\"\n @change=\"handleChangeOperator($event, index)\"\n >\n <el-option\n v-for=\"(it, index) in operatorOptionsFunction(item.ColumnType)\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-698Ga6-${index}`\"\n />\n </el-select>\n </el-form-item>\n\n <!-- StartOrEnd(仅类型4) -->\n <el-form-item v-if=\"item.ColumnType === 4\" prop=\"StartOrEnd\" data-test-id=\"EL-FORM-ITEM-iI09Nl\">\n <el-select\n v-model=\"item.StartOrEnd\"\n style=\"margin-top: 1rem\"\n :placeholder=\"t('startOrEndTime')\"\n data-test-id=\"EL-SELECT-hYLMt4\"\n >\n <el-option\n v-for=\"(it, index) in optionFile.startOrEndOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-qkQDv6-${index}`\"\n />\n </el-select>\n </el-form-item>\n </el-col>\n\n <!-- 值输入 -->\n <el-col v-if=\"item.Operator && ![9, 10].includes(item.Operator)\" :span=\"12\" data-test-id=\"EL-COL-bWX9Cb\">\n <!-- 文本 / 附件 / 超链接 -->\n <el-form-item\n v-if=\"isTextLikeType(item.ColumnType) && isTextOperator(item.Operator)\"\n prop=\"TextValue\"\n data-test-id=\"EL-FORM-ITEM-MaRru1\"\n >\n <el-input v-model=\"item.TextValue\" :placeholder=\"t('inputText')\" clearable data-test-id=\"EL-INPUT-RoUXuD\" />\n </el-form-item>\n\n <!-- 数字范围 -->\n <el-form-item\n v-else-if=\"(item.ColumnType === 2 || item.ColumnType === 9) && [13, 14].includes(item.Operator)\"\n prop=\"NumberRangeValue\"\n data-test-id=\"EL-FORM-ITEM-vLLx0f\"\n >\n <el-input\n v-model=\"item.NumberRangeValue[0]\"\n style=\"width: 150px\"\n type=\"number\"\n :controls=\"false\"\n :placeholder=\"t('minValue')\"\n clearable\n data-test-id=\"EL-INPUT-NUMBER-nxVp98\"\n />\n <span data-test-id=\"SPAN-aJGkhM\"> - </span>\n <el-input\n v-model=\"item.NumberRangeValue[1]\"\n style=\"width: 150px\"\n type=\"number\"\n :controls=\"false\"\n :placeholder=\"t('maxValue')\"\n clearable\n data-test-id=\"EL-INPUT-NUMBER-BhVdW7\"\n />\n </el-form-item>\n\n <!-- 单选/多选 -->\n <el-form-item\n v-else-if=\"isSelectType(item.ColumnType) && [5, 15, 16].includes(item.Operator)\"\n prop=\"SelectRangeValue\"\n data-test-id=\"EL-FORM-ITEM-tjsXva\"\n >\n <el-select\n v-model=\"item.SelectRangeValue\"\n collapse-tags\n collapse-tags-tooltip\n :multiple=\"item.ColumnType === 8\"\n :placeholder=\"t('selectOptions')\"\n clearable\n data-test-id=\"EL-SELECT-3wxMWS\"\n >\n <el-option\n v-for=\"(opt, index) in fieldSelectOptionsFunction(item.CloumnName)\"\n :key=\"opt.value\"\n :label=\"t(opt.label)\"\n :value=\"opt.value\"\n :data-test-id=\"`EL-OPTION-5wrWi5-${index}`\"\n />\n </el-select>\n </el-form-item>\n\n <!-- 日期单值 -->\n <el-form-item\n v-else-if=\"isDateType(item.ColumnType) && [1, 2, 3, 4, 5].includes(item.Operator)\"\n prop=\"DateTimeOperatorValue\"\n data-test-id=\"EL-FORM-ITEM-932Tco\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-CWWfMC\">\n <el-col :span=\"6\" data-test-id=\"EL-COL-3tGiBz\">\n <el-select\n v-model=\"item.DateTimeOperatorValue.TimeType\"\n :placeholder=\"t('timePrecision')\"\n clearable\n data-test-id=\"EL-SELECT-nphb5z\"\n >\n <el-option\n v-for=\"(it, index) in optionFile.timePrecisionOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-7foEY9-${index}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"18\" data-test-id=\"EL-COL-rxXI8U\">\n <el-date-picker\n v-model=\"item.DateTimeOperatorValue.TimeValue\"\n :type=\"item.DateTimeOperatorValue.TimeType === 0 ? 'date' : 'datetime'\"\n :format=\"timePrecisionOptionsFunction(item.DateTimeOperatorValue.TimeType)\"\n value-format=\"x\"\n :placeholder=\"t('selectTime')\"\n clearable\n data-test-id=\"EL-DATE-PICKER-BFwrVh\"\n />\n </el-col>\n </el-row>\n </el-form-item>\n\n <!-- 日期范围 -->\n <el-form-item\n v-else-if=\"isDateType(item.ColumnType) && item.Operator === 11\"\n prop=\"DateTimeRangeValue\"\n data-test-id=\"EL-FORM-ITEM-nM49hw\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-zZIFj0\">\n <el-col :span=\"12\" data-test-id=\"EL-COL-k6LrJP\">\n <el-select\n v-model=\"item.DateTimeRangeValue.TimeType\"\n :placeholder=\"t('timePrecision')\"\n clearable\n data-test-id=\"EL-SELECT-93yQnb\"\n >\n <el-option\n v-for=\"(it, index) in optionFile.timePrecisionOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-WuL5hF-${index}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"24\" data-test-id=\"EL-COL-Zy3UKA\">\n <el-date-picker\n v-model=\"item.DateTimeRangeValue.TimeValue\"\n style=\"width: 90%; margin-top: 1rem\"\n :type=\"item.DateTimeRangeValue.TimeType === 0 ? 'daterange' : 'datetimerange'\"\n :format=\"timePrecisionOptionsFunction(item.DateTimeRangeValue.TimeType)\"\n clearable\n range-separator=\"-\"\n :start-placeholder=\"t('startTime')\"\n :end-placeholder=\"t('endTime')\"\n data-test-id=\"EL-DATE-PICKER-fPXNSn\"\n />\n </el-col>\n </el-row>\n </el-form-item>\n\n <!-- 动态筛选 -->\n <el-form-item\n v-else-if=\"isDateType(item.ColumnType) && item.Operator === 12\"\n prop=\"DateTimeDynamicFilteringValue\"\n data-test-id=\"EL-FORM-ITEM-3pz54d\"\n >\n <el-select\n v-model=\"item.DateTimeDynamicFilteringValue.DateType\"\n :placeholder=\"t('dynamicFiltering')\"\n clearable\n data-test-id=\"EL-SELECT-93zW0f\"\n @change=\"handleDateTimeDynamicFilteringValueChange($event, index)\"\n >\n <el-option\n v-for=\"(it, index) in optionFile.dynamicFilteringOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-j2Gto6-${index}`\"\n />\n </el-select>\n </el-form-item>\n\n <!-- 自定义单区间 -->\n <el-form-item\n v-if=\"\n item.DateTimeDynamicFilteringValue.DateType === 0 || item.DateTimeDynamicFilteringValue.DateType === 1\n \"\n prop=\"DateTimeDynamicFilteringCustomize\"\n data-test-id=\"EL-FORM-ITEM-oKi0MK\"\n >\n <el-col\n v-if=\"item.DateTimeDynamicFilteringValue.DateType === 0\"\n :span=\"24\"\n style=\"margin-top: 1rem\"\n data-test-id=\"EL-COL-5XNCgU\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-zHGl1c\">\n <el-col :span=\"8\" data-test-id=\"EL-COL-tTDMtb\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].PastOrFuture\"\n :placeholder=\"t('pastOrFuture')\"\n clearable\n data-test-id=\"EL-SELECT-xifi4x\"\n >\n <el-option\n v-for=\"(it, ind) in optionFile.pastOrFutureOptions.filter((opt) => opt.value !== 2)\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-0ql2zr-${ind}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-T5qcri\">\n <el-input-number\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].NumberValue\"\n :min=\"1\"\n :max=\"365\"\n :precision=\"0\"\n :controls=\"false\"\n style=\"width: 100%\"\n clearable\n data-test-id=\"EL-INPUT-NUMBER-RYLnRt\"\n />\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-JlxABO\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].DayType\"\n :placeholder=\"t('unity')\"\n clearable\n data-test-id=\"EL-SELECT-8Lpazq\"\n >\n <el-option\n v-for=\"(it, ind) in optionFile.dayTypeOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-ncuVRo-${ind}`\"\n />\n </el-select>\n </el-col>\n </el-row>\n </el-col>\n\n <!-- 自定义双区间 -->\n <el-col\n v-else-if=\"item.DateTimeDynamicFilteringValue.DateType === 1\"\n :span=\"24\"\n style=\"margin-top: 1rem\"\n data-test-id=\"EL-COL-eM8opS\"\n >\n <el-row :gutter=\"10\" data-test-id=\"EL-ROW-lcZ8pe\">\n <el-col :span=\"8\" data-test-id=\"EL-COL-7j3j0p\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].PastOrFuture\"\n :placeholder=\"t('pastOrFuture')\"\n clearable\n data-test-id=\"EL-SELECT-FjHTpQ\"\n @change=\"\n (vel) => {\n if (vel === 2) {\n item.DateTimeDynamicFilteringCustomize[0].NumberValue = 1;\n }\n }\n \"\n >\n <el-option\n v-for=\"(it, ind) in optionFile.pastOrFutureOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-xpcYp5-${ind}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-JnQ12D\">\n <el-input-number\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].NumberValue\"\n :min=\"1\"\n :max=\"365\"\n :disabled=\"item.DateTimeDynamicFilteringCustomize[0].PastOrFuture === 2\"\n :precision=\"0\"\n :controls=\"false\"\n style=\"width: 100%\"\n clearable\n data-test-id=\"EL-INPUT-NUMBER-3lwksG\"\n />\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-ms7sgy\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[0].DayType\"\n :placeholder=\"t('unity')\"\n clearable\n data-test-id=\"EL-SELECT-fgZOLb\"\n >\n <el-option\n v-for=\"(it, ind) in optionFile.dayTypeOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-Q07Tx8-${ind}`\"\n />\n </el-select>\n </el-col>\n </el-row>\n <el-row :gutter=\"10\" style=\"margin-top: 1rem\" data-test-id=\"EL-ROW-XkOYka\">\n <el-col :span=\"8\" data-test-id=\"EL-COL-dLQQRb\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[1].PastOrFuture\"\n :placeholder=\"t('pastOrFuture')\"\n clearable\n data-test-id=\"EL-SELECT-ZNyGMx\"\n @change=\"\n (vel) => {\n if (vel === 2) {\n item.DateTimeDynamicFilteringCustomize[1].NumberValue = 1;\n }\n }\n \"\n >\n <el-option\n v-for=\"(it, ind) in optionFile.pastOrFutureOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-nlnE2g-${ind}`\"\n />\n </el-select>\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-3uTjYF\">\n <el-input-number\n v-model=\"item.DateTimeDynamicFilteringCustomize[1].NumberValue\"\n :min=\"1\"\n :max=\"365\"\n :disabled=\"item.DateTimeDynamicFilteringCustomize[1].PastOrFuture === 2\"\n :precision=\"0\"\n :controls=\"false\"\n style=\"width: 100%\"\n clearable\n data-test-id=\"EL-INPUT-NUMBER-w1GgpV\"\n />\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-wDLRGi\">\n <el-select\n v-model=\"item.DateTimeDynamicFilteringCustomize[1].DayType\"\n :placeholder=\"t('unity')\"\n clearable\n data-test-id=\"EL-SELECT-3d7Hyz\"\n >\n <el-option\n v-for=\"(it, ind) in optionFile.dayTypeOptions\"\n :key=\"it.value\"\n :label=\"t(it.label)\"\n :value=\"it.value\"\n :data-test-id=\"`EL-OPTION-wkFjZV-${ind}`\"\n />\n </el-select>\n </el-col>\n </el-row>\n </el-col>\n </el-form-item>\n </el-col>\n <el-col v-if=\"item.CloumnName !== defaultCreateTimeString\" :span=\"2\" data-test-id=\"EL-COL-7VbmTB\">\n <!-- 删除按钮 -->\n <el-button class=\"ml-2\" type=\"text\" data-test-id=\"EL-BUTTON-f9487D\" @click=\"removeFilter(index)\">\n <i class=\"mdi mdi-close\"></i>\n </el-button>\n </el-col>\n </el-row>\n </el-form>\n </div>\n</template>\n<script setup>\nimport { ref, nextTick, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { ElMessageBox, ElMessage } from 'element-plus';\n// import apiFunction from '@/scriptFiles/checkApiErrorMechanism.js';\nimport optionFile from './config.js';\nconst { t } = useI18n();\nconst props = defineProps({\n filterConditions: {\n type: Array,\n default: () => [],\n }, // 筛选条件\n fieldSetting: {\n type: Array,\n default: () => [],\n }, // 筛选条件内容的字段配置\n // tz新增:外部提供的下拉数据源\n selectOptions: {\n type: Object,\n default: () => ({}),\n },\n defaultCreateTimeString: {\n type: String,\n default: 'createTime',\n }, // 默认创建时间字符串\n});\nconst filterConditions = computed(() => props.filterConditions);\nconst filterForm = ref([]);\n// 工具函数:判断字段类型\nconst isTextLikeType = (type) => [1, 5, 6].includes(type); // 文本、附件、超链接\nconst isSelectType = (type) => [7, 8].includes(type); // 单选、多选\nconst isDateType = (type) => [3, 4].includes(type); // 日期、日期范围\nconst isTextOperator = (op) => [5, 6, 7, 8].includes(op); // 等于、包含等\n\n// 字段选择下拉框数据源处理 - 新增\nconst fieldSelectDataSource = computed(() => {\n // 优先使用外部提供的字段列表数据源\n if (props.selectOptions.fieldList) {\n return props.selectOptions.fieldList;\n }\n // 否则使用默认的fieldSetting\n return props.fieldSetting;\n});\n\n// 验证规则动态生成\nconst getRules = (item) => {\n const rules = {\n CloumnName: [{ required: true, message: t('selectField'), trigger: 'change' }],\n Operator: [{ required: true, message: t('selectOperator'), trigger: 'change' }],\n };\n\n if (![9, 10].includes(item.Operator)) {\n if (isTextLikeType(item.ColumnType) && isTextOperator(item.Operator)) {\n rules.TextValue = [\n { required: true, message: t('inputText'), trigger: 'blur' },\n {\n validator: (rule, value, callback) => {\n if (value !== value.trim()) {\n return callback(new Error(t('haveSpace')));\n }\n callback();\n },\n trigger: 'blur',\n },\n ];\n }\n\n if ((item.ColumnType === 2 || item.ColumnType === 9) && [13, 14].includes(item.Operator)) {\n rules.NumberRangeValue = [\n { required: true, message: t('inputRangeValue'), trigger: 'change' },\n {\n validator: (rule, value, callback) => {\n const NumberReg = /^(([1-9]{1}[0-9]{0,9})|([0]{1}))((\\.{1}[0-9]{1,6}$)|$)/;\n if (!value || !Array.isArray(value) || value.some((v) => v == null) || value.length !== 2) {\n return callback(new Error(t('inputValidRange')));\n }\n if ((!NumberReg.test(value[0]) && value[0]) || (!NumberReg.test(value[1]) && value[1])) {\n return callback(new Error(t('numIntegerExceedTen') + ',' + t('numDecimalExceedSix')));\n }\n if (+value[0] > +value[1]) {\n return callback(new Error(t('startValueCannotGreaterThanEndValue')));\n }\n callback();\n },\n trigger: 'change',\n },\n ];\n }\n\n if (isSelectType(item.ColumnType) && [15, 16].includes(item.Operator)) {\n rules.SelectRangeValue = [{ required: true, message: t('selectOptions'), trigger: 'change' }];\n }\n\n if (isDateType(item.ColumnType) && [1, 2, 3, 4, 5].includes(item.Operator)) {\n rules.DateTimeOperatorValue = [\n { required: true, message: t('selectTime'), trigger: 'change' },\n {\n validator: (rule, value, callback) => {\n if (value?.TimeType === null || !value?.TimeValue) {\n return callback(new Error(t('selectTimeAndPrecision')));\n }\n callback();\n },\n trigger: 'change',\n },\n ];\n }\n\n if (item.ColumnType === 4) {\n rules.StartOrEnd = [{ required: true, message: t('selectStartOrEnd'), trigger: 'change' }];\n }\n\n if (isDateType(item.ColumnType) && item.Operator === 11) {\n rules.DateTimeRangeValue = [\n { required: true, message: t('selectTimeRange'), trigger: 'change' },\n {\n validator: (rule, value, callback) => {\n if (value?.TimeType === null || !value?.TimeValue || value.TimeValue.length !== 2) {\n return callback(new Error(t('selectCompleteTimeRange')));\n }\n callback();\n },\n trigger: 'change',\n },\n ];\n }\n\n if (isDateType(item.ColumnType) && item.Operator === 12) {\n rules.DateTimeDynamicFilteringValue = [\n { required: true, message: t('selectDynamicFilteringType'), trigger: 'change' },\n {\n validator: (rule, value, callback) => {\n if (value?.DateType === null) {\n return callback(new Error(t('selectDynamicFilteringType')));\n }\n callback();\n },\n trigger: 'change',\n },\n ];\n rules.DateTimeDynamicFilteringCustomize = [\n {\n validator: (rule, value, callback) => {\n if (value[0]?.PastOrFuture === null || value[0]?.NumberValue === null || value[0]?.DayType === null) {\n return callback(new Error(t('pleaseInput')));\n }\n callback();\n },\n trigger: 'change',\n },\n ];\n if (\n item?.DateTimeDynamicFilteringValue?.DateType !== null &&\n item?.DateTimeDynamicFilteringValue?.DateType === 0\n ) {\n rules.DateTimeDynamicFilteringCustomize = [\n {\n validator: (rule, value, callback) => {\n if (value[0]?.PastOrFuture === null || value[0]?.NumberValue === null || value[0]?.DayType === null) {\n return callback(new Error(t('pleaseInput')));\n }\n callback();\n },\n trigger: 'change',\n },\n ];\n }\n if (\n item?.DateTimeDynamicFilteringValue?.DateType !== null &&\n item?.DateTimeDynamicFilteringValue?.DateType === 1\n ) {\n rules.DateTimeDynamicFilteringCustomize = [\n {\n validator: (rule, value, callback) => {\n if (\n value[0]?.PastOrFuture === null ||\n value[0]?.NumberValue === null ||\n value[0]?.DayType === null ||\n value[1]?.PastOrFuture === null ||\n value[1]?.NumberValue === null ||\n value[1]?.DayType === null\n ) {\n return callback(new Error(t('pleaseInput')));\n }\n callback();\n },\n trigger: 'change',\n },\n ];\n }\n }\n }\n\n return rules;\n};\n\n/**\n * 时间精度选项\n * @param timeType 时间精度\n * @returns 时间格式\n */\nconst timePrecisionOptionsFunction = (timeType) => {\n return optionFile.timePrecisionOptions.find((item) => item.value === timeType)?.timeFormat;\n};\n/**\n * 筛选条件内容的字段类型改变时,判断逻辑选项改变\n * @param fieldTypeId 筛选条件内容的字段类型\n * @returns 筛选条件内容的判断逻辑选项\n */\nconst operatorOptionsFunction = (fieldTypeId) => {\n const mapping = {\n 1: [5, 6, 7, 8, 9, 10], // 文本\n 2: [9, 10, 13, 14], // 数字\n 3: [1, 2, 3, 4, 5, 9, 10, 11, 12], // 日期\n 4: [1, 2, 3, 4, 5, 9, 10, 11, 12], // 日期范围\n 5: [5, 6, 7, 8, 9, 10], // 附件\n 6: [5, 6, 7, 8, 9, 10], // 超链接\n 7: [5], // 单选\n 8: [9, 10, 15, 16], // 多选\n 9: [9, 10, 13, 14], // 公式 按数字类型处理\n };\n const allowed = mapping[fieldTypeId] || [];\n // 优先使用外部提供的操作符选项\n if (props.selectOptions.operatorOptions) {\n return props.selectOptions.operatorOptions.filter((op) => allowed.includes(op.value));\n }\n return optionFile.operatorOptions.filter((op) => allowed.includes(op.value));\n};\n\n/**\n * 筛选条件内容的字段类型改变时,判断逻辑选项改变\n * @param columnName 筛选条件内容的字段类型\n * @returns 筛选条件内容的判断逻辑选项\n */\nconst fieldSelectOptionsFunction = (columnName) => {\n // 添加输入验证,确保columnName是有效的字符串\n if (columnName === null || columnName === undefined) {\n return [];\n }\n try {\n // 优先使用外部提供的直接字段配置\n if (props.selectOptions && typeof props.selectOptions === 'object') {\n // 1.直接通过字段名配置\n if (props.selectOptions[columnName]) {\n return Array.isArray(props.selectOptions[columnName]) ? props.selectOptions[columnName] : [];\n }\n // 2.通过类型配置(例如xxxOptions)\n const typeOptionsKey = Object.keys(props.selectOptions).find(\n (key) => key.endsWith('Options') && columnName.includes(key.replace('Options', '')),\n );\n if (typeOptionsKey) {\n return Array.isArray(props.selectOptions[typeOptionsKey]) ? props.selectOptions[typeOptionsKey] : [];\n }\n }\n // 从字段配置中获取选项\n const dataSource = Array.isArray(fieldSelectDataSource.value) ? fieldSelectDataSource.value : [];\n const field = dataSource.find((f) => f && f.key === columnName);\n if (field && (field.fieldTypeId === 7 || field.fieldTypeId === 8)) {\n // 选择类型字段(单选/多选)\n if (field.fieldSelectOptions) {\n try {\n const opts = JSON.parse(field.fieldSelectOptions);\n return Array.isArray(opts)\n ? opts.map((opt) => ({\n label: field.isDoc ? opt : opt ? opt.key || opt.label || opt.value : '',\n value: field.isDoc ? opt : opt ? opt.value : '',\n }))\n : [];\n } catch (jsonError) {\n return [];\n }\n }\n }\n\n return [];\n } catch (e) {\n ElMessage.error(t('apiError'));\n }\n};\n/**\n * 筛选条件内容的字段类型改变时,判断逻辑选项改变\n * @param value 筛选条件内容的字段类型\n * @param index 筛选条件的索引\n */\nconst fieldTypeFun = (type) => {\n if ([1, 5, 6].includes(type)) {\n return 5;\n }\n if (type === 2) {\n return 13;\n }\n if ([3, 4].includes(type)) {\n return 11;\n }\n if (type === 7) {\n return 5;\n }\n if (type === 8) {\n return 15;\n }\n return null;\n};\nconst handleChangeColumn = (value, index) => {\n const field = fieldSelectDataSource.value.find((f) => f.key === value);\n // const field = props.fieldSetting.find((f) => f.key === value);\n const item = filterConditions.value[index];\n Object.assign(item, {\n CloumnName: value,\n ColumnType: field?.fieldTypeId,\n Operator: fieldTypeFun(field?.fieldTypeId),\n StartOrEnd: null,\n TextValue: null,\n IsCustomSetting: field?.isDoc,\n DocCustomId: field?.isDoc ? field.key : null,\n NumberRangeValue: [],\n SelectRangeValue: [],\n DateTimeOperatorValue: { TimeType: null, TimeValue: null },\n DateTimeRangeValue: { TimeType: [3, 4].includes(field?.fieldTypeId) ? 0 : null, TimeValue: [] },\n DateTimeDynamicFilteringValue: { DateType: null },\n DateTimeDynamicFilteringCustomize: [\n { PastOrFuture: null, NumberValue: null, DayType: null },\n { PastOrFuture: null, NumberValue: null, DayType: null },\n ],\n });\n};\n/**\n *\n * @param value 筛选条件内容的判断逻辑\n * @param index 筛选条件的索引\n */\nconst handleChangeOperator = (value, index) => {\n const item = filterConditions.value[index];\n // 清空无关字段\n Object.assign(item, {\n TextValue: null,\n NumberRangeValue: [],\n SelectRangeValue: [],\n DateTimeOperatorValue: { TimeType: null, TimeValue: null },\n DateTimeRangeValue: { TimeType: null, TimeValue: [] },\n DateTimeDynamicFilteringValue: { DateType: null },\n DateTimeDynamicFilteringCustomize: [\n { PastOrFuture: null, NumberValue: null, DayType: null },\n { PastOrFuture: null, NumberValue: null, DayType: null },\n ],\n });\n};\n/**\n * 动态筛选自定义筛选时间类型改变时,判断逻辑选项改变\n * @param value 动态筛选自定义筛选时间类型\n * @param index 筛选条件的索引\n */\nconst handleDateTimeDynamicFilteringValueChange = (value, index) => {\n const item = filterConditions.value[index];\n item.DateTimeDynamicFilteringCustomize = [\n { PastOrFuture: null, NumberValue: null, DayType: null },\n { PastOrFuture: null, NumberValue: null, DayType: null },\n ];\n};\n/**\n * 删除筛选条件\n * @param index 筛选条件的索引\n */\nconst removeFilter = (index) => {\n ElMessageBox.confirm(t('confirmToDelete'), t('confirmDelete'), {\n confirmButtonText: t('confirm'),\n cancelButtonText: t('cancel'),\n type: 'warning',\n }).then(() => {\n filterConditions.value.splice(index, 1);\n // emit('update:filterConditions', filterConditions);\n });\n};\n// 暴露提交方法\nconst validateAllForms = async () => {\n await nextTick();\n try {\n await Promise.all(filterForm.value.map((form) => form?.validate?.() || Promise.resolve()));\n return true;\n } catch (error) {\n ElMessage.error(t('checkForm'));\n return false;\n }\n};\ndefineExpose({ validateAllForms });\n</script>\n<style scoped lang=\"scss\">\n.filter-item {\n background-color: #f9fafb;\n border-radius: 6px;\n}\n</style>\n","export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<<n) | (x>>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));","<template>\n <el-drawer\n v-model=\"visible\"\n :show-close=\"false\"\n size=\"calc(60% - 100px)\"\n :append-to-body=\"false\"\n :close-on-press-escape=\"false\"\n :modal=\"false\"\n :z-index=\"2000\"\n :with-header=\"false\"\n body-class=\"drawer-box\"\n data-test-id=\"EL-DRAWER-bQvmdU\"\n class=\"create-view-drawer\"\n >\n <template #default>\n <div class=\"view-box\" data-test-id=\"DIV-1N5GVN\">\n <div class=\"view-title\" data-test-id=\"DIV-RHdrZN\">\n <h3 data-test-id=\"H4-2vhWDY\">\n <span data-test-id=\"SPAN-vzUpbG\">\n <v-icon class=\"mdi mdi-book-open-variant\" data-test-id=\"V-ICON-52NN4f\" /> {{ viewTypeTitle }}\n </span>\n </h3>\n <el-icon class=\"mdi mdi-close cursor\" :size=\"25\" data-test-id=\"EL-ICON-Y6FnRm\" @click=\"close\"> </el-icon>\n </div>\n <div class=\"view-content\" data-test-id=\"DIV-lpvhN1\">\n <el-menu\n v-model=\"activeMenu\"\n class=\"el-menu-vertical-demo\"\n background-color=\"#f5f7fa\"\n text-color=\"#333\"\n active-text-color=\"#125088\"\n :default-active=\"activeMenu\"\n unique-opened\n data-test-id=\"EL-MENU-zUc2Ka\"\n >\n <el-menu-item index=\"basicInfo\" data-test-id=\"EL-MENU-ITEM-e3jZsV\" @click=\"activeMenu = 'basicInfo'\">\n <span class=\"mdi mdi-note-text\" data-test-id=\"SPAN-FXgldN\" /> {{ t('basicInfo') }}\n </el-menu-item>\n <el-menu-item index=\"dataFilter\" data-test-id=\"EL-MENU-ITEM-FP0Pdh\" @click=\"activeMenu = 'dataFilter'\">\n <span class=\"mdi mdi-filter-cog\" data-test-id=\"SPAN-DvUe8j\" /> {{ t('dataFilter') }}\n </el-menu-item>\n </el-menu>\n <div class=\"drawer-content\" data-test-id=\"DIV-9dBeYG\">\n <div v-show=\"activeMenu === 'basicInfo'\" data-test-id=\"DIV-qkoKbM\">\n <h3 data-test-id=\"H3-95pW9X\">{{ t('basicInfo') }}</h3>\n <el-form\n ref=\"basicFormRef\"\n :model=\"formData\"\n :rules=\"rules\"\n label-width=\"auto\"\n data-test-id=\"EL-FORM-RLlvjp\"\n >\n <el-form-item :label=\"t('viewName')\" prop=\"viewName\" data-test-id=\"EL-FORM-ITEM-wwCvB7\">\n <el-input\n v-model=\"formData.viewName\"\n :placeholder=\"t('enter') + t('viewName')\"\n maxlength=\"20\"\n :disabled=\"viewId < 0\"\n show-word-limit\n clearable\n data-test-id=\"EL-INPUT-eTI2mw\"\n />\n </el-form-item>\n <el-form-item :label=\"t('viewIcon')\" data-test-id=\"EL-FORM-ITEM-UtKiIs\">\n <div class=\"icon-options\" data-test-id=\"DIV-OuotQS\">\n <el-button\n v-for=\"(option, index) in 7\"\n :key=\"index\"\n :class=\"{ active: formData.selectedIconIndex === index }\"\n :style=\"{\n color: iconColors[index],\n borderColor: formData.selectedIconIndex === index ? '#4665ad' : '#dcdcdc',\n }\"\n type=\"text\"\n data-test-id=\"EL-BUTTON-4Hyaga\"\n @click=\"formData.selectedIconIndex = index\"\n >\n <i class=\"mdi mdi-book-open-blank-variant radio-icon\" data-test-id=\"V-ICON-oBZKUA\" />\n </el-button>\n </div>\n </el-form-item>\n <el-form-item\n :label=\"t('viewPermission')\"\n prop=\"permission\"\n required\n data-test-id=\"EL-FORM-ITEM-Jb9jGY\"\n >\n <el-cascader\n v-model=\"formData.permission\"\n :options=\"options\"\n :props=\"cascadeProperty\"\n :show-all-levels=\"false\"\n show-checked-strategy=\"parent\"\n clearable\n data-test-id=\"EL-CASCADER-X0KLWz\"\n @change=\"handleChange\"\n />\n </el-form-item>\n </el-form>\n </div>\n <div v-show=\"activeMenu === 'dataFilter'\" data-test-id=\"DIV-ckP1yh\">\n <h3 data-test-id=\"H3-c1nKHQ\">\n {{ t('dataFilter') }}\n </h3>\n <filterCriteria\n ref=\"filterCriteriaRef\"\n :field-setting=\"fieldSetting\"\n :filter-conditions=\"dataFilterList\"\n :select-options=\"selectOptions\"\n :default-create-time-string=\"defaultCreateTimeString\"\n data-test-id=\"FILTERCRITERIA-ShqDeQ\"\n />\n <el-button link type=\"primary\" data-test-id=\"EL-BUTTON-W21EYJ\" @click=\"addFilterCondition\">\n <v-icon class=\"mdi mdi-plus\" style=\"margin-right: 0.5rem\" data-test-id=\"V-ICON-u6sfaW\" />\n {{ t('addFilterConditions') }}\n </el-button>\n </div>\n <div class=\"drawer-footer\" data-test-id=\"DIV-eCU0O7\">\n <el-button type=\"primary\" data-test-id=\"EL-BUTTON-xHRONm\" @click=\"saveView\">\n {{ t('save') }}\n </el-button>\n <el-button type=\"primary\" data-test-id=\"EL-BUTTON-CQwuMO\" @click=\"close\">\n {{ t('cancellation') }}\n </el-button>\n </div>\n </div>\n </div>\n </div>\n </template>\n </el-drawer>\n</template>\n\n<script setup>\nimport { ref, computed, reactive } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport apiFunction from '@/scriptFiles/checkApiErrorMechanism.js';\nimport { ElMessage, ElLoading } from 'element-plus';\nimport dayjs from 'dayjs';\nimport filterCriteria from './filterCriteria.vue';\nimport optionFile from './config.js';\nimport CryptoJS from 'crypto-js';\nconst loadin = ref(null);\nconst loadingFun = (val) => {\n if (val && !loadin.value) {\n loadin.value = ElLoading.service({\n target: '.create-view-drawer',\n lock: true,\n });\n return;\n }\n loadin.value?.close();\n loadin.value = null;\n};\nconst props = defineProps({\n permissionData: Object,\n selectOptions: {\n type: Object,\n default: () => ({}),\n },\n defaultCreateTimeString: {\n type: String,\n default: 'createTime',\n }, // 默认创建时间字符串\n});\nconst fieldSetting = ref([]);\nconst emit = defineEmits(['updataView']);\nconst dataFilterList = ref([]);\nconst dataInfo = reactive({\n Operator: 12, // 操作内容\n IsCustomSetting: false, // 是否自定义\n DocCustomId: null, // 自定义id\n ColumnType: 3, // 字段类型\n TextValue: null, // 文本内容\n NumberValue: null, // 数字内容\n NumberRangeValue: [], // 最大值最小值\n CloumnName: props.defaultCreateTimeString, // 字段名\n SelectRangeValue: [], // 下拉选择内容\n // 单选日期\n DateTimeOperatorValue: {\n TimeType: null,\n TimeValue: null,\n },\n // 多选日期范围对应的值\n DateTimeRangeValue: {\n TimeType: null,\n TimeValue: [],\n },\n // 自定义区间1:双区间,0:单区间\n DateTimeDynamicFilteringValue: {\n DateType: 1,\n },\n // 自定义范围区间对应的值\n DateTimeDynamicFilteringCustomize: [\n {\n PastOrFuture: 0,\n NumberValue: 365,\n DayType: 1,\n },\n {\n PastOrFuture: 2,\n NumberValue: 1,\n DayType: 1,\n },\n ],\n StartOrEnd: null,\n});\nconst { t, locale } = useI18n();\nconst activeMenu = ref('basicInfo');\nconst viewId = ref(null); // 视图ID\nconst viewTypeTitle = ref(t('newView'));\nconst visible = ref(false); // 视图窗口\nconst isType = ref(1); // 1:新增 0:编辑\nconst formData = reactive({\n viewName: '', // 视图名称\n permission: ['-1'], // 查阅人员\n selectedIconIndex: 0, // 图标\n});\nconst filterCriteriaRef = ref(null);\nconst basicFormRef = ref(null);\n// 校验\nconst rules = computed(() => ({\n viewName: [\n { required: true, message: t('required'), trigger: ['change'] },\n {\n validator: async (rule, value, callback) => {\n const {\n data: { code },\n } = await apiFunction.checkViewName({\n viewName: value,\n permissionCode: props.permissionData.permissionCode,\n id: viewId.value,\n });\n if (code !== 0 && viewId.value >= 0) {\n return callback(new Error(t('duplicateViewNames')));\n }\n if (value !== value.trim()) {\n return callback(new Error(t('haveSpace')));\n }\n if (value.trim().length > 20) {\n return callback(new Error(t('no20Characters')));\n }\n callback();\n },\n trigger: ['change'],\n },\n ],\n permission: [{ required: true, message: t('required'), trigger: ['blur', 'change'] }],\n}));\n// 查询人员\n// 数据源 - 将\"所有人\"的value改为'1'保持一致性\nconst options = ref([]);\nconst queryDepartmentStaff = async () => {\n await apiFunction\n .getViewReadEmployeeList()\n .then((res) => {\n if (res.data.code === 0) {\n options.value = res.data.content;\n } else {\n ElMessage.error(t('message'));\n }\n })\n .catch(() => {\n ElMessage.error(t('apiError'));\n });\n};\n// 图标选择配置\nconst iconColors = ref(['#125088', '#FF0000', '#F0D155', '#99C0E4', '#FF7A21', '#323338', '#34AA1A']);\n// 级联选择器配置\nconst cascadeProperty = {\n showPrefix: true,\n multiple: true,\n checkOnClickNode: true,\n renderTag: (obj) => obj.label,\n};\nconst handleChange = (newValues) => {\n if (newValues.length && newValues.length > 1) {\n if (newValues[0].includes('-1')) {\n formData.permission = formData.permission.filter((ite, i) => i > 0);\n } else {\n newValues.forEach((item) => {\n const isAll = item.some((el) => el === '-1');\n if (isAll) {\n formData.permission = ['-1'];\n }\n });\n }\n }\n};\n/* 筛选条件 */\nconst addFilterCondition = () => {\n dataFilterList.value.push({\n Operator: null,\n IsCustomSetting: null,\n DocCustomId: null,\n ColumnType: null,\n TextValue: null,\n NumberValue: null,\n NumberRangeValue: [],\n CloumnName: null,\n SelectRangeValue: [],\n DateTimeOperatorValue: { TimeType: null, TimeValue: null },\n DateTimeRangeValue: { TimeType: null, TimeValue: [] },\n DateTimeDynamicFilteringValue: {\n DateType: null,\n },\n DateTimeDynamicFilteringCustomize: [\n {\n PastOrFuture: null,\n NumberValue: null,\n DayType: null,\n },\n {\n PastOrFuture: null,\n NumberValue: null,\n DayType: null,\n },\n ],\n });\n};\nconst setPerson = (List) => {\n if (!List.length) {\n return ['-1'];\n }\n let result = [];\n const allList = [];\n options.value.forEach((item) => {\n if (item.children.length) {\n item.children.forEach((el) => {\n allList.push(el.value);\n if (List.includes(Number(el.value))) {\n result.push([item.value, el.value]);\n }\n });\n }\n });\n if (allList.length === List.length) {\n result = [['-1']];\n }\n return result;\n};\n/* 查询自定义筛选字段内容 */\nconst getViewFilterList = async () => {\n try {\n // 优先使用外部传入的selectOptions数据\n if (props.selectOptions && props.selectOptions.fieldList && props.selectOptions.fieldList.length > 0) {\n // 转换外部传入的fieldList数据为fieldSetting格式\n fieldSetting.value = props.selectOptions.fieldList.map((item) => ({\n fieldName: item.fieldName,\n fieldTypeId: item.fieldTypeId,\n fieldSelectOptions: item.fieldSelectOptions,\n key: item.key || item.fieldName,\n isDoc: item.isDoc || false,\n }));\n } else {\n // 如果没有外部数据,则回退到API调用\n const {\n data: { code, content, message },\n } = await apiFunction.getViewFilterList({ permissionCode: props.permissionData.permissionCode });\n const params = {\n docCode: props.permissionData.docCode,\n status: 1,\n fieldName: '',\n consDate: [],\n startIndex: 0,\n count: 100,\n };\n const custom = await apiFunction.querySetting(params);\n if (code !== 0) {\n ElMessage.error(t(message));\n return;\n }\n const fieldSettings = content.map((item) => ({\n fieldName: item.fieldKey,\n fieldTypeId: item.fieldTypeId,\n fieldSelectOptions: item.fieldSelectOptions,\n key: item.fieldKey,\n isDoc: false,\n }));\n let docCustomSettings = [];\n if (custom.data.code === 0) {\n docCustomSettings = custom.data.content.data\n .filter((it) => it.fieldTypeId !== 9)\n .map((item) => ({\n fieldName: item.fieldName,\n fieldTypeId: item.fieldTypeId,\n fieldSelectOptions: item.fieldSelectOptions,\n key: item.docCustomId,\n isDoc: true,\n }));\n }\n fieldSetting.value = [...fieldSettings, ...docCustomSettings];\n }\n const createTimeSetting = fieldSetting.value.find((item) => item.key === props.defaultCreateTimeString);\n if (!createTimeSetting) {\n fieldSetting.value.unshift({\n fieldName: props.defaultCreateTimeString,\n fieldKey: props.defaultCreateTimeString,\n fieldTypeId: 3,\n fieldSelectOptions: [],\n key: props.defaultCreateTimeString,\n isDoc: false,\n });\n }\n } catch (error) {\n ElMessage.error(t('apiError'));\n }\n};\nconst open = async (id, type) => {\n try {\n loadingFun(true);\n activeMenu.value = 'basicInfo';\n visible.value = true;\n await queryDepartmentStaff();\n await getViewFilterList();\n isType.value = type;\n if (id) {\n viewTypeTitle.value = type ? t('copyView') : t('editView');\n if (!isType.value) {\n viewId.value = id;\n }\n // 编辑逻辑待补充\n const { data } = await apiFunction.getViewDetail(id, !!type);\n if (data.code === 0) {\n dataFilterList.value = data.content.fieldString ? [...JSON.parse(data.content.fieldString)] : [{ ...dataInfo }];\n formData.viewName = type\n ? `${t('copy')}${['zh-cn', 'zh-tw'].includes(locale.value) ? '' : ' '}${data.content.id < 0 && (data.content.viewName === '全部' || data.content.viewName === 'all') ? t('all') : data.content.viewName}`\n : data.content.id < 0 && (data.content.viewName === '全部' || data.content.viewName === 'all')\n ? t('all')\n : data.content.viewName;\n formData.permission = setPerson(data.content.viewPermissionEmpId);\n formData.selectedIconIndex = Number(data.content.meta);\n }\n } else {\n dataFilterList.value = [{ ...dataInfo }];\n }\n } catch (error) {\n ElMessage.error(t('apiError'));\n } finally {\n loadingFun(false);\n basicFormRef.value.clearValidate();\n }\n};\nconst close = () => {\n viewTypeTitle.value = t('newView');\n viewId.value = null;\n visible.value = false;\n dataFilterList.value = [{ ...dataInfo }];\n formData.viewName = '';\n formData.permission = ['-1'];\n formData.selectedIconIndex = 0;\n basicFormRef.value.clearValidate();\n};\n// 部门人员\nconst getDepartmentStaff = (list) => {\n let result = [];\n if (list.length === 1 && list[0].includes('-1')) {\n options.value.forEach((item) => {\n if (item.children.length) {\n item.children.forEach((el) => result.push(el.value));\n }\n });\n return result;\n }\n list.forEach((item) => {\n if (item.length > 1) {\n result.push(item[1]);\n } else if (item.length === 1) {\n result.push(item[0]);\n }\n });\n return result;\n};\n// 解析数据筛选\nconst validateField = (val) => {\n if (val === null || (Array.isArray(val) && !val.length)) {\n return false;\n }\n return true;\n};\n// 时间经度处理\nconst getTimeLongitude = (val) => {\n const obj = optionFile.timePrecisionOptions.find((el) => el.value === val);\n return obj.label === 'daily' ? 'day' : obj.label;\n};\nconst getTimeFormat = (val) => optionFile.timePrecisionOptions.find((el) => el.value === val)?.timeFormat;\n// 动态筛选内容处理\nconst getDynamicFilter = (val, sql) => {\n const obj = optionFile.dynamicFilteringOptions.find((el) => el.value === val);\n return sql ? obj.sql : obj.label;\n};\n// 动态筛选过去、未来处理\nconst getFutureOptions = (val) => {\n const obj = optionFile.pastOrFutureOptions.find((el) => el.value === val);\n return obj.label;\n};\n// 动态筛选时间类型处理\nconst getDateType = (val) => {\n const obj = optionFile.dayTypeOptions.find((el) => el.value === val);\n return obj.label === 'daily' ? 'day' : obj.label;\n};\n\nfunction calculateTimestamp(timestamp, dimension) {\n // 定义各维度对应的毫秒数\n const millisecondsPerUnit = {\n 0: 24 * 60 * 60 * 1000,\n 1: 60 * 60 * 1000,\n 2: 60 * 1000,\n 3: 1000,\n };\n const unitMs = millisecondsPerUnit[dimension];\n return +timestamp + unitMs;\n}\n\n// 处理SQL语句\nconst getSqlInfo = (item) => {\n let title = fieldSetting.value.find((el) => el.key === item.CloumnName).fieldName;\n let sqlTitle = item.IsCustomSetting ? `\"${title}\"` : title;\n // 生产工单入库未完字段单独处理\n if (sqlTitle === 'inboundRemain') {\n sqlTitle = '(required_throughput-COALESCE(inboundQuantity,0)+COALESCE(returnQuantity,0))';\n }\n let sql = `${sqlTitle} ${optionFile.operatorOptions.find((el) => el.value === item.Operator)?.sql}`;\n let str = '';\n // 处理文本sql\n if ([1, 5, 6].includes(item.ColumnType)) {\n if (item.TextValue) {\n if (item.Operator === 5) {\n str = `${sql} '${item.TextValue}'`;\n } else if (item.Operator === 6) {\n str = `(${sql} '${item.TextValue}' or ${sqlTitle} is null)`;\n } else if (item.Operator === 8) {\n str = `(${sql} '%${item.TextValue}%' or ${sqlTitle} is null)`;\n } else {\n str = `${sql} '%${item.TextValue}%'`;\n }\n } else {\n if (item.Operator === 10) {\n str = `(${sql} null and ${sqlTitle} != '')`;\n } else if (item.Operator === 9) {\n str = `(${sql} null or ${sqlTitle} = '')`;\n } else {\n str = `${sql} null`;\n }\n }\n }\n // 处理下拉sql\n if ([7, 8].includes(item.ColumnType)) {\n if (item.SelectRangeValue.length) {\n if (item.IsCustomSetting && item.ColumnType === 8) {\n str = `STRING_TO_ARRAY(replace(replace(replace(${sqlTitle}, '\"', ''), '[', ''), ']', ''), ',')::text[] && STRING_TO_ARRAY('${item.SelectRangeValue.toString()}', ',')::text[] =${item.Operator === 15 ? true : false}`;\n } else {\n if (item.ColumnType === 7) {\n str = `${sql} '${item.SelectRangeValue}'`;\n } else {\n str = `${sql} (${item.SelectRangeValue.toString()})`;\n }\n }\n } else {\n if (item.Operator === 10 && item.IsCustomSetting) {\n str = `(${sql} null and ${sqlTitle} != '')`;\n } else if (item.Operator === 9 && item.IsCustomSetting) {\n str = `(${sql} null or ${sqlTitle} = '')`;\n } else {\n str = `${sql} null`;\n }\n }\n }\n // 处理数字sql\n if (item.ColumnType === 2 || item.ColumnType === 9) {\n if (item.NumberRangeValue.length) {\n if (item.Operator === 14) {\n str = `(${sql} ${item.NumberRangeValue[0]} AND ${item.NumberRangeValue[1]} or ${sqlTitle} is null)`;\n } else {\n str = `${sql} ${item.NumberRangeValue[0]} AND ${item.NumberRangeValue[1]}`;\n }\n } else {\n str = `${sql} null`;\n }\n }\n // 处理日期sql\n if ([3, 4].includes(item.ColumnType)) {\n // 处理日期区间\n let dateTitle = item.IsCustomSetting\n ? `\"${title}_${item.StartOrEnd ? 'end' : 'start'}\"`\n : `${title}_${item.StartOrEnd ? 'end' : 'start'}`;\n if (item.ColumnType === 4) {\n sql = `${dateTitle} ${optionFile.operatorOptions.find((el) => el.value === item.Operator)?.sql}`;\n }\n if ([1, 2, 3, 4].includes(item.Operator)) {\n str = `${sql} ${item.DateTimeOperatorValue.TimeValue}`;\n }\n if ([5].includes(item.Operator)) {\n const endTime = calculateTimestamp(item.DateTimeOperatorValue.TimeValue, item.DateTimeOperatorValue.TimeType);\n str =\n item.StartOrEnd === null\n ? `${sqlTitle} >= ${item.DateTimeOperatorValue.TimeValue} AND ${sqlTitle} < ${endTime}`\n : `${dateTitle} >= ${item.DateTimeOperatorValue.TimeValue} AND ${dateTitle} < ${endTime}`;\n }\n if ([9, 10].includes(item.Operator)) {\n str = `${sql} null`;\n }\n if (item.Operator === 11) {\n str = `${sql} ${dayjs(item.DateTimeRangeValue.TimeValue[0]).format('x')} AND ${calculateTimestamp(dayjs(item.DateTimeRangeValue.TimeValue[1]).format('x'), item.DateTimeRangeValue.TimeType)}`;\n }\n if (item.Operator === 12) {\n // 动态筛选不需要处理类型\n if ([4, 5, 6, 7, 8].includes(item.DateTimeDynamicFilteringValue.DateType)) {\n str = `${sql} ${getDynamicFilter(item.DateTimeDynamicFilteringValue.DateType, true)}`;\n }\n // 天\n if (item.DateTimeDynamicFilteringValue.DateType === 2) {\n str = `${sql} currentday`;\n }\n // 昨天\n if (item.DateTimeDynamicFilteringValue.DateType === 3) {\n str = `${sql} past_day_1`;\n }\n if (item.DateTimeDynamicFilteringValue.DateType === 0) {\n let rangeSql = `${getFutureOptions(item.DateTimeDynamicFilteringCustomize[0].PastOrFuture)}_${getDateType(item.DateTimeDynamicFilteringCustomize[0].DayType)}_${item.DateTimeDynamicFilteringCustomize[0].NumberValue}`;\n if (item.DateTimeDynamicFilteringCustomize[0].PastOrFuture) {\n str = `${sql} currentend AND ${rangeSql}`;\n } else {\n str = `${sql} ${rangeSql} AND currentstart`;\n }\n }\n // 自定义范围\n if (item.DateTimeDynamicFilteringValue.DateType === 1) {\n let startSql = `${getFutureOptions(item.DateTimeDynamicFilteringCustomize[0].PastOrFuture)}_${getDateType(item.DateTimeDynamicFilteringCustomize[0].DayType)}_${item.DateTimeDynamicFilteringCustomize[0].NumberValue}`;\n let endSql = `${getFutureOptions(item.DateTimeDynamicFilteringCustomize[1].PastOrFuture)}_${getDateType(item.DateTimeDynamicFilteringCustomize[1].DayType)}_${item.DateTimeDynamicFilteringCustomize[1].NumberValue}`;\n if (item.DateTimeDynamicFilteringCustomize[0].PastOrFuture === 2) {\n startSql = `${getFutureOptions(item.DateTimeDynamicFilteringCustomize[0].PastOrFuture)}${getDateType(item.DateTimeDynamicFilteringCustomize[0].DayType)}`;\n }\n if (item.DateTimeDynamicFilteringCustomize[1].PastOrFuture === 2) {\n endSql = `${getFutureOptions(item.DateTimeDynamicFilteringCustomize[1].PastOrFuture)}${getDateType(item.DateTimeDynamicFilteringCustomize[1].DayType)}`;\n }\n str = `${sql} ${startSql} AND ${endSql}`;\n }\n }\n }\n return str;\n};\n// 获取日期区间信息\nconst getIntervalInfo = (item) => {\n let obj = {};\n if ([1, 2, 3, 4, 5].includes(item.Operator)) {\n obj = {\n precision: getTimeLongitude(item.DateTimeOperatorValue.TimeType),\n value: item.DateTimeOperatorValue.TimeValue,\n judgeLogic: item.Operator,\n };\n }\n if ([9, 10].includes(item.Operator)) {\n obj = {\n value: '',\n judgeLogic: item.Operator,\n };\n }\n if (item.Operator === 11) {\n obj = {\n precision: getTimeLongitude(item.DateTimeRangeValue.TimeType),\n value: item.DateTimeRangeValue.TimeValue,\n judgeLogic: item.Operator,\n };\n }\n if (item.Operator === 12) {\n if (item.DateTimeDynamicFilteringValue.DateType === 0) {\n obj = {\n value: getDynamicFilter(item.DateTimeDynamicFilteringValue.DateType),\n customType: getFutureOptions(item.DateTimeDynamicFilteringCustomize[0].PastOrFuture),\n customUnit: getDateType(item.DateTimeDynamicFilteringCustomize[0].DayType),\n customUum: item.DateTimeDynamicFilteringCustomize[0].NumberValue,\n judgeLogic: item.Operator,\n };\n } else if (item.DateTimeDynamicFilteringValue.DateType === 1) {\n obj = {\n value: getDynamicFilter(item.DateTimeDynamicFilteringValue.DateType),\n customTypeStart: getFutureOptions(item.DateTimeDynamicFilteringCustomize[0].PastOrFuture),\n customUnitStart: getDateType(item.DateTimeDynamicFilteringCustomize[0].DayType),\n customNumStart: item.DateTimeDynamicFilteringCustomize[0].NumberValue,\n customTypeEnd: getFutureOptions(item.DateTimeDynamicFilteringCustomize[1].PastOrFuture),\n customUnitEnd: getDateType(item.DateTimeDynamicFilteringCustomize[1].DayType),\n customNumEnd: item.DateTimeDynamicFilteringCustomize[1].NumberValue,\n judgeLogic: item.Operator,\n };\n } else {\n obj = {\n value: getDynamicFilter(item.DateTimeDynamicFilteringValue.DateType),\n judgeLogic: item.Operator,\n };\n }\n }\n return obj;\n};\n// 获取其余字段信息\nconst getInfo = (item) => {\n let obj = {};\n if ([1, 5, 6].includes(item.ColumnType) && item.TextValue) {\n obj = {\n first: item.TextValue,\n };\n }\n if ([7, 8].includes(item.ColumnType) && item.SelectRangeValue.length) {\n obj = {\n first: item.SelectRangeValue.toString(),\n };\n }\n if ((item.ColumnType === 2 || item.ColumnType === 9) && item.NumberRangeValue.length) {\n obj = {\n first: item.NumberRangeValue[0],\n second: item.NumberRangeValue[1],\n };\n }\n if ([3].includes(item.ColumnType)) {\n if ([1, 2, 3, 4, 5].includes(item.Operator)) {\n obj = {\n first: getTimeLongitude(item.DateTimeOperatorValue.TimeType),\n second: item.DateTimeOperatorValue.TimeValue,\n };\n }\n if (item.Operator === 11) {\n obj = {\n first: getTimeLongitude(item.DateTimeRangeValue.TimeType),\n second: item.DateTimeRangeValue.TimeValue[0],\n third: item.DateTimeRangeValue.TimeValue[1],\n };\n }\n if (item.Operator === 12) {\n if (item.DateTimeDynamicFilteringValue.DateType === 0) {\n obj = {\n first: getDynamicFilter(item.DateTimeDynamicFilteringValue.DateType),\n second: getFutureOptions(item.DateTimeDynamicFilteringCustomize[0].PastOrFuture),\n four: getDateType(item.DateTimeDynamicFilteringCustomize[0].DayType),\n third: item.DateTimeDynamicFilteringCustomize[0].NumberValue,\n judgeLogic: item.Operator,\n };\n } else if (item.DateTimeDynamicFilteringValue.DateType === 1) {\n obj = {\n first: getDynamicFilter(item.DateTimeDynamicFilteringValue.DateType),\n second: getFutureOptions(item.DateTimeDynamicFilteringCustomize[0].PastOrFuture),\n third: item.DateTimeDynamicFilteringCustomize[0].NumberValue,\n four: getDateType(item.DateTimeDynamicFilteringCustomize[0].DayType),\n five: getFutureOptions(item.DateTimeDynamicFilteringCustomize[1].PastOrFuture),\n six: item.DateTimeDynamicFilteringCustomize[1].NumberValue,\n seven: getDateType(item.DateTimeDynamicFilteringCustomize[1].DayType),\n judgeLogic: item.Operator,\n };\n } else {\n obj = {\n first: getDynamicFilter(item.DateTimeDynamicFilteringValue.DateType),\n };\n }\n }\n }\n return { ...obj };\n};\nconst getFeild = (item) => {\n let str = {};\n if (item.ColumnType === 4) {\n const type = item.StartOrEnd ? 'end' : 'start';\n str[type] = { ...getIntervalInfo(item) };\n } else {\n str = { ...getInfo(item) };\n }\n return { ...str };\n};\n// 获取筛选字符串内容\nconst getStringInfo = (item) => {\n let str = [];\n let field = {};\n field = fieldSetting.value.find((el) => el.key === item.CloumnName);\n str.push(field.key === 'salesOrderNumber' ? field.key : field.fieldName);\n if (validateField(item.StartOrEnd)) {\n str.push(item.StartOrEnd ? 'intervalEnd' : 'intervalStart');\n }\n if (validateField(item.Operator)) {\n str.push(optionFile.operatorOptions.find((el) => el.value === item.Operator)?.label);\n }\n if (validateField(item.TextValue)) {\n str.push(item.TextValue);\n }\n if (validateField(item.SelectRangeValue)) {\n if (field.fieldSelectOptions) {\n if (item.IsCustomSetting) {\n str.push(item.SelectRangeValue.toString());\n } else {\n try {\n // 验证 fieldSelectOptions 是有效的 JSON 字符串\n if (\n typeof field.fieldSelectOptions === 'string' &&\n field.fieldSelectOptions.trim() &&\n ((field.fieldSelectOptions.trim().startsWith('[') && field.fieldSelectOptions.trim().endsWith(']')) ||\n (field.fieldSelectOptions.trim().startsWith('{') && field.fieldSelectOptions.trim().endsWith('}')))\n ) {\n const labelList = JSON.parse(field.fieldSelectOptions)\n .filter((el) => item.SelectRangeValue.includes(el.value))\n .map((el) => el.key);\n str.push(labelList.toString());\n } else {\n // 如果不是有效的 JSON 字符串,直接使用 SelectRangeValue\n str.push(item.SelectRangeValue.toString());\n }\n } catch (error) {\n // 解析失败时直接使用 SelectRangeValue\n str.push(item.SelectRangeValue.toString());\n }\n }\n } else {\n const list = [];\n // 从统一的selectOptions中获取字段选项\n const fieldOptions = props.selectOptions[item.CloumnName] || [];\n if (Array.isArray(fieldOptions)) {\n fieldOptions.forEach((el) => {\n if (item.SelectRangeValue.includes(el.value)) {\n list.push(el.label);\n }\n });\n }\n // 如果没有找到对应的选项,直接使用值\n str.push(list.length ? list.toString() : item.SelectRangeValue.toString());\n }\n }\n if (validateField(item.NumberRangeValue)) {\n str.push(item.NumberRangeValue.toString());\n }\n if (validateField(item.DateTimeOperatorValue.TimeType)) {\n str.push(\n getTimeLongitude(item.DateTimeOperatorValue.TimeType),\n dayjs(item.DateTimeOperatorValue.TimeValue).format(getTimeFormat(item.DateTimeOperatorValue.TimeType)),\n );\n }\n if (validateField(item.DateTimeRangeValue.TimeType)) {\n str.push(getTimeLongitude(item.DateTimeRangeValue.TimeType));\n }\n if (validateField(item.DateTimeRangeValue.TimeType)) {\n str.push(\n dayjs(item.DateTimeRangeValue.TimeValue[0]).format(getTimeFormat(item.DateTimeRangeValue.TimeType)),\n dayjs(item.DateTimeRangeValue.TimeValue[1]).format(getTimeFormat(item.DateTimeRangeValue.TimeType)),\n );\n }\n if (validateField(item.DateTimeDynamicFilteringValue.DateType)) {\n str.push(getDynamicFilter(item.DateTimeDynamicFilteringValue.DateType));\n }\n if (validateField(item.DateTimeDynamicFilteringCustomize[0].DayType)) {\n str.push(\n getFutureOptions(item.DateTimeDynamicFilteringCustomize[0].PastOrFuture),\n item.DateTimeDynamicFilteringCustomize[0].NumberValue,\n getDateType(item.DateTimeDynamicFilteringCustomize[0].DayType),\n );\n }\n if (validateField(item.DateTimeDynamicFilteringCustomize[1].DayType)) {\n str.push(\n getFutureOptions(item.DateTimeDynamicFilteringCustomize[1].PastOrFuture),\n item.DateTimeDynamicFilteringCustomize[1].NumberValue,\n getDateType(item.DateTimeDynamicFilteringCustomize[1].DayType),\n );\n }\n return str.toString();\n};\nconst parseDataFilter = () => {\n const filterObj = {\n viewField: [],\n filterString: [],\n whereSql: '',\n };\n const sqlList = [];\n dataFilterList.value.forEach((item) => {\n let fieldObj = fieldSetting.value.find((el) => el.key === item.CloumnName);\n sqlList.push(getSqlInfo(item));\n filterObj.filterString.push(getStringInfo(item));\n filterObj.viewField.push({\n fieldCode: fieldObj.fieldName,\n fieldKey: item.IsCustomSetting ? fieldObj.fieldName : fieldObj.key,\n docCustomId: item.DocCustomId || '',\n fieldTypeId: item.ColumnType,\n judgeLogic: item.ColumnType === 4 ? null : item.Operator,\n fieldValue: JSON.stringify(getFeild(item)),\n isCustom: item.IsCustomSetting ? 1 : 0,\n });\n });\n sqlList.forEach((ite, ind) => {\n filterObj.whereSql += ind ? ` AND ${ite}` : ite;\n });\n return { ...filterObj };\n};\nconst encryptionSql = (sql) => {\n const key = CryptoJS.enc.Utf8.parse('3847201956372841'); // 密钥,16字节\n const iv = CryptoJS.enc.Utf8.parse('3847201956372841'); // 偏移量,16字节\n const encrypted = CryptoJS.AES.encrypt(sql, key, {\n iv: iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n return encrypted.toString();\n};\nconst saveView = async () => {\n try {\n const filterValid = await filterCriteriaRef.value.validateAllForms();\n const valid = await basicFormRef.value.validate();\n if (valid && filterValid) {\n loadingFun(true);\n const { viewField, filterString, whereSql } = parseDataFilter();\n const params = {\n meta: String(formData.selectedIconIndex),\n viewName: formData.viewName,\n permissionCode: props.permissionData.permissionCode,\n viewPermissionEmpId: getDepartmentStaff(formData.permission),\n viewField: JSON.stringify(viewField),\n filterString: JSON.stringify(filterString),\n whereSql: encryptionSql(whereSql),\n fieldString: JSON.stringify(dataFilterList.value),\n };\n if (isType.value) {\n const {\n data: { code },\n } = await apiFunction.addView(params);\n if (code === 0) {\n ElMessage.success(t('addSuccess'));\n emit('updataView');\n close();\n }\n } else {\n params.id = viewId.value;\n const {\n data: { code },\n } = await apiFunction.editView(params);\n if (code === 0) {\n ElMessage.success(t('editSuccess'));\n emit('updataView');\n close();\n }\n }\n }\n } catch (err) {\n ElMessage.error(t('someColumnRequired'));\n } finally {\n loadingFun(false);\n }\n};\ndefineExpose({\n open,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.drawer-box {\n width: 100%;\n}\n.view-box {\n margin-top: -2rem;\n margin-left: -1rem;\n width: 100%;\n height: 100%;\n}\n.view-title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.view-content {\n display: flex;\n width: 100%;\n height: calc(100% - 1.5rem);\n}\n.el-menu-vertical-demo {\n width: 150px;\n border-right: 1px solid #eee;\n}\n.drawer-content {\n width: 90%;\n height: 95%;\n overflow: auto;\n margin-left: 10px;\n}\n.icon-options {\n display: flex;\n gap: 12px;\n}\n.icon-options .el-button {\n width: 36px;\n height: 36px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.icon-options .el-button.active {\n border-width: 2px;\n}\n.radio-icon {\n font-size: 18px;\n}\n.drawer-footer {\n position: absolute;\n bottom: 1rem;\n right: 2rem;\n}\n.cursor {\n cursor: pointer;\n}\n</style>\n","import { ref } from 'vue';\n// 递归收集所有人员ID\nexport function getAllPersonIds(opts) {\n const ids = [];\n opts.forEach((option) => {\n // 如果有子项,说明是部门,递归收集子项\n if (option.children && option.children.length > 0) {\n ids.push(...getAllPersonIds(option.children));\n } else if (option.value !== '-1') {\n // 排除\"所有人\"自身\n ids.push(option.value);\n }\n });\n return ids;\n}\n// 收集指定部门下的所有人员ID\nexport function getDeptPersonIds(deptId, opts) {\n const ids = [];\n const findDept = (options) => {\n for (const opt of options) {\n if (opt.value === deptId && opt.children) {\n // 收集当前部门下的所有人员\n opt.children.forEach((child) => ids.push(child.value));\n return true;\n }\n if (opt.children && findDept(opt.children)) {\n return true;\n }\n }\n return false;\n };\n findDept(opts);\n return ids;\n}\n\n// 导出回显相关工具函数\nexport const echoUtils = {\n // 1. 初始化部门-人员映射表\n initDeptMap(opts) {\n const deptPersonMap = {};\n const traverse = (options) => {\n options.forEach((opt) => {\n if (opt.children && opt.children.length > 0) {\n // 记录部门下所有人员ID\n deptPersonMap[opt.value] = opt.children.map((child) => child.value);\n traverse(opt.children); // 递归处理子部门\n }\n });\n };\n traverse(opts);\n return deptPersonMap;\n },\n\n // 2. 初始化独立人员ID列表(无下级的非\"所有人\"选项)\n initPersonIds(opts) {\n const personIds = [];\n const traverse = (options) => {\n options.forEach((opt) => {\n if (opt.value !== '-1' && (!opt.children || opt.children.length === 0)) {\n personIds.push(opt.value);\n } else if (opt.children && opt.children.length > 0) {\n traverse(opt.children);\n }\n });\n };\n traverse(opts);\n return personIds;\n },\n\n // 3. 递归收集所有人员ID(用于判断全量人员)\n getAllPersonIds(opts) {\n const ids = [];\n opts.forEach((option) => {\n if (option.children && option.children.length > 0) {\n ids.push(...this.getAllPersonIds(option.children));\n } else if (option.value !== '-1') {\n // 排除\"所有人\"\n ids.push(option.value);\n }\n });\n return ids;\n },\n\n getEchoValues(personIdList, options) {\n // 1. 将后端返回的数字ID转为字符串(关键修复)\n const stringIdList = personIdList.map((id) => String(id));\n\n // 2. 初始化依赖数据(全量人员ID是字符串)\n const deptPersonMap = this.initDeptMap(options);\n const allPersons = this.getAllPersonIds(options); // 如 [\"8\", \"1\", \"11\", \"10\", \"9\"]\n\n // 3. 修正:用转换后的字符串ID列表判断全量\n if (stringIdList.length === allPersons.length && stringIdList.every((id) => allPersons.includes(id))) {\n return ['-1']; // 此时会正确触发“所有人”回显\n }\n\n const echoValues = [];\n const remainingIds = [...stringIdList]; // 用转换后的ID处理后续逻辑\n\n // 剩余逻辑不变...\n Object.entries(deptPersonMap).forEach(([deptId, deptPersons]) => {\n const allIncluded = deptPersons.every((personId) => remainingIds.includes(personId));\n if (allIncluded) {\n echoValues.push(deptId);\n deptPersons.forEach((id) => {\n const index = remainingIds.indexOf(id);\n if (index > -1) remainingIds.splice(index, 1);\n });\n }\n });\n\n echoValues.push(...remainingIds);\n return echoValues;\n },\n};\n// 图标类型 颜色映射\nexport function iconType(type) {\n const colorMap = {\n 0: '#125088',\n 1: '#FF0000',\n 2: '#F0D155',\n 3: '#99C0E4',\n 4: '#FF7A21',\n 5: '#323338',\n 6: '#34AA1A',\n };\n return { color: colorMap[type] || '#909399' };\n}\n\n// 获取图标颜色数组\n\nexport function iconColors() {\n return ref(['#125088', '#FF0000', '#F0D155', '#99C0E4', '#FF7A21', '#323338', '#34AA1A']);\n}\n\n/**\n * 转换筛选条件列表为 popover显示的筛选过滤条件 格式\n * @param {Array} list - 后端返回的筛选条件数组\n * @returns {Array} 转换后的模板字符串数组\n */\n/**\n * 转换筛选条件列表为目标格式\n * @param {Array} list - 后端返回的筛选条件数组(可能为null/undefined)\n * @returns {Array} 转换后的模板字符串数组(默认返回空数组)\n */\n// 操作符选项映射表(内置)\nconst operatorOptions = [\n { label: 'greaterThan', value: 1 },\n { label: 'greaterThanOrEqualTo', value: 2 },\n { label: 'lessThan', value: 3 },\n { label: 'lessThanOrEqualTo', value: 4 },\n { label: 'equalTo', value: 5 },\n { label: 'notEqualTo', value: 6 },\n { label: 'contains', value: 7 },\n { label: 'notContains', value: 8 },\n { label: 'yesEmpty', value: 9 },\n { label: 'notEmpty', value: 10 },\n { label: 'selectRange', value: 11 },\n { label: 'dynamicFiltering', value: 12 },\n { label: 'inRange', value: 13 },\n { label: 'notInRange', value: 14 },\n { label: 'isOneOf', value: 15 },\n { label: 'notAnyOf', value: 16 },\n];\n\n/**\n * 根据value获取operatorOptions中对应的label\n * @param {number} value - 操作符的value(如1、12、15等)\n * @returns {string} 对应的label,若未找到则返回空字符串\n */\nexport function getOperatorLabel(value) {\n // 查找匹配的选项\n const option = operatorOptions.find((item) => item.value === value);\n // 存在则返回label,否则返回空字符串\n return option ? option.label : '';\n}\nexport function processFilterData(editableTabs) {\n // 校验入参是否为数组\n if (!Array.isArray(editableTabs)) {\n console.error('processFilterData:入参必须是数组');\n return [];\n }\n\n return editableTabs.map((item) => {\n try {\n // 1. 校验filterString是否为有效字符串\n if (!item?.filterString || typeof item.filterString !== 'string') {\n return { ...item, parsedFilter: null };\n }\n\n // 2. 解析JSON字符串\n const parsedArray = JSON.parse(item.filterString);\n\n // 3. 确保解析结果是数组\n if (!Array.isArray(parsedArray)) {\n console.warn(`processFilterData:id为${item.id || '未知'}的filterString解析结果非数组`);\n return { ...item, parsedFilter: null };\n }\n\n // 4. 转换为二维数组(按逗号分割子项)\n const twoDimensionalArray = parsedArray.map((subItem) => {\n if (typeof subItem !== 'string') {\n return [subItem]; // 非字符串子项包裹为单元素数组\n }\n // 分割并去除首尾空格\n return subItem.split(',').map((part) => part.trim());\n });\n\n return { ...item, parsedFilter: twoDimensionalArray };\n } catch (error) {\n console.error(`processFilterData:解析id为${item.id || '未知'}的filterString失败:`, error);\n return { ...item, parsedFilter: null };\n }\n });\n}\n\n// 通用工具函数:从parsedFilter中查找目标项\nexport function findTargetItem(parsedFilter, field) {\n return Array.isArray(parsedFilter) ? parsedFilter.find((item) => Array.isArray(item) && item.includes(field)) : null;\n}\n// 1. 输入类型字段处理函数(取第三项,控制禁用)\nexport function handleInputField(parsedFilter, field, valueRef, disabledRef) {\n const targetItem = findTargetItem(parsedFilter, field);\n const thirdItem = targetItem?.[2] ?? '';\n valueRef.value = thirdItem;\n disabledRef.value = !!thirdItem;\n}\n\n// 2. 下拉选择类型字段处理函数(取第三项及以后,映射value)\nexport function handleSelectField(parsedFilter, field, valueRef, disabledRef, mapList) {\n const targetItem = findTargetItem(parsedFilter, field);\n const afterThirdItems = Array.isArray(targetItem) ? targetItem.slice(2) : [];\n const mappedValues = afterThirdItems\n .map((text) => mapList.find((item) => item.text === text)?.value ?? null)\n .filter((val) => val !== null);\n valueRef.value = mappedValues;\n disabledRef.value = mappedValues.length > 0;\n}\n\n// 3. 新增:时间范围类型处理函数(含selectRange,取最后两项并转换时间戳)\nexport function handleDateRangeField(parsedFilter, field, valueRef, disabledRef) {\n const targetItem = findTargetItem(parsedFilter, field);\n // 校验:目标项存在且包含selectRange,且至少有5项(确保最后两项是时间)\n const isValid = Array.isArray(targetItem) && targetItem.includes('selectRange') && targetItem.length >= 5;\n\n if (isValid) {\n // 取最后两项(开始时间、结束时间)\n const [startStr, endStr] = targetItem.slice(-2);\n // 转换为时间戳(结束时间默认补到当天23:59:59)\n const startTimestamp = new Date(startStr).getTime();\n const endDate = new Date(endStr);\n endDate.setHours(23, 59, 59, 999); // 补全结束时间到当天最后一刻\n const endTimestamp = endDate.getTime();\n\n valueRef.value = [startTimestamp, endTimestamp];\n disabledRef.value = true; // 有效时禁用\n } else {\n valueRef.value = [];\n disabledRef.value = false; // 无效时不禁用\n }\n}\n//处理下拉 key value 不一致问题 统一转为 text value\nexport function transformToTextValue(array, textField, valueField) {\n // 容错处理:原始数组为空或非数组时返回空数组\n if (!Array.isArray(array)) return [];\n\n return array.map((item) => ({\n text: item?.[textField] ?? '',\n value: item?.[valueField] ?? '',\n }));\n}\n","<template>\n <el-drawer\n v-model=\"visible\"\n body-class=\"drawer_body_class\"\n style=\"margin-bottom: 0\"\n :z-index=\"2000\"\n size=\"45%\"\n :with-header=\"false\"\n :append-to-body=\"false\"\n :close-on-press-escape=\"false\"\n :before-close=\"closeViewListDrawer\"\n data-test-id=\"EL-DRAWER-jasb7C\"\n >\n <template #default>\n <div class=\"drawer_header_class_content\" data-test-id=\"DIV-rXpQmF\">\n <div class=\"drawer_title\" data-test-id=\"DIV-zQlq1H\">\n <span class=\"mdi mdi-list-box-outline\" data-test-id=\"SPAN-HFpXUh\" />\n <span class=\"title_text\" data-test-id=\"SPAN-0Iut9t\">\n {{ t('viewList') }}\n </span>\n <el-tooltip effect=\"dark\" :content=\"t('viewListTips')\" placement=\"right\" data-test-id=\"EL-TOOLTIP-hHb1YY\">\n <span class=\"mdi mdi-help-circle-outline title_text_right_icon\" data-test-id=\"SPAN-UENqYR\" />\n </el-tooltip>\n </div>\n <el-button link type=\"primary\" data-test-id=\"EL-BUTTON-4ZFjLQ\" @click=\"addView\">\n <el-icon class=\"mdi mdi-plus\" style=\"margin-right: 0.5rem; font-size: 18px\" data-test-id=\"EL-ICON-0ylmiQ\">\n </el-icon>\n {{ t('createView') }}\n </el-button>\n </div>\n <div class=\"list-body\" data-test-id=\"DIV-Xmx3qv\">\n <VueDraggable\n ref=\"draggableRef\"\n v-model=\"allViews\"\n :target=\"target\"\n :handle=\"handle\"\n data-test-id=\"VUEDRAGGABLE-dL4IT9\"\n @end=\"handleDragEnd\"\n >\n <el-table\n :data=\"allViews\"\n border\n class=\"commonTable sort-target\"\n header-cell-class-name=\"tableHeaderCell\"\n header-row-class-name=\"tableHeader\"\n height=\"100%\"\n data-test-id=\"EL-TABLE-jJswcP\"\n >\n <el-table-column :width=\"50\" align=\"center\" data-test-id=\"EL-TABLE-COLUMN-gVOhBD\">\n <template #default>\n <el-icon class=\"mdi mdi-drag dragindicator\" style=\"cursor: move\" data-test-id=\"EL-ICON-XVO0RZ\" />\n </template>\n </el-table-column>\n <el-table-column label=\"#\" :width=\"70\" align=\"center\" data-test-id=\"EL-TABLE-COLUMN-EGE1qk\">\n <template #default=\"{ $index }\">\n {{ $index + 1 }}\n </template>\n </el-table-column>\n <el-table-column\n :label=\"t('viewName')\"\n prop=\"name\"\n show-overflow-tooltip\n data-test-id=\"EL-TABLE-COLUMN-BX8fIe\"\n >\n <template #default=\"scope\">\n <el-icon\n class=\"mdi mdi-book-open-blank-variant\"\n :style=\"{ color: iconType(Number(scope.row.meta)).color }\"\n data-test-id=\"EL-ICON-IJLII3\"\n />\n {{\n scope.row.id < 0 && (scope.row.viewName === '全部' || scope.row.viewName === 'all')\n ? t('all')\n : scope.row.viewName\n }}\n </template>\n </el-table-column>\n <el-table-column :label=\"t('action')\" :width=\"150\" align=\"center\" data-test-id=\"EL-TABLE-COLUMN-15WeBo\">\n <template #default=\"scope\">\n <el-tooltip :content=\"t('edit')\" placement=\"top\" :enterable=\"false\" data-test-id=\"EL-TOOLTIP-NGVisW\">\n <el-button link type=\"primary\" data-test-id=\"EL-BUTTON-VVS5A0\" @click=\"editFun(scope.row)\">\n <v-icon class=\"mdi mdi-pencil\" style=\"font-size: 1.2rem\" data-test-id=\"V-ICON-8OzEal\" />\n </el-button>\n </el-tooltip>\n <el-tooltip :content=\"t('copy')\" placement=\"top\" :enterable=\"false\" data-test-id=\"EL-TOOLTIP-Ima4Dj\">\n <el-button link type=\"primary\" data-test-id=\"EL-BUTTON-NQswpy\" @click=\"copyItem(scope.row)\">\n <el-icon class=\"mdi mdi-content-copy\" style=\"font-size: 1.2rem\" data-test-id=\"EL-ICON-e2uFy4\" />\n </el-button>\n </el-tooltip>\n <el-tooltip :content=\"t('delete')\" placement=\"top\" :enterable=\"false\" data-test-id=\"EL-TOOLTIP-WlX0wi\">\n <el-button link type=\"primary\" data-test-id=\"EL-BUTTON-v6dR6f\" @click=\"deleteItem(scope.row)\">\n <el-icon class=\"mdi mdi-trash-can\" style=\"font-size: 1.2rem\" data-test-id=\"EL-ICON-TRfu6F\" />\n </el-button>\n </el-tooltip>\n </template>\n </el-table-column>\n </el-table>\n </VueDraggable>\n </div>\n <createView\n ref=\"createViewRef\"\n :permission-data=\"props.permissionData\"\n :select-options=\"props.selectOptions\"\n :default-create-time-string=\"defaultCreateTimeString\"\n data-test-id=\"CREATEVIEW-cCI5u5\"\n @updataView=\"getViewTabList('update')\"\n />\n </template>\n </el-drawer>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { VueDraggable } from 'vue-draggable-plus';\nimport createView from './createView.vue';\nimport apiFunction from '@/scriptFiles/checkApiErrorMechanism.js';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport { iconType } from './viewManageTool.js';\nconst props = defineProps({\n permissionData: Object,\n selectOptions: {\n type: Object,\n default: () => ({}),\n },\n defaultCreateTimeString: {\n type: String,\n default: 'createTime',\n },\n});\nconst { t } = useI18n();\nconst emit = defineEmits(['updateViewTabs']);\nconst visible = ref(false); // 视图窗口\nconst createViewRef = ref(null);\nconst draggableRef = ref(null);\nconst fieldSetting = ref([]);\n// 定义所有视图数据\nconst allViews = ref([]);\nconst idFromList = ref(null);\n//获取页面的视图列表\nasync function getViewTabList(type) {\n await apiFunction\n .getViewList({\n startIndex: 0,\n count: 20,\n permissionCode: props.permissionData.permissionCode,\n })\n .then((res) => {\n if (res.data.code === 0) {\n allViews.value = [...res.data.content.data];\n if (type === 'update') {\n emit('updateViewTabs', [...allViews.value], idFromList.value); //更新tab页面\n }\n } else {\n ElMessage.error(t(res.data.message));\n }\n })\n .catch(() => {\n ElMessage.error(t('apiError'));\n });\n}\n/**\n * 添加视图\n */\nfunction addView() {\n createViewRef.value.open(null, 1);\n}\n/**\n * 编辑视图\n */\nconst editFun = (row) => {\n const viewId = typeof row === 'object' && row.id !== undefined ? row.id : row;\n idFromList.value = viewId;\n createViewRef.value.open(viewId, 0, props.selectOptions);\n};\nconst copyItem = (row) => {\n const viewId = typeof row === 'object' && row.id !== undefined ? row.id : row;\n idFromList.value = viewId;\n createViewRef.value.open(viewId, 2, props.selectOptions);\n};\n// 定义拖拽相关配置\nconst target = ref('.list-body tbody');\nconst handle = ref('.dragindicator');\n/**\n * 拖拽结束事件\n */\nconst handleDragEnd = async () => {\n try {\n const res = await apiFunction.viewSortList({ viewJson: allViews.value });\n if (res.data.code === 0) {\n emit('updateViewTabs', [...allViews.value]);\n } else {\n ElMessage.error(t(res.data.message));\n }\n } catch (error) {\n ElMessage.error(t('apiError'));\n }\n};\n\n// 删除视图\nasync function doDeleteOperation(id) {\n await apiFunction\n .deleteView(id)\n .then((res) => {\n if (res.data?.code === 0) {\n getViewTabList('update');\n } else {\n ElMessage.error(t(res.data.message));\n }\n })\n .catch(() => {\n ElMessage.error(t('apiError'));\n });\n}\nconst deleteItem = (row) => {\n let dialogTitle = t('delReminder');\n let dialogAlertDetail = `${t('viewDeleteTip')}`;\n ElMessageBox.confirm(dialogAlertDetail, dialogTitle, {\n confirmButtonText: t('confirm'),\n cancelButtonText: t('cancel'),\n type: 'warning',\n })\n .then(async () => {\n await doDeleteOperation(row.id);\n })\n .catch(() => {\n return;\n });\n};\n/**\n * 打开视图列表抽屉\n */\nconst open = async () => {\n visible.value = true;\n getViewTabList();\n};\n\n/**\n * 打开视图列表抽屉并执行编辑或复制操作\n */\nconst openDrawer = async (data, type) => {\n visible.value = true;\n await getViewTabList();\n if (type === 0) {\n editFun(data, props.selectOptions);\n } else if (type === 2) {\n copyItem(data, props.selectOptions);\n }\n};\n\n/**\n * 关闭视图列表抽屉\n */\nconst closeViewListDrawer = () => {\n visible.value = false;\n fieldSetting.value = [];\n allViews.value = [];\n};\ndefineExpose({\n open,\n openDrawer,\n});\n</script>\n\n<style scoped lang=\"scss\">\n::v-deep(.drawer_body_class) {\n margin: 0;\n padding: 5px;\n}\n.drawer_header_class_content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.drawer_title {\n display: flex;\n align-items: center;\n}\n.title_text_right_icon {\n color: #909399;\n font-size: 1rem;\n}\n.title_text {\n color: #165389;\n font-weight: bold;\n margin: 0 0.5rem;\n}\n.list-body {\n height: calc(100% - 40px);\n}\n</style>\n","/**\n * 物件轉excel header\n * @param {*} object 物件\n * @returns {Array} 回傳excel header\n */\nexport function objectToExcelTitle(object) {\n const title = [];\n const titleList = [];\n object.forEach((ele) => {\n titleList.push(ele.text);\n });\n title.push(titleList);\n return title;\n}\n\n/**\n * 物件轉excel body\n * @param {Array} table excel資料\n * @param {Array} header excel header\n * @param {string} stringReplaced 被替換字串\n * @param {string} replaceTo 替換字串\n * @returns {Array} 回傳excel body\n */\nexport function objectToExcelBodyWithoutMap(table, header, stringReplaced, replaceTo) {\n const bodyTemp = [];\n table.forEach((ele) => {\n const sortedObject = {};\n header.forEach((head) => {\n Object.entries(ele).forEach((key) => {\n if (key[0] === head.value.replace(stringReplaced, replaceTo)) {\n const value = key[1];\n sortedObject[key[0]] = value;\n }\n });\n });\n bodyTemp.push(sortedObject);\n });\n return bodyTemp;\n}\n\n/**\n * 物件轉下拉選單array\n * @param {object} object 物件\n * @returns {Array} 回傳下拉選單array\n */\nexport function objectToSelectList(object) {\n const list = [];\n Object.entries(object).forEach((key) => {\n list.push({\n text: key[0],\n value: parseInt(key[1], 10),\n });\n });\n return list;\n}\n\n/**\n * 取得物件特定key值\n * @param {object} obj 物件\n * @param {number} value 特定key的value\n * @returns {string} 回傳特定key\n */\nexport function getObjKeys(obj, value) {\n return Object.keys(obj).find((key) => obj[key] === value);\n}\n","import { utils } from 'xlsx';\nimport * as XLSX from 'xlsx';\n\nconst EXCEL = {\n // 輸出excel表單\n exportFromArray(option) {\n const config = { name: 'demo', suffix: 'xml', ...option };\n const {\n title, body, name, suffix, wscols,\n } = config;\n const array = [...title, ...body];\n const workBook = utils.book_new();\n const workSheet = utils.aoa_to_sheet(array, { raw: true });\n // 欄位寬度設定\n workSheet['!cols'] = wscols;\n const fileName = `${name}.${suffix}`;\n utils.book_append_sheet(workBook, workSheet, name);\n XLSX.writeFile(workBook, fileName, { bookType: suffix, type: 'buffer', writeFile: true });\n },\n // 輸出批量excel表單\n async exportBatchFromArray(arr, fileName) {\n const workBook = utils.book_new();\n for (let i = 0; i < arr.length; i += 1) {\n const config = { ...arr[i] };\n const {\n title, body, name, wscols, wsmerges, wsrow,\n } = config;\n const array = [...title, ...body];\n const workSheet = utils.aoa_to_sheet(array, { raw: true });\n // 欄位寬度設定\n workSheet['!cols'] = wscols;\n workSheet['!rows'] = wsrow;\n workSheet['!merges'] = wsmerges;\n // eslint-disable-next-line no-await-in-loop\n await utils.book_append_sheet(workBook, workSheet, name);\n }\n // eslint-disable-next-line max-len\n XLSX.writeFile(workBook, `${fileName}.xlsx`, { bookType: 'xlsx', type: 'buffer', writeFile: true });\n },\n // 解析表格數據,返回表格内容,目前不支援導入有單元格合併的表格,data.title為表头、data.body為表格數據\n async importFromLocal(file) {\n const workBook = await this.readerWorkBookFromLocal(file);\n const workSheet = workBook.Sheets[workBook.SheetNames[0]];\n const content = utils.sheet_to_json(workSheet, { defval: '' });\n const contentSort = utils.sheet_to_json(workSheet, { header: 1 });\n if (content.length === 0) {\n return content;\n }\n const data = {};\n data.title = Object.keys(content[0]);\n data.body = content;\n data.titleSort = [...contentSort[0]]; // 记录Excel中的顺序,不会因为数字而导致顺序错乱\n return data;\n },\n // 解析表格數據(第二张Sheet表数据),返回表格内容,目前不支援導入有單元格合併的表格,data.title為表头、data.body為表格數據\n async importInstructionsFromLocal(file) {\n const workBook = await this.readerWorkBookFromLocal(file);\n const workSheet = workBook.Sheets[workBook.SheetNames[1]];\n const content = utils.sheet_to_json(workSheet, { defval: '' });\n if (content.length === 0) {\n return content;\n }\n const data = {};\n data.title = Object.keys(content[0]);\n data.body = content;\n return data;\n },\n // 讀取文件的方法,file為文件Data\n readerWorkBookFromLocal(file) {\n const reader = new FileReader();\n reader.readAsBinaryString(file);\n return new Promise(((resolve, reject) => {\n reader.onload = function (e) {\n const fileData = e.target.result;\n if (reader.readyState === 2) {\n const workBook = XLSX.read(fileData, { type: 'binary' });\n resolve(workBook);\n } else {\n reject(new Error('讀取文件失敗'));\n }\n };\n }));\n },\n};\n\nexport default EXCEL;\n","<template>\n <el-drawer\n v-model=\"viewRecordDrawer\"\n :z-index=\"1000\"\n size=\"80%\"\n :with-header=\"false\"\n :before-close=\"closeViewRecordDrawer\"\n data-test-id=\"EL-DRAWER-yW3j6a\"\n >\n <div style=\"display: flex; align-items: center\" data-test-id=\"DIV-vOcYvj\">\n <span class=\"mdi mdi-post-outline\" data-test-id=\"SPAN-QcjZ2G\" />\n <span style=\"color: #165389; font-weight: bold; margin: 0 0.5rem\" data-test-id=\"SPAN-JLNrR8\">{{\n t('viewOperationRecordTxt')\n }}</span>\n <el-tooltip\n :content=\"t('viewOperationRecordTips')\"\n placement=\"right\"\n :enterable=\"false\"\n data-test-id=\"EL-TOOLTIP-r2lUDt\"\n >\n <span class=\"mdi mdi-help-circle-outline\" style=\"color: #909399; font-size: 1rem\" data-test-id=\"SPAN-DFDBGw\" />\n </el-tooltip>\n </div>\n <div class=\"view-operation-record\" data-test-id=\"DIV-Ig4Lp5\">\n <!-- 筛选区域 -->\n <div class=\"filter-card\" data-test-id=\"DIV-BY1ENL\">\n <el-form :model=\"queryForm\" label-width=\"auto\" class=\"query-form\" size=\"default\" data-test-id=\"EL-FORM-DQPNj7\">\n <el-row :gutter=\"20\" data-test-id=\"EL-ROW-XqFgSB\">\n <el-col :span=\"8\" data-test-id=\"EL-COL-44Qf7a\">\n <el-form-item :label=\"t('operator')\" data-test-id=\"EL-FORM-ITEM-jhywJa\">\n <el-select\n v-model=\"queryForm.operators\"\n clearable\n multiple\n collapse-tags\n :collapse-tags-tooltip=\"true\"\n filterable\n :placeholder=\"t('PleaseSelect')\"\n data-test-id=\"EL-SELECT-2iKRMnl\"\n >\n <el-option\n v-for=\"(item, index) in operatorList\"\n :key=\"index\"\n :label=\"item.name + ' ( ' + item.empNumber + ' )'\"\n :value=\"item.id\"\n :data-test-id=\"`EL-OPTION-rIctaO-${index}`\"\n >\n </el-option>\n </el-select>\n </el-form-item>\n </el-col>\n\n <el-col :span=\"8\" data-test-id=\"EL-COL-JWN3c6\">\n <el-form-item :label=\"t('operationTimeRange')\" data-test-id=\"EL-FORM-ITEM-qGA6FG\">\n <el-date-picker\n v-model=\"queryForm.timeRange\"\n type=\"datetimerange\"\n range-separator=\"~\"\n :start-placeholder=\"t('PleaseSelect')\"\n :end-placeholder=\"t('PleaseSelect')\"\n clearable\n data-test-id=\"EL-DATE-PICKER-sXaAjJ\"\n />\n </el-form-item>\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-7wsX67\">\n <div style=\"text-align: center\" data-test-id=\"DIV-ePTtCw\">\n <el-button type=\"primary\" data-test-id=\"EL-BUTTON-iepjfm\" @click=\"handleQuery\">{{\n t('query')\n }}</el-button>\n <el-button data-test-id=\"EL-BUTTON-misE7D\" @click=\"handleReset\">{{ t('reset') }}</el-button>\n <el-button link type=\"primary\" data-test-id=\"EL-BUTTON-a3sO22ZO\" @click=\"handleExport\">\n <v-icon style=\"margin-right: 0.5rem\" class=\"mdi mdi-file-export\" data-test-id=\"V-ICON-Mbdhkt\" />\n {{ $t('export') }}\n </el-button>\n </div>\n </el-col>\n <el-col :span=\"8\" data-test-id=\"EL-COL-1mxuMy\">\n <el-form-item :label=\"t('operationType')\" data-test-id=\"EL-FORM-ITEM-HAaHnq\">\n <el-select\n v-model=\"queryForm.types\"\n :placeholder=\"t('PleaseSelect')\"\n clearable\n multiple\n collapse-tags\n :collapse-tags-tooltip=\"true\"\n data-test-id=\"EL-SELECT-mg4gIc\"\n >\n <el-option\n v-for=\"(item, index) in operationTypes\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n :data-test-id=\"`EL-OPTION-SDFctaO-${index}`\"\n />\n </el-select>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n </div>\n\n <!-- 列表区域 -->\n <div class=\"table-container\" data-test-id=\"DIV-wGYn7a\">\n <div class=\"table-wrapper\" data-test-id=\"DIV-tableWrapper\">\n <el-table\n :data=\"tableData\"\n border\n :loading=\"tableLoading\"\n header-row-class-name=\"tableHeader\"\n header-cell-class-name=\"tableHeaderCell\"\n :scrollbar-always-on=\"true\"\n style=\"width: 100%\"\n size=\"default\"\n data-test-id=\"EL-TABLE-6CNtjP\"\n >\n <el-table-column type=\"index\" label=\"#\" width=\"60\" align=\"center\" data-test-id=\"EL-TABLE-COLUMN-O8UyCw\">\n <template #default=\"scope\">\n <span data-test-id=\"SPAN-HEnHjc\">{{ calcIndex(scope.$index) }}</span>\n </template>\n </el-table-column>\n <el-table-column\n v-for=\"(item, index) in headers\"\n :key=\"index\"\n :label=\"item.text\"\n :prop=\"item.value\"\n :width=\"item.width\"\n align=\"center\"\n show-overflow-tooltip\n :data-test-id=\"`EL-TABLE-COLUMN-uzDbCR-${index}`\"\n >\n <template #default=\"{ row, column }\">\n <span v-if=\"column.property === 'operateDate'\" data-test-id=\"SPAN-Gd107Y\">\n {{ row.operateDate ? dayjs(row['operateDate']).format('YYYY-MM-DD HH:mm:ss') : '-' }}\n </span>\n <span v-if=\"column.property === 'operateType'\" data-test-id=\"SPAN-DiW6W9\">\n <el-text v-if=\"row.operateType === 1\" data-test-id=\"EL-TEXT-6b8Abr\">{{ t('newView') }}</el-text>\n <el-text v-if=\"row.operateType === 2\" data-test-id=\"EL-TEXT-XzqTuW\">{{ t('editView') }}</el-text>\n <!-- <el-text v-if=\"row.operateType===3\">{{t('copyView')}}</el-text> -->\n <el-text v-if=\"row.operateType === 4\" data-test-id=\"EL-TEXT-NrIXXs\">{{ t('deleteView') }}</el-text>\n </span>\n </template>\n </el-table-column>\n </el-table>\n </div>\n\n <!-- 分页 -->\n <div class=\"pagination-wrapper\" data-test-id=\"DIV-paginationWrapper\">\n <Pagination\n style=\"background-color: transparent; padding-bottom: 0.625rem; padding-top: 1.25rem\"\n :total=\"page.total\"\n :current-page=\"page.currentPage\"\n :page-type=\"2\"\n :page-size=\"page.pageSize\"\n :current-count=\"tableData.length\"\n :permission-code=\"pageData.permissionCode\"\n :has-selected=\"false\"\n data-test-id=\"PAGINATION-vcMBuD\"\n @changePage=\"changePage\"\n @fMounted=\"handleFMounted\"\n >\n </Pagination>\n </div>\n </div>\n </div>\n </el-drawer>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { objectToExcelTitle, objectToExcelBodyWithoutMap } from '@/scriptFiles/common/objectDataProcessing';\nimport Pagination from '@/components/Pagination.vue';\nimport apiFunction from '@/scriptFiles/checkApiErrorMechanism';\nimport { useI18n } from 'vue-i18n';\nimport dayjs from 'dayjs';\nimport EXCEL from '@/utils/excel.js';\nconst props = defineProps({\n pageData: {\n type: Object,\n default: () => ({}),\n },\n});\nconst viewRecordDrawer = ref(false);\nconst { t } = useI18n();\n// 分页\nconst page = ref({\n total: 0,\n currentPage: 1,\n pageSize: 20,\n});\n// 表标题\nconst headers = computed(() => [\n { text: t('operator'), value: 'operateUserName', width: 150 }, //操作人员\n { text: t('operationTime'), value: 'operateDate', width: 220 }, //操作时间区间\n { text: t('operationType'), value: 'operateType', width: 150 }, //操作类型\n { text: t('operationDetails'), value: 'detail', width: '' }, //操作详情\n]);\n\n// 操作类型配置\nconst operationTypes = computed(() => [\n { label: t('newView'), value: 1 },\n { label: t('editView'), value: 2 },\n // { label: t('copyView'), value: 3 },\n { label: t('deleteView'), value: 4 },\n]);\nconst operatorList = ref([]); //操作人员列表\n//获取操作人员\nasync function getEmployeeList() {\n return apiFunction\n .getViewEmployeeList({\n permissionCode: props.pageData.permissionCode,\n })\n .then(async (res) => {\n if (res.data.code === 0) {\n operatorList.value = res.data.content;\n } else {\n ElMessage.error(t(res.data.message));\n }\n });\n}\n// 查询表单\nconst queryForm = ref({\n operators: '',\n timeRange: [],\n types: [],\n});\n\nconst tableData = ref([]);\nconst tableLoading = ref(false);\n\n// 拆分operateDetail\nfunction getOperateDetail(fieldString, type) {\n const fields = fieldString.split(',').map((field) => field.replace(/'/g, '').replace(/\"/g, '').trim());\n while (fields.length < 4) fields.push('');\n const [first, second, third, fourth] = fields;\n const typeMap = {\n 1: () => t('addViewSuccessful', { name: first }),\n 4: () => t('deleteViewSuccessful', { name: first }),\n 2: () => {\n const operations = [];\n if (second) operations.push(t('adjustViewName', { name: first, newName: second }));\n if (third) operations.push(t('adjustDataFiltering', { name: first }));\n if (fourth) operations.push(t('adjustViewPermission', { name: first }));\n return operations.length > 0 ? `${t('viewEditSuccessful')}, ${operations.join(', ')}` : t('viewEditSuccessful');\n },\n };\n return typeMap[type] ? typeMap[type]() : '';\n}\n// 获取数据\nconst getViewLogList = async () => {\n await apiFunction\n .getViewOpLogList({\n permissionCode: props.pageData.permissionCode,\n operateUser: queryForm.value.operators || [],\n operateStartDate: queryForm.value.timeRange?.length\n ? dayjs(queryForm.value.timeRange[0]).format('YYYY-MM-DD HH:mm')\n : '',\n operateEndDate: queryForm.value.timeRange?.length\n ? dayjs(queryForm.value.timeRange[1]).format('YYYY-MM-DD HH:mm')\n : '',\n operateType: queryForm.value.types.length ? queryForm.value.types : [],\n startIndex: (page.value.currentPage - 1) * page.value.pageSize,\n count: page.value.pageSize,\n })\n .then((res) => {\n if (res.data.code === 0) {\n tableLoading.value = false;\n tableData.value = res.data.content.data.map((item) => {\n return {\n ...item,\n detail: getOperateDetail(item.operateDetail, item.operateType),\n };\n });\n page.value.total = res.data.content.totalCount;\n } else {\n ElMessage.error(t(res.data.message));\n tableLoading.value = false;\n }\n })\n .catch()\n .finally(() => {\n tableLoading.value = false;\n });\n};\n// 查询数据\nconst handleQuery = () => {\n page.value.currentPage = 1; // 重置到第一页\n tableLoading.value = true;\n getViewLogList();\n};\n\n// 重置\nconst handleReset = () => {\n queryForm.value = {\n operators: [],\n timeRange: [],\n types: [],\n };\n page.value = {\n currentPage: 1,\n pageSize: 20,\n };\n getViewLogList();\n};\n// 分页方法\nconst changePage = async (val) => {\n page.value.currentPage = val.page;\n page.value.pageSize = val.size;\n getViewLogList();\n};\n\nconst handleFMounted = (arg, pageParam) => {\n page.value.currentPage = pageParam.page;\n page.value.pageSize = pageParam.size;\n};\nconst calcIndex = (index) => {\n return Number(index) + 1 + (page.value.currentPage - 1) * page.value.pageSize;\n};\n// 获取全部视图记录数据\nconst getLogList = ref([]);\nconst getAllLogData = async (v) => {\n try {\n const {\n data: { code, content },\n } = await apiFunction.getViewOpLogList({\n permissionCode: props.pageData.permissionCode,\n operateUser: queryForm.value.operators || [],\n operateStartDate: queryForm.value.timeRange?.length\n ? dayjs(queryForm.value.timeRange[0]).format('YYYY-MM-DD HH:mm')\n : '',\n operateEndDate: queryForm.value.timeRange?.length\n ? dayjs(queryForm.value.timeRange[1]).format('YYYY-MM-DD HH:mm')\n : '',\n operateType: queryForm.value.types ? queryForm.value.types : [],\n startIndex: v,\n count: 200,\n });\n if (code === 0) {\n getLogList.value = getLogList.value.concat(content.data);\n if (content.totalCount > getLogList.value.length) {\n await getAllLogData((v += 200));\n }\n }\n } catch (error) {\n ElMessage.error(t(error.message));\n }\n};\n// 日期转换\nfunction dateConvert(time) {\n return time ? dayjs(time).format('YY-MM-DD HH:mm:ss') : '--';\n}\nfunction getOptypeName(val) {\n switch (val) {\n case 1:\n return 'newView';\n case 2:\n return 'editView';\n case 3:\n return 'copyView';\n case 4:\n return 'deleteView';\n }\n}\n// 导出\nconst handleExport = async () => {\n const title = objectToExcelTitle(headers.value);\n getLogList.value = [];\n await getAllLogData(0);\n const tempList = [];\n getLogList.value.forEach((element) => {\n const tempObject = {\n operateUserName: element.operateUserName,\n operateDate: dateConvert(element.operateDate),\n operateType: t(getOptypeName(element.operateType)),\n detail: getOperateDetail(element.operateDetail, element.operateType),\n };\n tempList.push(tempObject);\n });\n const bodyWithoutMap = objectToExcelBodyWithoutMap(tempList, headers.value, '', '');\n const body = [];\n bodyWithoutMap.map((item, index) => {\n const temp = { ...item };\n const arr = Object.values(temp);\n body[index] = arr;\n return body;\n });\n const wscols = Array.from({ length: headers.value.length }, () => ({ wch: 19 }));\n EXCEL.exportFromArray({\n title,\n body,\n name: t('viewOperationRecord'),\n suffix: 'xlsx',\n sheetName: t('viewOperationRecord'),\n wscols: wscols,\n });\n};\n// 打开视图列表抽屉\nfunction open() {\n viewRecordDrawer.value = true;\n getEmployeeList();\n handleQuery();\n}\n\n// 关闭视图列表抽屉\nfunction closeViewRecordDrawer() {\n viewRecordDrawer.value = false;\n tableData.value = [];\n queryForm.value = {\n operators: [],\n timeRange: [],\n types: [],\n };\n page.value.total = 0;\n}\ndefineExpose({\n open,\n});\n</script>\n\n<style scoped>\n.view-operation-record {\n padding: 16px 0;\n height: calc(100% - 26px);\n display: flex;\n flex-direction: column;\n}\n\n.filter-card {\n background-color: #fff;\n flex-shrink: 0;\n /* 防止筛选区域被压缩 */\n}\n\n.query-form {\n margin-bottom: 0;\n}\n\n.button-group {\n margin-top: 10px;\n}\n\n/* 新增的表格容器样式 */\n.table-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n margin-top: 16px;\n min-height: 0;\n /* 重要:防止flex item溢出 */\n}\n\n.table-wrapper {\n flex: 1;\n min-height: 0;\n /* 重要:防止flex item溢出 */\n}\n\n/* 确保表格填满容器 */\n.table-wrapper :deep(.el-table) {\n height: 100% !important;\n}\n\n.pagination-wrapper {\n flex-shrink: 0;\n /* 分页区域不被压缩 */\n background-color: #fff;\n border-top: 1px solid #ebeef5;\n /* 可选:添加分割线 */\n}\n</style>\n","<template>\n <div class=\"view-box flex-center\" data-test-id=\"DIV-f6cLWs\">\n <el-tabs\n v-model=\"editableTabsValue\"\n type=\"card\"\n :closable=\"false\"\n :stretch=\"false\"\n data-test-id=\"EL-TABS-hQi8BJ\"\n @tab-click=\"handleTabClick\"\n >\n <!-- 遍历所有可编辑标签(保留标签,仅控制过滤条件显示) -->\n <el-tab-pane\n v-for=\"(item, index) in editableTabs\"\n :key=\"item.id\"\n :label=\"item.viewName\"\n :name=\"item.viewName\"\n :data-test-id=\"`EL-TAB-PANE-yEF1MT-${index}`\"\n >\n <template #label>\n <div class=\"tab-label-container\">\n <el-popover\n :title=\"item.id < 0 && (item.viewName === '全部' || item.viewName === 'all') ? t('all') : item.viewName\"\n placement=\"bottom\"\n width=\"auto\"\n data-test-id=\"EL-POPOVER-KqCZyA\"\n >\n <template #reference>\n <div class=\"fixed-width flex-center\" data-test-id=\"DIV-Vgcixm\">\n <v-icon\n :style=\"{ color: iconColors[Number(item.meta)] }\"\n class=\"mdi mdi-book-open-blank-variant\"\n data-test-id=\"V-ICON-F6vGIl\"\n />\n <span\n class=\"tab-title\"\n :style=\"viewId === item.id ? 'font-weight: 700' : ''\"\n data-test-id=\"SPAN-4OpUJc\"\n >\n {{\n item.id < 0 && (item.viewName === '全部' || item.viewName === 'all') ? t('all') : item.viewName\n }}\n </span>\n </div>\n </template>\n <!-- 仅当parsedFilter有效时显示过滤条件 -->\n <div v-if=\"isParsedFilterValid(item.parsedFilter)\" class=\"span-box\" data-test-id=\"DIV-BiX4o2\">\n <div style=\"margin-bottom: 5px\" data-test-id=\"DIV-v0zgNe\">{{ t('dataFilter') }}</div>\n <span\n v-for=\"(subArray, subIndex) in item.parsedFilter\"\n :key=\"subIndex\"\n :data-test-id=\"`SPAN-Y5w6Ny-${subIndex}`\"\n >\n <template v-if=\"subArray.length > 0\">\n <span\n v-for=\"(field, fieldIndex) in subArray\"\n :key=\"fieldIndex\"\n :data-test-id=\"`SPAN-RA8qb9-${fieldIndex}`\"\n >\n {{ t(field) || field }}\n <span v-if=\"fieldIndex < subArray.length - 1\" data-test-id=\"SPAN-Zj5s2a\"> </span>\n </span>\n <br v-if=\"subIndex < item.parsedFilter.length - 1\" data-test-id=\"BR-g8bZ8D\" />\n </template>\n </span>\n </div>\n <!-- parsedFilter无效时显示提示(可选) -->\n <div v-else class=\"empty-filter-tip\" data-test-id=\"DIV-5qrLAo\" />\n </el-popover>\n <!-- 标签操作下拉菜单(始终显示) -->\n <el-dropdown\n v-if=\"viewType\"\n placement=\"bottom-start\"\n trigger=\"click\"\n data-test-id=\"EL-DROPDOWN-S8ReG5\"\n @command=\"(command) => handleViewOption(item, command)\"\n @click.stop\n >\n <span class=\"mdi mdi-dots-vertical\" data-test-id=\"SPAN-JZNwUC\" />\n <template #dropdown>\n <el-dropdown-menu data-test-id=\"EL-DROPDOWN-MENU-lXcUWS\">\n <el-dropdown-item command=\"edit\" data-test-id=\"EL-DROPDOWN-ITEM-a8rxXb\">\n <span class=\"mdi mdi-pencil\" style=\"margin-right: 0.5rem\" data-test-id=\"SPAN-c8iMHY\" />\n {{ t('edit') }}\n </el-dropdown-item>\n <el-dropdown-item command=\"copy\" data-test-id=\"EL-DROPDOWN-ITEM-cTJWPm\">\n <span class=\"mdi mdi-content-copy\" style=\"margin-right: 0.5rem\" data-test-id=\"SPAN-ixzjfp\" />\n {{ t('copy') }}\n </el-dropdown-item>\n <el-dropdown-item command=\"delete\" data-test-id=\"EL-DROPDOWN-ITEM-le8tGS\">\n <span class=\"mdi mdi-trash-can\" style=\"margin-right: 0.5rem\" data-test-id=\"SPAN-Ihig61\" />\n {{ t('delete') }}\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </template>\n </el-tab-pane>\n </el-tabs>\n <!-- 更多视图(保留标签,仅控制过滤条件显示) -->\n <div v-if=\"moreTabs.length\" class=\"view-more\" data-test-id=\"DIV-VIE0ym\">\n <el-dropdown trigger=\"click\" placement=\"bottom-end\" data-test-id=\"EL-DROPDOWN-Y6vrvm\">\n <span data-test-id=\"SPAN-N2VdKy\">\n <el-button type=\"text\" data-test-id=\"EL-BUTTON-8gv545\">\n <div class=\"flex-center\" data-test-id=\"DIV-mCNYU8\">\n <div v-if=\"!isShowClickTab\" class=\"more-txt\" data-test-id=\"DIV-z5UnfR\">{{ t('moreView') }}</div>\n <div v-else class=\"more-txt\" data-test-id=\"DIV-54VVVY\">\n {{ clickViewName === 'all' ? t('all') : clickViewName }}\n </div>\n <div data-test-id=\"DIV-YkEYuZ\"><span class=\"mdi mdi-chevron-down\" data-test-id=\"SPAN-OA1DMi\" /></div>\n </div>\n </el-button>\n </span>\n <template #dropdown>\n <el-dropdown-menu data-test-id=\"EL-DROPDOWN-MENU-EaVFiu\">\n <el-dropdown-item\n v-for=\"(item, index) in moreTabs\"\n :key=\"item.id\"\n :data-test-id=\"`EL-DROPDOWN-ITEM-p4mHqG-${index}`\"\n @click=\"handleTabOperation2(item)\"\n >\n <el-popover\n :title=\"item.id < 0 && (item.viewName === '全部' || item.viewName === 'all') ? t('all') : item.viewName\"\n placement=\"left\"\n width=\"aoto\"\n data-test-id=\"EL-POPOVER-bIn3x3\"\n >\n <template #reference>\n <div class=\"fixed-width flex-center\" data-test-id=\"DIV-iCwDyl\">\n <v-icon\n :style=\"{ color: iconColors[item.meta] }\"\n class=\"mdi mdi-book-open-blank-variant\"\n style=\"margin-right: 0.5rem\"\n data-test-id=\"V-ICON-V8uyqx\"\n />\n <span class=\"tab-title\" data-test-id=\"SPAN-kvDuvy\">\n {{\n item.id < 0 && (item.viewName === '全部' || item.viewName === 'all') ? t('all') : item.viewName\n }}\n </span>\n </div>\n </template>\n <!-- 仅当parsedFilter有效时显示过滤条件 -->\n <div v-if=\"isParsedFilterValid(item.parsedFilter)\" class=\"span-box\" data-test-id=\"DIV-PgJjLg\">\n <div style=\"margin-bottom: 5px\" data-test-id=\"DIV-qlWueE\">{{ t('dataFilter') }}</div>\n <span\n v-for=\"(subArray, subIndex) in item.parsedFilter\"\n :key=\"subIndex\"\n :data-test-id=\"`SPAN-gwUPHe-${subIndex}`\"\n >\n <template v-if=\"subArray.length > 0\">\n <span\n v-for=\"(field, fieldIndex) in subArray\"\n :key=\"fieldIndex\"\n :data-test-id=\"`SPAN-Yoke3N-${fieldIndex}`\"\n >\n {{ t(field) || field }}\n <span v-if=\"fieldIndex < subArray.length - 1\" data-test-id=\"SPAN-b69aKz\"> </span>\n </span>\n <br v-if=\"subIndex < item.parsedFilter.length - 1\" data-test-id=\"BR-6bC7S9\" />\n </template>\n </span>\n </div>\n <!-- parsedFilter无效时显示提示(可选) -->\n <div v-else class=\"empty-filter-tip\" data-test-id=\"DIV-5FYT0D\" />\n </el-popover>\n <!-- 更多视图操作下拉菜单(始终显示) -->\n <el-dropdown\n v-if=\"viewType\"\n placement=\"bottom-start\"\n trigger=\"hover\"\n data-test-id=\"EL-DROPDOWN-VwI5JN\"\n @command=\"(command) => handleViewOption(item, command)\"\n >\n <span class=\"mdi mdi-dots-vertical\" data-test-id=\"SPAN-88aNbL\" />\n <template #dropdown>\n <el-dropdown-menu data-test-id=\"EL-DROPDOWN-MENU-uB6AzT\">\n <el-dropdown-item command=\"edit\" data-test-id=\"EL-DROPDOWN-ITEM-pPx9rh\">\n <span class=\"mdi mdi-pencil\" style=\"margin-right: 0.5rem\" data-test-id=\"SPAN-gONTrg\" />\n {{ t('edit') }}\n </el-dropdown-item>\n <el-dropdown-item command=\"copy\" data-test-id=\"EL-DROPDOWN-ITEM-GzG8Jm\">\n <span class=\"mdi mdi-content-copy\" style=\"margin-right: 0.5rem\" data-test-id=\"SPAN-N1W2YJ\" />\n {{ t('copy') }}\n </el-dropdown-item>\n <el-dropdown-item command=\"delete\" data-test-id=\"EL-DROPDOWN-ITEM-n2UcqQ\">\n <span class=\"mdi mdi-trash-can\" style=\"margin-right: 0.5rem\" data-test-id=\"SPAN-PL9dTd\" />\n {{ t('delete') }}\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n <!-- 操作按钮区(始终显示) -->\n <div v-if=\"viewType\" class=\"flex-center\" data-test-id=\"DIV-1GGakX\">\n <el-tooltip :content=\"t('createView')\" placement=\"top\" :enterable=\"false\" data-test-id=\"EL-TOOLTIP-tBu398\">\n <div class=\"plus-icon\" data-test-id=\"DIV-2LlLoK\" @click=\"emit('openViewDrawer')\">\n <el-button type=\"text\" data-test-id=\"EL-BUTTON-v7caGb\">\n <span class=\"mdi mdi-plus\" data-test-id=\"SPAN-vVJa7G\" />\n </el-button>\n </div>\n </el-tooltip>\n <div class=\"plus-icon flex-center\" data-test-id=\"DIV-7acJL9\">\n <el-tooltip\n :content=\"t('viewOperationRecordTxt')\"\n placement=\"top\"\n :enterable=\"false\"\n data-test-id=\"EL-TOOLTIP-QQUw4G\"\n >\n <el-button type=\"text\" data-test-id=\"EL-BUTTON-D3QSbJ\" @click=\"emit('openLogDrawer')\">\n <span class=\"mdi mdi-text-box-check-outline\" style=\"margin-right: 0.5rem\" data-test-id=\"SPAN-4M2L0o\" />\n {{ t('viewOperationRecordTxt') }}\n </el-button>\n </el-tooltip>\n </div>\n </div>\n\n <!-- 视图编辑/复制抽屉(始终可用) -->\n <!-- <ViewAddDrawer\n v-if=\"isAddDrawerVisible\"\n v-model=\"isAddDrawerVisible\"\n :init-data=\"drawerInitData\"\n data-test-id=\"VIEWADDDRAWER-dsvnJb\"\n @view-saved=\"handleViewSaved\"\n @update:modelValue=\"isAddDrawerVisible = $event\"\n /> -->\n </div>\n</template>\n\n<script setup>\nimport { ref, watch, nextTick } from 'vue';\nimport { useI18n } from 'vue-i18n';\n// import ViewAddDrawer from './viewAddDrawer.vue';\nimport apiFunction from '@/scriptFiles/checkApiErrorMechanism';\nimport { ElMessageBox, ElMessage } from 'element-plus';\nimport { processFilterData } from './viewManageTool.js';\n\nconst { t } = useI18n();\n\n// 接收父组件参数\nconst props = defineProps({\n pageData: {\n type: Object,\n default: () => ({}),\n },\n viewType: {\n type: Boolean,\n default: false,\n },\n viewIdFromList: {\n type: Number,\n default: null,\n },\n tabs: {\n type: Array,\n required: true,\n default: () => [],\n },\n selectOptions: {\n type: Object,\n default: () => ({}),\n },\n});\n\n// 暴露事件给父组件\nconst emit = defineEmits(['openViewDrawer', 'openLogDrawer', 'tabUpdate', 'tabClick']);\n\n// 响应式数据\nconst viewId = ref(''); // 视图id\nconst isShowClickTab = ref(false);\nconst clickViewName = ref('');\nconst iconColors = ref(['#125088', '#FF0000', '#F0D155', '#99C0E4', '#FF7A21', '#323338', '#34AA1A']);\nconst editableTabs = ref([]); // 保留所有可编辑标签\nconst moreTabs = ref([]); // 保留所有更多标签\nconst editableTabsValue = ref('');\nconst drawerInitData = ref(null);\nconst isEditing = ref(false); // 区分操作类型\n\n// 校验parsedFilter是否有效(核心工具函数)\nconst isParsedFilterValid = (parsedFilter) => {\n return (\n Array.isArray(parsedFilter) &&\n parsedFilter.length > 0 &&\n parsedFilter.some((subArr) => Array.isArray(subArr) && subArr.length > 0)\n );\n};\n\n// 标签点击事件\nfunction handleTabClick(tab) {\n isShowClickTab.value = false;\n clickViewName.value = '';\n // 获取当前激活的标签名\n let tabName = tab.paneName;\n // 如果 paneName 是 ComputedRefImpl,获取它的值\n if (tabName && typeof tabName.value !== 'undefined') {\n tabName = tabName.value;\n }\n // 使用 tabName 查找标签项\n const clickedTab = editableTabs.value.find((item) => item.viewName === tabName);\n\n if (clickedTab) {\n editableTabsValue.value = clickedTab.viewName;\n viewId.value = clickedTab.id;\n nextTick(() => {\n emit('tabClick', viewId.value, 1);\n });\n } else {\n ElMessage.error(t('tabNotFound'));\n }\n}\n\n// 更多视图点击事件\nfunction handleTabOperation2(tabItem) {\n isShowClickTab.value = true;\n clickViewName.value =\n tabItem.id < 0 && (tabItem.viewName === '全部' || tabItem.viewName === 'all') ? 'all' : tabItem.viewName;\n viewId.value = tabItem.id;\n editableTabsValue.value = ''; //清空激活项\n nextTick(() => {\n emit('tabClick', viewId.value, 1);\n });\n}\n\n// 删除视图接口调用\nasync function doDeleteOperation(id) {\n await apiFunction\n .deleteView(id)\n .then((res) => {\n if (res.data?.code === 0) {\n // 如果删除的是当前显示的更多视图,重置状态\n if (isShowClickTab.value && viewId.value === id) {\n isShowClickTab.value = false;\n clickViewName.value = '';\n }\n emit('tabUpdate');\n } else {\n ElMessage.error(t(res.data.message));\n }\n })\n .catch(() => {\n ElMessage.error(t('apiError'));\n });\n}\n\n// 标签操作(编辑/复制/删除)\nfunction handleViewOption(tabItem, command) {\n switch (command) {\n case 'edit':\n isEditing.value = true;\n drawerInitData.value = {\n mode: 'edit',\n data: { ...tabItem },\n permissionCode: props.pageData.permissionCode,\n docCode: props.pageData.docCode,\n };\n nextTick(() => {\n // 编辑相关操作\n // emit('tabClick', tabItem.id, 'edit');\n emit('tabClick', tabItem.id, 0, props.selectOptions);\n });\n break;\n\n case 'copy':\n drawerInitData.value = {\n mode: 'copy',\n data: {\n ...tabItem,\n name: `${t('copy')}${tabItem.name}`,\n },\n permissionCode: props.pageData.permissionCode,\n docCode: props.pageData.docCode,\n };\n nextTick(() => {\n // 复制相关操作\n // emit('tabClick', tabItem.id, 'copy');\n emit('tabClick', tabItem.id, 2, props.selectOptions);\n });\n break;\n\n case 'delete':\n ElMessageBox.confirm(t('viewDeleteTip'), t('delReminder'), {\n type: 'warning',\n confirmButtonText: t('confirm'),\n cancelButtonText: t('cancel'),\n })\n .then(async () => {\n await doDeleteOperation(tabItem.id);\n })\n .catch(() => {\n return;\n });\n break;\n }\n}\n\nfunction getEditableTabsValue() {\n const foundInArray1 = editableTabs.value.find((item) => item.id === viewId.value);\n if (foundInArray1) {\n editableTabsValue.value = foundInArray1.viewName;\n isShowClickTab.value = false;\n clickViewName.value = '';\n } else {\n // 如果在第一个数组没找到,在第二个数组中查找\n const foundInArray2 = moreTabs.value.find((item) => item.id === viewId.value);\n if (foundInArray2) {\n isShowClickTab.value = true;\n clickViewName.value =\n foundInArray2.id < 0 && (foundInArray2.viewName === '全部' || foundInArray2.viewName === 'all')\n ? 'all'\n : foundInArray2.viewName;\n }\n }\n}\n\n// 监听父组件tabs变化,仅解析不过滤标签\nwatch(\n () => props.tabs,\n (newTabs) => {\n const safeTabs = Array.isArray(newTabs) ? newTabs : [];\n // 1. 拆分标签(保留所有标签,不过滤)\n if (safeTabs.length > 6) {\n editableTabs.value = processFilterData(safeTabs.slice(0, 6)); // 仅解析,不过滤\n moreTabs.value = processFilterData(safeTabs.slice(6)); // 仅解析,不过滤\n } else {\n editableTabs.value = processFilterData(safeTabs); // 仅解析,不过滤\n moreTabs.value = [];\n }\n if (props.viewIdFromList) {\n isEditing.value = true;\n viewId.value = props.viewIdFromList;\n }\n // 2. 根据操作类型设置激活标签\n if (isEditing.value) {\n // 编辑操作:保持当前tab不变\n isEditing.value = false; // 重置标志位\n nextTick(() => {\n getEditableTabsValue();\n emit('tabClick', viewId.value, 'refresh');\n });\n } else {\n // 检查当前选中的视图是否还存在\n const currentViewExists = safeTabs.some((item) => item.id === viewId.value);\n if (currentViewExists) {\n // 如果当前选中的视图还存在,保持选中状态\n nextTick(() => {\n getEditableTabsValue();\n });\n } else {\n // 其他操作:重置到第一个tab\n isShowClickTab.value = false;\n clickViewName.value = '';\n editableTabsValue.value = safeTabs.length > 0 ? safeTabs[0].viewName : '';\n viewId.value = safeTabs.length > 0 ? safeTabs[0]?.id : 0;\n nextTick(() => {\n emit('tabClick', viewId.value);\n });\n }\n }\n },\n { deep: true, immediate: true },\n);\n\n// 视图保存后通知父组件刷新\n// function handleViewSaved() {\n// // eslint-disable-next-line vue/custom-event-name-casing\n// emit('tab-update');\n// }\n</script>\n\n<style scoped>\n.flex-center {\n display: flex;\n align-items: center;\n}\n\n.view-box {\n overflow-x: auto;\n}\n\n.view-box :deep(.el-tabs) {\n max-width: 80%;\n overflow: hidden;\n}\n\n.view-more {\n margin-left: 20px;\n margin-top: -15px;\n}\n\n.more-txt {\n max-width: 80px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.plus-icon {\n margin-left: 20px;\n margin-top: -15px;\n}\n\n.fixed-width {\n width: 100px;\n box-sizing: border-box;\n}\n\n.tab-title {\n display: block;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin-left: 5px;\n width: 75px;\n text-align: center;\n}\n\n/* 新增:标签容器样式 */\n.tab-label-container {\n display: flex;\n align-items: center;\n position: relative;\n}\n\n/* 空过滤条件提示样式 */\n.empty-filter-tip {\n color: #999;\n font-size: 12px;\n padding: 4px 0;\n}\n\n.span-box span:first-child {\n color: #909399;\n margin-right: 5px;\n}\n\n:deep(.el-dropdown-menu__item) {\n}\n</style>\n","<template>\n <div class=\"view-manager-container\" :data-test-id=\"`${dataTextId}-DIV-XGm3Sf`\">\n <!-- 视图标签页 -->\n <viewTabs\n ref=\"viewTabsRef\"\n :key=\"permissionData.viewId\"\n :tabs=\"allViewTabs\"\n :view-type=\"true\"\n :view-id-from-list=\"null\"\n :select-options=\"selectOptions\"\n :data-test-id=\"`${dataTextId}-VIEWTABS-7oMOT6`\"\n @tab-update=\"handleTabUpdate\"\n @open-view-drawer=\"openViewListDrawer\"\n @tabClick=\"handleTabClick\"\n @open-log-drawer=\"openViewRecordDrawer\"\n />\n <!-- 视图列表抽屉 -->\n <viewList\n ref=\"viewListRef\"\n :permission-data=\"permissionData\"\n :select-options=\"selectOptions\"\n :data-test-id=\"`${dataTextId}-VIEWLIST-cyMJsA`\"\n :default-create-time-string=\"defaultCreateTimeString\"\n @update-view-tabs=\"updateViewTabs\"\n />\n <!-- 视图操作记录抽屉 -->\n <viewRecord ref=\"viewRecordRef\" :page-data=\"permissionData\" :data-test-id=\"`${dataTextId}-VIEWRECORD-2RlrfD`\" />\n <!-- 视图创建/编辑/复制抽屉 -->\n <createView\n ref=\"createViewRef\"\n :permission-data=\"permissionData\"\n :select-options=\"selectOptions\"\n :data-test-id=\"`${dataTextId}-CREATEVIEW-uTu1Xa`\"\n :default-create-time-string=\"defaultCreateTimeString\"\n @updataView=\"handleTabUpdate\"\n />\n </div>\n</template>\n<script setup>\nimport { ref, onMounted } from 'vue';\nimport viewTabs from '../../../Layout/modules/viewFile/viewTabs.vue';\nimport viewList from '../../../Layout/modules/viewFile/viewList.vue';\nimport viewRecord from '../../../Layout/modules/viewFile/viewRecord.vue';\nimport createView from '../../../Layout/modules/viewFile/createView.vue';\nimport apiFunction from '@/scriptFiles/checkApiErrorMechanism.js';\nimport { ElMessage } from 'element-plus';\nimport { useI18n } from 'vue-i18n';\nconst { t } = useI18n();\n\n// Props\nconst props = defineProps({\n permissionData: {\n type: Object,\n default: () => ({}),\n },\n selectOptions: {\n type: Object,\n default: () => ({}),\n },\n dataTextId: String,\n defaultCreateTimeString: {\n type: String,\n default: 'createTime',\n },\n});\n// Emits\nconst emit = defineEmits(['update:permissionData']);\n// Refs\nconst viewTabsRef = ref(null);\nconst viewListRef = ref(null);\nconst viewRecordRef = ref(null);\nconst createViewRef = ref(null);\n// 视图标签列表(内部管理)\nconst allViewTabs = ref([]);\n\n// 获取视图标签列表\nconst getViewTabs = async () => {\n try {\n const res = await apiFunction.getViewOnlyReadList({\n permissionCode: props.permissionData.permissionCode,\n });\n if (res.data?.code === 0) {\n allViewTabs.value = [...res.data.content];\n return res.data.content;\n } else {\n ElMessage.error(t(res.data.message));\n }\n } catch (error) {\n ElMessage.error('获取视图标签列表失败');\n }\n};\n\n// 处理标签页更新\nconst handleTabUpdate = () => {\n // 重新获取视图列表\n getViewTabs();\n};\n\n// 打开视图列表抽屉\nconst openViewListDrawer = () => {\n if (viewListRef.value) {\n viewListRef.value.open();\n }\n};\n\n// 处理标签页点击\nconst handleTabClick = (data, type) => {\n // 处理编辑/复制视图及常规切换逻辑\n if (type === 0 || type === 2) {\n // 编辑或复制视图逻辑 - 直接打开createView组件\n if (createViewRef.value) {\n // type: 0=编辑, 2=复制\n createViewRef.value.open(data, type === 2);\n }\n } else {\n // 直接调用emit,不等待其他操作\n emit('update:permissionData', {\n ...props.permissionData,\n viewId: data,\n });\n }\n};\n\n// 打开视图记录抽屉\nconst openViewRecordDrawer = () => {\n if (viewRecordRef.value) {\n viewRecordRef.value.open();\n }\n};\n\n// 更新视图标签\nconst updateViewTabs = (newTabOrderList, viewId) => {\n // 更新本地视图标签列表\n allViewTabs.value = [...newTabOrderList];\n // 如果有新的视图ID,更新permissionData\n if (viewId) {\n emit('update:permissionData', {\n ...props.permissionData,\n viewId: viewId,\n });\n }\n // 重新获取最新的视图列表\n getViewTabs();\n};\n\n// 组件挂载时执行\nonMounted(() => {\n // 获取视图标签列表\n getViewTabs();\n});\n\ndefineExpose({\n // 打开视图列表抽屉\n openViewList: () => {\n openViewListDrawer();\n },\n // 打开视图操作记录抽屉\n openViewRecord: () => {\n openViewRecordDrawer();\n },\n});\n</script>\n\n<style scoped>\n.view-manager-container {\n width: 100%;\n height: 100%;\n padding: 1rem;\n box-sizing: border-box;\n}\n</style>\n","<template>\n <div\n class=\"header-buttons-container\"\n :class=\"`buttons-position-${position}`\"\n :data-test-id=\"`${dataTestId}-DIV-eobZrN`\"\n >\n <div\n v-for=\"(button, index) in buttons\"\n :key=\"button.key\"\n class=\"header-button-item\"\n :data-test-id=\"`${dataTestId}-DIV-Y656ZM-${index}`\"\n >\n <!-- 普通按钮 -->\n <el-button\n v-if=\"!button.dropdownItems\"\n :class=\"!button.link ? 'margin_right_1rem' : ''\"\n :type=\"button.type || 'primary'\"\n :plain=\"button.plain || false\"\n :round=\"button.round || false\"\n :circle=\"button.circle || false\"\n :link=\"button.link || false\"\n :size=\"button.size\"\n :data-test-id=\"`${dataTestId}-EL-BUTTON-mi1dnO-${index}`\"\n :loading=\"button.loading || false\"\n @click=\"button.func()\"\n >\n <v-icon\n v-if=\"button.icon\"\n :class=\"button.icon\"\n style=\"margin-right: 0.25rem\"\n :data-test-id=\"`${dataTestId}-V-ICON-GpCo9D-${index}`\"\n />\n <template v-if=\"!button.circle && button.label\">\n {{ button.label }}\n </template>\n </el-button>\n <!-- 下拉按钮 -->\n <el-dropdown\n v-else\n ref=\"dropdownRef\"\n :hide-on-click=\"false\"\n trigger=\"click\"\n :data-test-id=\"`${dataTestId}-EL-DROPDOWN-WliCoC-${index}`\"\n >\n <el-button\n :type=\"button.type || 'primary'\"\n :plain=\"button.plain || false\"\n :round=\"button.round || false\"\n :circle=\"button.circle || false\"\n :link=\"button.link || false\"\n :size=\"button.size\"\n :data-test-id=\"`${dataTestId}-EL-BUTTON-0bdOsM-${index}`\"\n :loading=\"button.loading || false\"\n >\n <v-icon\n v-if=\"button.icon\"\n :class=\"button.icon\"\n style=\"margin-right: 0.5rem\"\n :data-test-id=\"`${dataTestId}-V-ICON-gQZNcf-${index}`\"\n />\n {{ button.label }}\n <!-- <v-icon v-if=\"!button.circle\" class=\"mdi mdi-chevron-down\" style=\"margin-left: 0.25rem\"></v-icon> -->\n </el-button>\n <template #dropdown>\n <el-dropdown-menu :data-test-id=\"`${dataTestId}-EL-DROPDOWN-MENU-ZwOGul-${index}`\">\n <el-dropdown-item\n v-for=\"(item, index) in button.dropdownItems\"\n :key=\"item.key\"\n :data-test-id=\"`${dataTestId}-EL-DROPDOWN-ITEM-QbT4TZ-${index}`\"\n >\n <el-button\n :data-test-id=\"`${dataTestId}-EL-BUTTON-B8WbcZ-${index}`\"\n :type=\"item.type || 'primary'\"\n :plain=\"item.plain || false\"\n :round=\"item.round || false\"\n :link=\"item.link || false\"\n :size=\"item.size\"\n :loading=\"item.loading || false\"\n @click=\"item.func()\"\n >\n <v-icon\n v-if=\"item.icon\"\n :class=\"item.icon\"\n style=\"margin-right: 0.25rem\"\n :data-test-id=\"`${dataTestId}-V-ICON-lmPYuR-${index}`\"\n />\n <template v-if=\"!item.circle && item.label\">\n {{ item.label }}\n </template>\n </el-button>\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\ndefineProps({\n buttons: {\n type: Array,\n required: true,\n default: () => [],\n },\n position: {\n type: String,\n default: 'left', // 默认为居左\n validator: (value) => {\n // 验证位置值必须是以下三个之一\n return ['left', 'center', 'right'].includes(value);\n },\n },\n dataTestId: String,\n});\nconst dropdownRef = ref(null);\n</script>\n\n<style scoped>\n.header-buttons-container {\n display: flex;\n padding: 1rem;\n justify-content: flex-end;\n box-sizing: border-box;\n}\n\n.header-button-item {\n display: flex;\n align-items: center;\n}\n.margin_right_1rem {\n margin-right: 1rem;\n}\n</style>\n","const getTextWidth = (text) => {\n const span = document.createElement('span');\n span.style.visibility = 'hidden';\n span.style.position = 'absolute';\n span.style.top = '-9999px';\n span.style.whiteSpace = 'nowrap';\n span.style.fontSize = '16px';\n span.innerText = text;\n document.body.appendChild(span);\n const width = span.offsetWidth + 16;\n document.body.removeChild(span);\n return width;\n};\nexport function getColumnWidth(label, prop, tableData, minWidth = 80) {\n //label表头名称\n //prop对应的内容\n //tableData表格数据\n //minWidth最小宽度\n const padding = 10; // 列内边距\n let arr = tableData.map((item) => item[prop]);\n arr.push(label); //拼接内容和表头数据\n const contentWidths = arr.map((item) => {\n const value = item ? String(item) : '';\n const textWidth = getTextWidth(value);\n return textWidth + padding > 300 ? 300 : textWidth + padding;\n });\n const maxWidth = Math.max(...contentWidths);\n return Math.max(minWidth, maxWidth);\n}\n","<template>\n <!-- table组件 -->\n <div class=\"table-wrapper\" :data-test-id=\"`${dataTestId}-DIV-To1wh5`\">\n <div class=\"table-content\" :data-test-id=\"`${dataTestId}-DIV-cL2A1K`\">\n <el-table\n ref=\"tableRef\"\n v-loading=\"loading\"\n v-shift-select:tableRef\n :data=\"tableData\"\n height=\"100%\"\n style=\"width: 100%\"\n border\n highlight-current-row\n scrollbar-always-on\n stripe\n :show-summary=\"showSummary\"\n :summary-method=\"summaryMethod\"\n :data-test-id=\"`${dataTestId}-EL-TABLE-YQ7at9`\"\n :default-sort=\"defaultSort\"\n v-bind=\"$attrs\"\n @cell-click=\"onCellClick\"\n @selection-change=\"handleSelectionChange\"\n @sort-change=\"onSortChange\"\n >\n <!-- 选择列 -->\n <el-table-column\n v-if=\"showSelection\"\n type=\"selection\"\n :width=\"showSummary ? 60 : 50\"\n :selectable=\"selectable\"\n align=\"center\"\n :data-test-id=\"`${dataTestId}-EL-TABLE-COLUMN-Sc8zKF`\"\n />\n <!-- 序号列 -->\n <el-table-column\n v-if=\"showIndex\"\n type=\"index\"\n label=\"#\"\n width=\"50\"\n align=\"center\"\n fixed=\"left\"\n :data-test-id=\"`${dataTestId}-EL-TABLE-COLUMN-vQ3j6j`\"\n >\n <template #default=\"{ $index }\">\n {{ getRowIndex($index) }}\n </template>\n </el-table-column>\n <!-- 动态列 -->\n <el-table-column\n v-for=\"(column, index) in tableColumns\"\n :key=\"column.value\"\n :label=\"column.text\"\n :prop=\"String(column.value)\"\n :fixed=\"column.isFixed ? 'left' : false\"\n align=\"center\"\n show-overflow-tooltip\n :sortable=\"column.sortable\"\n :min-width=\"column.minWidth || columnMinWidth || 120\"\n :width=\"column.isCustom ? getColumnWidth(column.text, String(column.value), tableData, 200) : 'auto'\"\n :data-test-id=\"`${dataTestId}-EL-TABLE-COLUMN-vQ3j6j-${index}`\"\n :sort-params=\"column.sortParams\"\n v-bind=\"column.attrs\"\n >\n <!-- \n 表头列有规则描述(tooltipSlot/tooltipContent同时存在时优先显示columnSlot)\n {\n tooltipIcon: 'icon图标用于触发tooltip',\n tooltipSlot: 'tooltip显示内容,用于自定义组件显示内容',\n tooltipContent: 'tooltip显示内容,默认的文本字符串'\n }\n -->\n <template #header>\n <div\n style=\"display: inline-flex; justify-content: center; align-items: center\"\n :data-test-id=\"`${dataTestId}-DIV-asjQke`\"\n >\n <!-- 左侧插槽 -->\n <component\n :is=\"column.leftSlot\"\n v-if=\"column.leftSlot\"\n :data-test-id=\"`${dataTestId}-COMPONENT-pgSWCu`\"\n />\n <span :data-test-id=\"`${dataTestId}-SPAN-iBEcrY`\">{{ column.text }}</span>\n <!-- 右侧插槽 -->\n <component\n :is=\"column.rightSlot\"\n v-if=\"column.rightSlot\"\n :data-test-id=\"`${dataTestId}-COMPONENT-WYbm6e`\"\n />\n </div>\n </template>\n <!-- 需要格式化的table项 -->\n <!-- 自定义列, 当格式化无法满足时可以使用自定义列 -->\n <template v-if=\"column.columntSlot\" #default=\"{ row, $index }\">\n <component\n :is=\"column.columntSlot\"\n :row=\"row\"\n :index=\"$index\"\n :data-test-id=\"`${dataTestId}-COMPONENT-24Y9n6`\"\n />\n </template>\n <template v-else-if=\"column.formatter\" #default=\"{ row }\">\n <!-- \n tags格式化格式: {\n bgColor: 'tag背景颜色',\n textColor: 'tag文字颜色',\n text: '国际化后的文本',\n } \n -->\n <el-tag\n v-if=\"column.formatterType === 'tags'\"\n :style=\"`color:${column.formatter(row, column).bgColor}`\"\n style=\"margin-left: 4px\"\n :color=\"column.formatter(row, column).textColor\"\n :data-test-id=\"`${dataTestId}-EL-TAG-mfRiQa`\"\n >\n {{ column.formatter(row, column).text }}\n </el-tag>\n <div v-else-if=\"column.formatterType === 'icon'\" :data-test-id=\"`${dataTestId}-DIV-bLxOMG`\">\n <!-- \n icon格式化格式: {\n icon: '需要显示v-icon图标', \n color: '图标的颜色', \n text: '国际化后的文本'\n } \n text配置的话会显示tooltip,不配置则不显示 \n -->\n <el-tooltip\n v-if=\"column.formatter(row, column).text\"\n class=\"box-item\"\n effect=\"dark\"\n :content=\"column.formatter(row, column).text\"\n placement=\"top\"\n :data-test-id=\"`${dataTestId}-EL-TOOLTIP-LsKqgG`\"\n >\n <v-icon\n :class=\"column.formatter(row, column).icon\"\n :style=\"`color: ${column.formatter(row, column).color};`\"\n :data-test-id=\"`${dataTestId}-V-ICON-qSsT49`\"\n />\n </el-tooltip>\n <v-icon\n v-else\n :class=\"column.formatter(row, column).icon\"\n :style=\"`color: ${column.formatter(row, column).color};`\"\n :data-test-id=\"`${dataTestId}-V-ICON-qSsT49`\"\n />\n </div>\n <!-- \n file格式化格式: [{\n file: '文件地址', \n name: '文件名称,用于列表显示', \n }]\n 如果没有name则显示file,如果都没有则显示占位符\n -->\n <div v-else-if=\"column.formatterType === 'file'\" :data-test-id=\"`${dataTestId}-DIV-6Qg7rD`\">\n <div\n v-for=\"(file, cut) in column.formatter(row, column)\"\n :key=\"cut\"\n class=\"file-name\"\n :style=\"`color: ${file.color || '#409eff'};`\"\n :data-test-id=\"`${dataTestId}-DIV-Et2BFU-${cut}`\"\n >\n {{ file.name || file.file || '---' }}\n <span v-if=\"cut < column.formatter(row, column).length - 1\" :data-test-id=\"`${dataTestId}-SPAN-wLZkzY`\">\n ,\n </span>\n </div>\n </div>\n <!-- \n link格式化格式: {\n link: '链接地址', \n name: '链接名称,用于列表显示', \n }\n 如果没有name则显示link,如果都没有则显示占位符\n -->\n <div v-else-if=\"column.formatterType === 'link'\" :data-test-id=\"`${dataTestId}-DIV-54trNN`\">\n <el-link\n :href=\"column.formatter(row, column).link\"\n :underline=\"column.formatter(row, column).underline\"\n target=\"_blank\"\n :style=\"formatterLinkStyle(row, column)\"\n :data-test-id=\"`${dataTestId}-EL-LINK-8g2RDk`\"\n >\n {{ column.formatter(row, column).name || column.formatter(row, column).link || '---' }}\n </el-link>\n </div>\n <span v-else :data-test-id=\"`${dataTestId}-SPAN-rCQPnk`\">{{ column.formatter(row, column) || '---' }}</span>\n </template>\n </el-table-column>\n <!-- 操作列(固定) -->\n <el-table-column\n v-if=\"tableActionsWidth > 0\"\n :label=\"t('action')\"\n :min-width=\"tableActionsWidth\"\n :fixed=\"actionsFixed\"\n align=\"center\"\n :data-test-id=\"`${dataTestId}-EL-TABLE-COLUMN-gLrVJL`\"\n >\n <template #default=\"{ row, $index }\">\n <!-- 直接使用父组件传递的 slot,并传递数据 -->\n <slot name=\"tableActions\" :row=\"row\" :index=\"$index\" />\n </template>\n </el-table-column>\n </el-table>\n </div>\n <!-- 分页组件 -->\n <div v-if=\"showPagination\" class=\"pagination-content\" :data-test-id=\"`${dataTestId}-DIV-UYLlzi`\">\n <pagination\n style=\"background-color: transparent; padding-bottom: 0.625rem; padding-top: 1.25rem\"\n :total=\"total\"\n :current-page=\"currentPage\"\n :page-size=\"pageSize\"\n :selected-num=\"selectedRows.length\"\n :current-count=\"tableData.length\"\n :has-selected=\"true\"\n :permission-code=\"permissionCode\"\n :data-test-id=\"`${dataTestId}-PAGINATION-msjXvX`\"\n :page-type=\"pageType\"\n @changePage=\"handlePageChange\"\n />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { getColumnWidth } from '@/utils/tableWidth';\nimport pagination from '@/components/Pagination.vue';\n\nconst props = defineProps({\n // 表格数据\n tableData: {\n type: Array,\n default: () => [],\n },\n // 列配置\n columns: {\n type: Array,\n default: () => [],\n },\n // 操作列的最小宽度,设置为0则不显示\n tableActionsWidth: {\n type: Number,\n default: 120,\n },\n // 分页信息\n currentPage: {\n type: Number,\n default: 1,\n },\n pageSize: {\n type: Number,\n default: 20,\n },\n // table的loading状态\n loading: {\n type: Boolean,\n default: false,\n },\n // 功能开关\n showSelection: {\n type: Boolean,\n default: true,\n },\n // 是否显示序号列\n showIndex: {\n type: Boolean,\n default: true,\n },\n // 操作列固定规则\n actionsFixed: {\n type: [Boolean, String],\n default: 'right',\n },\n // 列的最小宽度\n columnMinWidth: {\n type: Number,\n default: 200,\n },\n permissionCode: {\n type: String,\n default: '',\n },\n total: {\n // table数据总数量,用于分页\n type: Number,\n default: 0,\n },\n // 复选框选择的数据长度,用于分页组件回显已选中条数\n selectedNum: {\n type: Number,\n default: 0,\n },\n // 默认的排序列的 prop 和顺序。\n defaultSort: {\n type: Object,\n default: () => ({}),\n },\n // 是否显示合计行\n showSummary: {\n type: Boolean,\n default: false,\n },\n // 合并格式方法\n summaryMethod: Function,\n // 选择列禁用规则\n selectable: Function,\n pageType: Number,\n // 是否显示分页组件\n showPagination: {\n type: Boolean,\n default: true,\n },\n dataTestId: String,\n});\n\nconst $emit = defineEmits([\n 'selectionChange', // 选中行\n 'sortChange', // 自定义排序\n 'cellClick', // 单元格点击\n 'pageChange',\n]);\nconst { t } = useI18n();\nconst tableRef = ref();\nconst selectedRows = ref([]);\nconst tableColumns = computed(() => {\n return props.columns.filter((item) => !!item.isShown);\n});\n// 计算行索引\nconst getRowIndex = (index) => {\n return (props.currentPage - 1) * props.pageSize + index + 1;\n};\n// 排序\nfunction onSortChange(e) {\n if (e.column.sortable === 'custom') {\n $emit('sortChange', e);\n } else {\n tableRef.value.sort(e.prop, e.order);\n }\n}\nfunction formatterLinkStyle(row, column) {\n const obj = column.formatter(row, column);\n return `\n --el-link-hover-text-color: ${obj.hoverColor || '#409eff'};\n --el-link-text-color: ${obj.color || '#606266'}\n `;\n}\n// 选择变化事件\nconst handleSelectionChange = (selection) => {\n selectedRows.value = selection;\n $emit('selectionChange', selection);\n};\n\n// 清空选择\nconst clearSelection = () => {\n tableRef.value?.clearSelection();\n};\n\n// 切换选择行\nconst toggleRowSelection = (row, selected) => {\n tableRef.value?.toggleRowSelection(row, selected);\n};\nconst handlePageChange = (val) => {\n $emit('pageChange', val);\n};\n// 单元格点击事件,返回row和cell\nfunction onCellClick(row, cell) {\n $emit('cellClick', {\n row,\n cell,\n });\n}\n// 暴露方法\ndefineExpose({\n tableRef,\n getTableRef: () => tableRef.value,\n clearSelection,\n toggleRowSelection,\n selectedRows,\n});\n</script>\n\n<style lang=\"scss\" scoped>\n@use '@/scss/base/table.scss';\n.table-wrapper {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n .table-content {\n flex: 1;\n overflow: hidden;\n }\n .file-name {\n color: rgb(18, 80, 136);\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n :deep(.el-table) {\n --el-table-header-bg-color: #edf3f8;\n --el-table-header-text-color: #303133;\n --el-table-border-color: #ebeef5;\n --el-table-row-hover-bg-color: #f5f7fa;\n\n height: 100%;\n\n .el-table__body-wrapper {\n scrollbar-width: thin;\n\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: #c0c4cc;\n border-radius: 3px;\n }\n }\n\n // 操作列样式\n .el-table__fixed-right {\n .el-button-group {\n :deep(.el-button) {\n padding: 4px 8px;\n\n &:hover {\n color: var(--el-color-primary);\n background-color: var(--el-fill-color-light);\n }\n }\n }\n }\n }\n}\n</style>\n","<template>\n <div :data-test-id=\"`${dataTestId}-DIV-CHFzZk`\">\n <pageContent\n v-loading=\"pageLoading\"\n :is-tab=\"false\"\n :is-view=\"true\"\n :data-test-id=\"`${dataTestId}-PAGECONTENT-izX8Nl`\"\n >\n <template #viewContent>\n <!-- 顶部tabs操作栏 -->\n <header-tabs\n v-if=\"hasHeaderTabs\"\n ref=\"viewManagerRef\"\n :permission-data=\"permissionData\"\n :data-test-id=\"`${dataTestId}-DIV-9lfM7M`\"\n :select-options=\"selectOptions\"\n :default-create-time-string=\"defaultCreateTimeString\"\n @update:permissionData=\"handlePermissionDataUpdate\"\n />\n </template>\n <template #headerContent>\n <!-- 操作按钮区域 -->\n <header-operation\n v-if=\"hasHeaderOperation\"\n :buttons=\"topButtons\"\n position=\"right\"\n :data-test-id=\"`${dataTestId}-HEADER-OPERATION-XO8TJP`\"\n />\n </template>\n <template #searchContent>\n <!-- 搜索表单区域 -->\n <customFilter\n v-if=\"hasSearchContent\"\n ref=\"querySearchRef\"\n :can-edit-headers=\"tableColumns\"\n :data-test-id=\"`${dataTestId}-CUSTOMFILTER-7SqxcZ`\"\n :permission-code=\"permissionCode\"\n :has-column-config=\"hasColumnConfig\"\n :select-options=\"selectOptions\"\n @filterSearch=\"query\"\n @parentSaveData=\"parentSaveData\"\n @childSaveData=\"childSaveData\"\n />\n </template>\n <template #tableContent>\n <table-content\n ref=\"tableContentRef\"\n :loading=\"tableLoading\"\n :table-data=\"dataList\"\n :columns=\"tableColumns\"\n :total=\"total\"\n :current-page=\"currentPage\"\n :page-size=\"pageSize\"\n :table-actions-width=\"tableActionsWidth\"\n :show-selection=\"showSelection\"\n :show-index=\"showIndex\"\n :column-min-width=\"columnMinWidth\"\n :permission-code=\"permissionCode\"\n :page-type=\"pageType\"\n :show-pagination=\"showPagination\"\n :data-test-id=\"`${dataTestId}-TABLE-CONTENT-NH3XBf`\"\n :default-sort=\"defaultSort\"\n :show-summary=\"showSummary\"\n :summary-method=\"summaryMethod\"\n :selectable=\"selectable\"\n v-bind=\"$attrs\"\n @cellClick=\"$emit('cellClick', $event)\"\n @sortChange=\"$emit('sortChange', $event)\"\n @selectionChange=\"onSelectionChange\"\n @pageChange=\"onPageChange\"\n >\n <template #customColumn=\"{ row, index }\">\n <slot name=\"customColumn\" :row=\"row\" :index=\"index\" />\n </template>\n <template #tableActions=\"{ row, index }\">\n <slot name=\"tableActions\" :row=\"row\" :index=\"index\" />\n </template>\n </table-content>\n </template>\n </pageContent>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\n\n// 组件导入\nimport pageContent from '@/components/pageContent.vue';\nimport HeaderTabs from '@/components/customTable/components/headerTabs/index.vue';\nimport HeaderOperation from '@/components/customTable/components/headerOperation/index.vue';\nimport TableContent from '@/components/customTable/components/tableContent/index.vue';\nimport customFilter from '@/components/customFilter/customFilter.vue';\n\nconst props = defineProps({\n hasHeaderTabs: {\n // 是否显示顶部tabs\n type: Boolean,\n default: true,\n },\n hasHeaderOperation: {\n // 是否显示顶部操作按钮组\n type: Boolean,\n default: true,\n },\n hasSearchContent: {\n // 是否显示搜索表单\n type: Boolean,\n default: true,\n },\n hasColumnConfig: {\n // 是否显示列配置,由于列配置存在于customFilter中,前提必须要hasSearchContent=true\n // 分开控制的话看是否需要调整搜索组件的比例\n type: Boolean,\n default: true,\n },\n auto: {\n // 是否自动加载数据\n type: Boolean,\n default: true,\n },\n pageLoading: {\n // 页面加载状态\n type: Boolean,\n default: false,\n },\n tableLoading: {\n // table加载状态\n type: Boolean,\n default: false,\n },\n total: {\n // table数据总数量,用于分页\n type: Number,\n default: 0,\n },\n tableColumns: {\n // 定义的table列数据\n type: Array,\n default: () => [],\n },\n // 分页请求code码\n permissionCode: {\n type: String,\n default: '',\n },\n // 操作列的最小宽度,设置为0则不显示\n tableActionsWidth: {\n type: Number,\n default: 120,\n },\n // 功能开关,选择列\n showSelection: {\n type: Boolean,\n default: true,\n },\n // 是否显示序号列\n showIndex: {\n type: Boolean,\n default: true,\n },\n // 列的最小宽度,如果固定列配置中配置了minWidth则配置列优先使用minWidth,其他未配置的则使用columnMinWidth\n columnMinWidth: {\n type: Number,\n default: 200,\n },\n // 是否显示合计行\n showSummary: {\n type: Boolean,\n default: false,\n },\n // 合并格式方法\n summaryMethod: Function,\n // 选择列禁用规则\n selectable: Function,\n // 视图组件数据\n permissionData: {\n type: Object,\n default: () => ({}),\n },\n selectOptions: {\n type: Object,\n default: () => ({}),\n },\n defaultCreateTimeString: {\n type: String,\n default: 'createTime',\n },\n // 顶部按钮组--固定在右边\n topButtons: {\n type: Array,\n default: () => [],\n },\n // 默认的排序列的 prop 和顺序。\n defaultSort: {\n type: Object,\n default: () => ({}),\n },\n pageType: Number,\n // 是否显示分页组件\n showPagination: {\n type: Boolean,\n default: true,\n },\n dataTestId: String,\n});\nconst $emit = defineEmits([\n 'update:modelValue',\n 'reload', // 表格请求数据\n 'sortChange', // 自定义排序\n 'selectionChange', // 选中行\n 'columnsSaveData', // 列配置更改\n 'columnsChildSaveData', // 子级列配置更改\n 'cellClick', // 单元格点击\n 'update:permissionData',\n]);\n// const { t } = useI18n();\nconst tableContentRef = ref();\nconst dataList = ref([]);\nconst selectList = ref([]);\nconst currentPage = ref(1);\nconst pageSize = ref(20);\nconst total = computed(() => {\n return props.total;\n});\n\n// 筛选条件\nconst paginationParams = computed(() => ({\n startIndex: (currentPage.value - 1) * pageSize.value,\n count: pageSize.value,\n}));\nfunction query(e) {\n currentPage.value = 1;\n // 将filterSearch事件传递给父组件\n $emit('filterSearch', e);\n}\n// table数据赋值\nfunction complete(data) {\n dataList.value = data;\n $emit('update:modelValue', data);\n}\n// 数据刷新,用于首次数据请求,刷新数据等\nfunction reload() {\n $emit('reload', paginationParams.value);\n}\n\nconst tableColumns = computed(() => {\n return props.tableColumns;\n});\nconst parentSaveData = async (val) => {\n $emit('columnsSaveData', val);\n};\n// 子级数据保存\nconst childSaveData = async (val) => {\n $emit('columnsChildSaveData', val);\n};\n// 页码切换\nconst onPageChange = (val) => {\n currentPage.value = val.page;\n pageSize.value = val.size;\n $emit('reload', paginationParams.value);\n};\n// 选择行变化\nfunction onSelectionChange(e) {\n selectList.value = e;\n $emit('selectionChange', e);\n}\n// 处理权限数据更新\nfunction handlePermissionDataUpdate(data) {\n currentPage.value = 1;\n $emit('update:permissionData', data);\n}\n// 暴露方法给父组件\ndefineExpose({\n tableContentRef,\n complete,\n reload,\n getTableData: () => dataList.value,\n});\n</script>\n\n<style lang=\"scss\" scoped>\n@use '@/scss/base/table.scss';\n\n.statusColor {\n min-width: 100px;\n height: 40px;\n text-align: center;\n line-height: 40px;\n}\n\n.a-text-class {\n color: #409eff;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.ellipsis-single-line {\n white-space: nowrap;\n /* 禁止换行 */\n overflow: hidden;\n /* 隐藏超出内容 */\n text-overflow: ellipsis;\n /* 显示省略号 */\n}\n</style>\n","// 组件库入口文件\n// 导入样式文件\nimport './scss/base/index.scss';\nimport './style.css';\n\n// 导出国际化配置\nexport * from './utils/i18n';\n\nimport SynColumnConfigNext from './components/columnConfigNext.vue';\nimport SynDialog from './components/dialog.vue';\nimport SynPageContent from './components/pageContent.vue';\nimport SynPagination from './components/Pagination.vue';\nimport SynPopover from './components/popover.vue';\nimport SynCustomFilter from './components/customFilter/customFilter.vue';\nimport SynFilterCriteria from './components/customFilter/filterCriteria.vue';\nimport SynFullPageGlobal from './components/Layout/modules/fullPageGlobal.vue';\nimport SynGlobalDialog from './components/Layout/tools/GlobalDialog.vue';\nimport SynCreateView from './components/Layout/modules/viewFile/createView.vue';\nimport SynViewList from './components/Layout/modules/viewFile/viewList.vue';\nimport SynViewRecord from './components/Layout/modules/viewFile/viewRecord.vue';\nimport SynViewTabs from './components/Layout/modules/viewFile/viewTabs.vue';\nimport SynViewFileFilterCriteria from './components/Layout/modules/viewFile/filterCriteria.vue';\nimport SynMainPageContent from './components/customTable/index.vue';\nimport SynTheWholeViewContent from './components/customTable/components/headerTabs/index.vue';\nimport SynRightButtonBlockContent from './components/customTable/components/headerOperation/index.vue';\nimport SynTableContent from './components/customTable/components/tableContent/index.vue';\n\n// 所有组件列表\nconst components = [\n SynColumnConfigNext,\n SynDialog,\n SynPageContent,\n SynPagination,\n SynPopover,\n SynCustomFilter,\n SynFilterCriteria,\n SynFullPageGlobal,\n SynGlobalDialog,\n SynCreateView,\n SynViewList,\n SynViewRecord,\n SynViewTabs,\n SynViewFileFilterCriteria,\n SynMainPageContent,\n SynTheWholeViewContent,\n SynRightButtonBlockContent,\n SynTableContent,\n];\n\n// 组件名称列表(与 components 数组顺序对应)\nconst componentNames = [\n 'SynColumnConfigNext',\n 'SynDialog',\n 'SynPageContent',\n 'SynPagination',\n 'SynPopover',\n 'SynCustomFilter',\n 'SynFilterCriteria',\n 'SynFullPageGlobal',\n 'SynGlobalDialog',\n 'SynCreateView',\n 'SynViewList',\n 'SynViewRecord',\n 'SynViewTabs',\n 'SynViewFileFilterCriteria',\n 'SynMainPageContent',\n 'SynTheWholeViewContent',\n 'SynRightButtonBlockContent',\n 'SynTableContent',\n];\n\n// 定义 install 方法,用于 Vue.use() 安装\nconst install = (app) => {\n components.forEach((component, index) => {\n const componentName = componentNames[index];\n // 尝试多种方式获取组件名,优先使用组件自身的 name\n const name = component.name || component.__name || componentName;\n if (name) {\n app.component(name, component);\n }\n });\n};\n\n// 如果通过 script 标签引入,自动安装\nif (typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n}\n\n// 导出所有组件和 install 方法\nexport {\n SynColumnConfigNext,\n SynDialog,\n SynPageContent,\n SynPagination,\n SynPopover,\n SynCustomFilter,\n SynFilterCriteria,\n SynFullPageGlobal,\n SynGlobalDialog,\n SynCreateView,\n SynViewList,\n SynViewRecord,\n SynViewTabs,\n SynViewFileFilterCriteria,\n SynMainPageContent,\n SynTheWholeViewContent,\n SynRightButtonBlockContent,\n SynTableContent,\n install,\n};\n\n// 默认导出,支持 Vue.use()\nexport default {\n install,\n};"],"names":["zhCn","English","zhTw","errorCodeTranslate","messages","zhCnFiles","elementZhCn","zhTwFiles","elementZhTw","enUsFiles","elementEn","i18n","createI18n","useI18n","props","__props","emit","__emit","parentDraggableItems","ref","childDraggableItems","handle","watch","parentSaveData","val","item","ElMessage","childSaveData","isFrozen","data","event","frozenCount","currentIndex","removed","firstNonFrozenIndex","i","lastFrozenIndex","dynamicClasses","onDragMove","evt","draggedIndex","draggedItem","relatedIndex","showDialog","close","BUILD_TYPE","serviceRoute","productionRoute","devRoute","localDevRoute","originPath","protocol","hostname","port","getBaseApi","axios","privateCloudCoreApiFunction","config","getCoreBaseApi","coreApiList","params","id","type","baseApiFun","baseApi","baseApiList","permissionCode","mesApiFun","mesApi","mesApiList","mmsApiFun","mmsApi","mmsApiList","apiFunction","delay","times","resolve","timeAddTime","JumpLogin","callRefreshAPI","action","prop","apiResult","response","errorCode","res","err","timeAdd","retryExecute","parameter","shouldAlert","result","error","createApiProxy","apis","args","allFunction","param","proxyObj","emits","pageInfo","changePage","handleSizeChange","handleCurrentChange","onMounted","t","isVisible","isShowlading","form","currentStrategy","computed","url","imageText","fetchPopoverImage","backendApiFunction","blob","reader","hyperLinkClick","docCustomFieldAndValues","hyperLinkUrlStr","ite","fileDownSerialize","fileName","link","dowFileItem","handleCustomFieldAndValues","fieldId","list","field","dayjs","fetchPopoverInfo","_a","customValue","customAttribute","rest","nextTick","componentKey","filterConditions","fieldSetting","isItDefault","otherFilterConditions","isTextLikeType","isSelectType","isDateType","isTextOperator","op","filterForm","getRules","rules","rule","value","callback","handleNumberValidate","index","timePrecisionOptions","timePrecisionOptionsFunction","timeType","dynamicFilteringOptions","pastOrFutureOptions","dayTypeOptions","startOrEndOptions","operatorOptions","operatorOptionsFunction","fieldTypeId","allowed","fieldSelectOptionsFunction","columnName","typeOptionsKey","key","f","opts","opt","fieldTypeFun","handleChangeColumn","handleChangeOperator","handleDateTimeDynamicFilteringValueChange","removeFilter","ElMessageBox","__expose","isLoad","visible","canEditHeaders","defaultFilterConditions","extraFilterConditions","fetchFilterConditions","code","message","content","addFilterCondition","getFieldSetting","docCustomSettings","fieldSettings","defaultFilterRef","extraFilterRef","loading","validate","defaultValidate","extraValidate","_b","handleSaveExtraFilter","it","num","handleSearch","defaultConditions","extraConditions","handleMoreFilter","popoverRef","referenceRef","handleClickOutside","popoverEl","referenceEl","isClickInside","isClickOnPopper","target","_c","_d","_f","_e","_h","_g","isClickInFilterCriteria","newVal","handleReset","stockViewQueryDataObj","searchObj","onBeforeUnmount","visibleShow","dialogEvent","closeOnClickModal","defHeight","optionClick","name","obj","btns","scope","optionFile","fieldSelectDataSource","NumberReg","v","__viteBrowserExternal","root","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","subtype","C","C_lib","Base","overrides","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","j","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","offset","cfg","messageUpdate","hash","hasher","C_algo","X32WordArray","C_x64","high","low","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","superInit","subInit","typedArray","typedArrayByteLength","utf16Chars","codePoint","utf16Str","utf16StrLength","swapEndian","word","map","base64Chars","byte1","byte2","byte3","triplet","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","bits1","bits2","bitsCombined","urlSafe","Hasher","T","MD5","M","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","a","b","c","d","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","x","s","n","W","SHA1","e","K","isPrime","sqrtN","factor","getFractionalBits","nPrime","SHA256","g","h","gamma0x","gamma0","gamma1x","gamma1","ch","maj","sigma0","sigma1","t1","t2","undef","require$$1","SHA224","X64Word","X64WordArray","X64Word_create","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1l","t1h","t2l","t2h","require$$2","SHA384","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","y","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","state","nBlockSizeLanes","M2i","M2i1","lane","round","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","hr","zl","zr","sl","sr","ar","br","cr","dr","er","f1","f2","f3","f4","f5","rotl","z","hasherBlockSize","hasherBlockSizeBytes","oKey","iKey","oKeyWords","iKeyWords","innerHash","hmac","HMAC","PBKDF2","password","salt","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","keySize","iterations","block","blockWords","blockWordsLength","intermediate","intermediateWords","EvpKDF","Base64","Cipher","xformMode","dataUpdate","finalProcessedData","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","finalProcessedBlocks","C_mode","BlockCipherMode","iv","CBC","xorBlock","thisBlock","C_pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","modeCreator","mode","CipherParams","cipherParams","formatter","C_format","OpenSSLFormatter","openSSLStr","ciphertextWords","encryptor","cipherCfg","plaintext","format","C_kdf","OpenSSLKdf","ivSize","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","Encryptor","counter","CTRGladman","incWord","b1","b2","b3","incCounter","OFB","ECB","lastBytePos","input","require$$3","require$$4","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AES","keyWords","nRounds","ksRows","keySchedule","ksRow","invKeySchedule","invKsRow","s0","s1","s2","s3","t0","t3","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","nSubKey","subKey","bitShift","invSubKeys","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","StreamCipher","RC4","keySigBytes","S","keyByteIndex","keyByte","generateKeystreamWord","keystreamWord","RC4Drop","C_","G","Rabbit","X","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","RabbitLegacy","N","ORIG_P","ORIG_S","BLOWFISH_CTX","ctx","BlowFish_Encrypt","left","right","Xl","Xr","temp","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","Blowfish","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","loadin","loadingFun","ElLoading","dataFilterList","dataInfo","reactive","locale","activeMenu","viewId","viewTypeTitle","isType","formData","filterCriteriaRef","basicFormRef","options","queryDepartmentStaff","iconColors","cascadeProperty","handleChange","newValues","setPerson","List","allList","getViewFilterList","custom","open","getDepartmentStaff","validateField","getTimeLongitude","getTimeFormat","getDynamicFilter","sql","getFutureOptions","getDateType","calculateTimestamp","timestamp","dimension","unitMs","getSqlInfo","title","sqlTitle","str","dateTitle","endTime","rangeSql","startSql","endSql","getIntervalInfo","getInfo","getFeild","getStringInfo","labelList","fieldOptions","parseDataFilter","filterObj","sqlList","fieldObj","ind","encryptionSql","saveView","filterValid","viewField","filterString","whereSql","iconType","processFilterData","editableTabs","parsedArray","twoDimensionalArray","subItem","part","createViewRef","draggableRef","allViews","idFromList","getViewTabList","addView","editFun","row","copyItem","handleDragEnd","doDeleteOperation","deleteItem","dialogTitle","dialogAlertDetail","openDrawer","closeViewListDrawer","objectToExcelTitle","object","titleList","ele","objectToExcelBodyWithoutMap","table","header","stringReplaced","replaceTo","bodyTemp","sortedObject","head","EXCEL","option","body","suffix","wscols","array","workBook","utils","workSheet","XLSX","arr","wsmerges","wsrow","file","contentSort","reject","fileData","viewRecordDrawer","page","headers","operationTypes","operatorList","getEmployeeList","queryForm","tableData","tableLoading","getOperateDetail","fieldString","fields","first","second","third","fourth","typeMap","operations","getViewLogList","handleQuery","handleFMounted","arg","pageParam","calcIndex","getLogList","getAllLogData","dateConvert","time","getOptypeName","handleExport","tempList","element","tempObject","bodyWithoutMap","closeViewRecordDrawer","isShowClickTab","clickViewName","moreTabs","editableTabsValue","drawerInitData","isEditing","isParsedFilterValid","parsedFilter","subArr","handleTabClick","tab","tabName","clickedTab","handleTabOperation2","tabItem","handleViewOption","command","getEditableTabsValue","foundInArray1","foundInArray2","newTabs","safeTabs","viewTabsRef","viewListRef","viewRecordRef","allViewTabs","getViewTabs","handleTabUpdate","openViewListDrawer","openViewRecordDrawer","updateViewTabs","newTabOrderList","dropdownRef","getTextWidth","text","span","width","getColumnWidth","label","minWidth","contentWidths","textWidth","maxWidth","$emit","tableRef","selectedRows","tableColumns","getRowIndex","onSortChange","formatterLinkStyle","column","handleSelectionChange","selection","clearSelection","toggleRowSelection","selected","handlePageChange","onCellClick","cell","tableContentRef","dataList","selectList","currentPage","pageSize","total","paginationParams","query","complete","reload","onPageChange","onSelectionChange","handlePermissionDataUpdate","components","SynColumnConfigNext","SynDialog","SynPageContent","SynPagination","SynPopover","SynCustomFilter","SynFilterCriteria","SynFullPageGlobal","SynGlobalDialog","SynCreateView","SynViewList","SynViewRecord","SynViewTabs","SynViewFileFilterCriteria","SynMainPageContent","SynTheWholeViewContent","SynRightButtonBlockContent","SynTableContent","componentNames","install","app","component","componentName"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,UAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,YAAY,SAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,UAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,SAAU;AAAA,UAC7EA,EAAe,WAAY,UAAU;AAAA,UAAGA,EAAe,WAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,SAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,YAAY,UAAU;AAAA,UAC7EA,EAAe,YAAY,UAAU;AAAA,UAAGA,EAAe,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AAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAc;AAAA,UACtD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAc;AAAA,UACtD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,UAAa;AAAA,UACrD;AAAA,YAAI;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY;AAAA,YACpC;AAAA,YAAY;AAAA,YAAY;AAAA,YAAY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","x_google_ignoreList":[0,1,2,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62]}
|