nsc-react-component 3.1.10 → 3.2.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/lib/base/modal/Confirm.js +6 -1
- package/lib/base/modal/Confirm.js.map +1 -1
- package/lib/base/upload/Upload.d.ts +8 -4
- package/lib/base/upload/Upload.js +69 -44
- package/lib/base/upload/Upload.js.map +1 -1
- package/lib/base/upload/index.d.ts +2 -45
- package/lib/base/upload/index.js +379 -370
- package/lib/base/upload/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -42,8 +42,13 @@ const Index = props => {
|
|
|
42
42
|
icon: null,
|
|
43
43
|
title: title,
|
|
44
44
|
content: content,
|
|
45
|
+
okButtonProps: {
|
|
46
|
+
style: {
|
|
47
|
+
backgroundColor: window.localStorage.getItem("sysThemeColor")
|
|
48
|
+
}
|
|
49
|
+
},
|
|
45
50
|
wrapClassName: cls(getLess(styles, "nsc-modal-confirm"), props.wrapClassName)
|
|
46
51
|
}));
|
|
47
52
|
};
|
|
48
53
|
export default Index;
|
|
49
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInN0eWxlcyIsImNvbmZpZyIsImdldExlc3MiLCJjbHMiLCJFeGNsYW1hdGlvbkNpcmNsZUZpbGxlZCIsIkNsb3NlT3V0bGluZWQiLCJJbmRleCIsInByb3BzIiwibW9kYWxCdXR0b24iLCJpY29uIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInN0eWxlIiwiY29sb3IiLCJjb25maXJtSWNvbiIsInRpdGxlIiwiY29udGVudCIsImNsb3NlSWNvbiIsIl9Nb2RhbCIsImNvbmZpcm0iLCJfb2JqZWN0U3ByZWFkIiwiY2VudGVyZWQiLCJjbG9zYWJsZSIsIm9rVGV4dCIsImNhbmNlbFRleHQiLCJib3JkZXJSYWRpdXMiLCJva0J1dHRvblByb3BzIiwiYmFja2dyb3VuZENvbG9yIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIndyYXBDbGFzc05hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL21vZGFsL0NvbmZpcm0udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCJhbnRkXCI7XHJcblxyXG5pbXBvcnQgdHlwZSB7IE1vZGFsRnVuY1Byb3BzIH0gZnJvbSBcImFudGQvbGliL21vZGFsXCI7XHJcblxyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL0NvbmZpcm0ubGVzc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCB7IEV4Y2xhbWF0aW9uQ2lyY2xlRmlsbGVkLCBDbG9zZU91dGxpbmVkIH0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmNvbnN0IEluZGV4ID0gKHByb3BzOiBNb2RhbEZ1bmNQcm9wcykgPT4ge1xyXG4gIGNvbnN0IHsgbW9kYWxCdXR0b24gfSA9IGNvbmZpZygpO1xyXG4gIGNvbnN0IGljb24gPSBwcm9wcy5pY29uID8gKFxyXG4gICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtbW9kYWwtY29uZmlybS1pY29uXCIpfT5cclxuICAgICAge3Byb3BzLmljb259XHJcbiAgICA8L3NwYW4+XHJcbiAgKSA6IChcclxuICAgIDxzcGFuXHJcbiAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLW1vZGFsLWNvbmZpcm0taWNvblwiKX1cclxuICAgICAgc3R5bGU9e3sgY29sb3I6IFwiI0Y5QjI0N1wiIH19XHJcbiAgICA+XHJcbiAgICAgIHttb2RhbEJ1dHRvbi5jb25maXJtSWNvbiA/IChcclxuICAgICAgICBtb2RhbEJ1dHRvbi5jb25maXJtSWNvblxyXG4gICAgICApIDogKFxyXG4gICAgICAgIDxFeGNsYW1hdGlvbkNpcmNsZUZpbGxlZCAvPlxyXG4gICAgICApfVxyXG4gICAgPC9zcGFuPlxyXG4gICk7XHJcbiAgbGV0IHRpdGxlID0gKFxyXG4gICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1tb2RhbC1jb25maXJtLXRpdGxlXCIpfT5cclxuICAgICAgeyFwcm9wcy5jb250ZW50ICYmIGljb259XHJcbiAgICAgIHtwcm9wcy50aXRsZSA/IHByb3BzLnRpdGxlIDogXCLmj5DnpLpcIn1cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcblxyXG4gIGxldCBjb250ZW50ID0gcHJvcHMuY29udGVudCA/IChcclxuICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtbW9kYWwtY29uZmlybS1jb250ZW50XCIpfT5cclxuICAgICAge2ljb259XHJcbiAgICAgIHtwcm9wcy5jb250ZW50fVxyXG4gICAgPC9kaXY+XHJcbiAgKSA6IG51bGw7XHJcbiAgbGV0IGNsb3NlSWNvbiA9IHByb3BzLmNsb3NlSWNvbiA/IChcclxuICAgIHByb3BzLmNsb3NlSWNvblxyXG4gICkgOiBtb2RhbEJ1dHRvbi5jbG9zZUljb24gPyAoXHJcbiAgICBtb2RhbEJ1dHRvbi5jbG9zZUljb25cclxuICApIDogKFxyXG4gICAgPENsb3NlT3V0bGluZWQgLz5cclxuICApO1xyXG4gIHJldHVybiBNb2RhbC5jb25maXJtKHtcclxuICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICBva1RleHQ6IFwi56Gu6K6kXCIsXHJcbiAgICBjYW5jZWxUZXh0OiBcIuWPlua2iFwiLFxyXG4gICAgc3R5bGU6IHtcclxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjEwcHhcIixcclxuICAgIH0sXHJcbiAgICAuLi5wcm9wcyxcclxuICAgIGNsb3NlSWNvbjogY2xvc2VJY29uLFxyXG4gICAgaWNvbjogbnVsbCxcclxuICAgIHRpdGxlOiB0aXRsZSxcclxuICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcbiAgICBva0J1dHRvblByb3BzOiB7XHJcbiAgICAgIHN0eWxlOiB7IGJhY2tncm91bmRDb2xvcjogd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3lzVGhlbWVDb2xvclwiKSB9LFxyXG4gICAgfSxcclxuICAgIHdyYXBDbGFzc05hbWU6IGNscyhcclxuICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLW1vZGFsLWNvbmZpcm1cIiksXHJcbiAgICAgIHByb3BzLndyYXBDbGFzc05hbWVcclxuICAgICksXHJcbiAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJbmRleDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBSzlCLE9BQU9DLE1BQU0sTUFBTSxnQkFBZ0I7QUFDbkMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsU0FBU0MsT0FBTyxRQUFRLGFBQWE7QUFDckMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsU0FBU0MsdUJBQXVCLEVBQUVDLGFBQWEsUUFBUSxtQkFBbUI7QUFDMUUsTUFBTUMsS0FBSyxHQUFJQyxLQUFxQixJQUFLO0VBQ3ZDLE1BQU07SUFBRUM7RUFBWSxDQUFDLEdBQUdQLE1BQU0sQ0FBQyxDQUFDO0VBQ2hDLE1BQU1RLElBQUksR0FBR0YsS0FBSyxDQUFDRSxJQUFJLGdCQUNyQlYsS0FBQSxDQUFBVyxhQUFBO0lBQU1DLFNBQVMsRUFBRVQsT0FBTyxDQUFDRixNQUFNLEVBQUUsd0JBQXdCO0VBQUUsR0FDeERPLEtBQUssQ0FBQ0UsSUFDSCxDQUFDLGdCQUVQVixLQUFBLENBQUFXLGFBQUE7SUFDRUMsU0FBUyxFQUFFVCxPQUFPLENBQUNGLE1BQU0sRUFBRSx3QkFBd0IsQ0FBRTtJQUNyRFksS0FBSyxFQUFFO01BQUVDLEtBQUssRUFBRTtJQUFVO0VBQUUsR0FFM0JMLFdBQVcsQ0FBQ00sV0FBVyxHQUN0Qk4sV0FBVyxDQUFDTSxXQUFXLGdCQUV2QmYsS0FBQSxDQUFBVyxhQUFBLENBQUNOLHVCQUF1QixNQUFFLENBRXhCLENBQ1A7RUFDRCxJQUFJVyxLQUFLLGdCQUNQaEIsS0FBQSxDQUFBVyxhQUFBO0lBQUtDLFNBQVMsRUFBRVQsT0FBTyxDQUFDRixNQUFNLEVBQUUseUJBQXlCO0VBQUUsR0FDeEQsQ0FBQ08sS0FBSyxDQUFDUyxPQUFPLElBQUlQLElBQUksRUFDdEJGLEtBQUssQ0FBQ1EsS0FBSyxHQUFHUixLQUFLLENBQUNRLEtBQUssR0FBRyxJQUMxQixDQUNOO0VBRUQsSUFBSUMsT0FBTyxHQUFHVCxLQUFLLENBQUNTLE9BQU8sZ0JBQ3pCakIsS0FBQSxDQUFBVyxhQUFBO0lBQUtDLFNBQVMsRUFBRVQsT0FBTyxDQUFDRixNQUFNLEVBQUUsMkJBQTJCO0VBQUUsR0FDMURTLElBQUksRUFDSkYsS0FBSyxDQUFDUyxPQUNKLENBQUMsR0FDSixJQUFJO0VBQ1IsSUFBSUMsU0FBUyxHQUFHVixLQUFLLENBQUNVLFNBQVMsR0FDN0JWLEtBQUssQ0FBQ1UsU0FBUyxHQUNiVCxXQUFXLENBQUNTLFNBQVMsR0FDdkJULFdBQVcsQ0FBQ1MsU0FBUyxnQkFFckJsQixLQUFBLENBQUFXLGFBQUEsQ0FBQ0wsYUFBYSxNQUFFLENBQ2pCO0VBQ0QsT0FBT2EsTUFBQSxDQUFNQyxPQUFPLENBQUFDLGFBQUEsQ0FBQUEsYUFBQTtJQUNsQkMsUUFBUSxFQUFFLElBQUk7SUFDZEMsUUFBUSxFQUFFLElBQUk7SUFDZEMsTUFBTSxFQUFFLElBQUk7SUFDWkMsVUFBVSxFQUFFLElBQUk7SUFDaEJaLEtBQUssRUFBRTtNQUNMYSxZQUFZLEVBQUU7SUFDaEI7RUFBQyxHQUNFbEIsS0FBSztJQUNSVSxTQUFTLEVBQUVBLFNBQVM7SUFDcEJSLElBQUksRUFBRSxJQUFJO0lBQ1ZNLEtBQUssRUFBRUEsS0FBSztJQUNaQyxPQUFPLEVBQUVBLE9BQU87SUFDaEJVLGFBQWEsRUFBRTtNQUNiZCxLQUFLLEVBQUU7UUFBRWUsZUFBZSxFQUFFQyxNQUFNLENBQUNDLFlBQVksQ0FBQ0MsT0FBTyxDQUFDLGVBQWU7TUFBRTtJQUN6RSxDQUFDO0lBQ0RDLGFBQWEsRUFBRTVCLEdBQUcsQ0FDaEJELE9BQU8sQ0FBQ0YsTUFBTSxFQUFFLG1CQUFtQixDQUFDLEVBQ3BDTyxLQUFLLENBQUN3QixhQUNSO0VBQUMsRUFDRixDQUFDO0FBQ0osQ0FBQztBQUVELGVBQWV6QixLQUFLIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Confirm.js","names":["React","styles","config","getLess","cls","ExclamationCircleFilled","CloseOutlined","Index","props","modalButton","icon","createElement","className","style","color","confirmIcon","title","content","closeIcon","_Modal","confirm","_objectSpread","centered","closable","okText","cancelText","borderRadius","wrapClassName"],"sources":["../../../src/components/base/modal/Confirm.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Modal } from \"antd\";\r\n\r\nimport type { ModalFuncProps } from \"antd/lib/modal\";\r\n\r\nimport styles from \"./Confirm.less\";\r\nimport config from \"../../config\";\r\nimport { getLess } from \"../../utils\";\r\nimport cls from \"classnames\";\r\nimport { ExclamationCircleFilled, CloseOutlined } from \"@ant-design/icons\";\r\nconst Index = (props: ModalFuncProps) => {\r\n const { modalButton } = config();\r\n const icon = props.icon ? (\r\n <span className={getLess(styles, \"nsc-modal-confirm-icon\")}>\r\n {props.icon}\r\n </span>\r\n ) : (\r\n <span\r\n className={getLess(styles, \"nsc-modal-confirm-icon\")}\r\n style={{ color: \"#F9B247\" }}\r\n >\r\n {modalButton.confirmIcon ? (\r\n modalButton.confirmIcon\r\n ) : (\r\n <ExclamationCircleFilled />\r\n )}\r\n </span>\r\n );\r\n let title = (\r\n <div className={getLess(styles, \"nsc-modal-confirm-title\")}>\r\n {!props.content && icon}\r\n {props.title ? props.title : \"提示\"}\r\n </div>\r\n );\r\n\r\n let content = props.content ? (\r\n <div className={getLess(styles, \"nsc-modal-confirm-content\")}>\r\n {icon}\r\n {props.content}\r\n </div>\r\n ) : null;\r\n let closeIcon = props.closeIcon ? (\r\n props.closeIcon\r\n ) : modalButton.closeIcon ? (\r\n modalButton.closeIcon\r\n ) : (\r\n <CloseOutlined />\r\n );\r\n return Modal.confirm({\r\n centered: true,\r\n closable: true,\r\n okText: \"确认\",\r\n cancelText: \"取消\",\r\n style: {\r\n borderRadius: \"10px\",\r\n },\r\n ...props,\r\n closeIcon: closeIcon,\r\n icon: null,\r\n title: title,\r\n content: content,\r\n wrapClassName: cls(\r\n getLess(styles, \"nsc-modal-confirm\"),\r\n props.wrapClassName\r\n ),\r\n });\r\n};\r\n\r\nexport default Index;\r\n"],"mappings":";;;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAK9B,OAAOC,MAAM,MAAM,gBAAgB;AACnC,OAAOC,MAAM,MAAM,cAAc;AACjC,SAASC,OAAO,QAAQ,aAAa;AACrC,OAAOC,GAAG,MAAM,YAAY;AAC5B,SAASC,uBAAuB,EAAEC,aAAa,QAAQ,mBAAmB;AAC1E,MAAMC,KAAK,GAAIC,KAAqB,IAAK;EACvC,MAAM;IAAEC;EAAY,CAAC,GAAGP,MAAM,CAAC,CAAC;EAChC,MAAMQ,IAAI,GAAGF,KAAK,CAACE,IAAI,gBACrBV,KAAA,CAAAW,aAAA;IAAMC,SAAS,EAAET,OAAO,CAACF,MAAM,EAAE,wBAAwB;EAAE,GACxDO,KAAK,CAACE,IACH,CAAC,gBAEPV,KAAA,CAAAW,aAAA;IACEC,SAAS,EAAET,OAAO,CAACF,MAAM,EAAE,wBAAwB,CAAE;IACrDY,KAAK,EAAE;MAAEC,KAAK,EAAE;IAAU;EAAE,GAE3BL,WAAW,CAACM,WAAW,GACtBN,WAAW,CAACM,WAAW,gBAEvBf,KAAA,CAAAW,aAAA,CAACN,uBAAuB,MAAE,CAExB,CACP;EACD,IAAIW,KAAK,gBACPhB,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAET,OAAO,CAACF,MAAM,EAAE,yBAAyB;EAAE,GACxD,CAACO,KAAK,CAACS,OAAO,IAAIP,IAAI,EACtBF,KAAK,CAACQ,KAAK,GAAGR,KAAK,CAACQ,KAAK,GAAG,IAC1B,CACN;EAED,IAAIC,OAAO,GAAGT,KAAK,CAACS,OAAO,gBACzBjB,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAET,OAAO,CAACF,MAAM,EAAE,2BAA2B;EAAE,GAC1DS,IAAI,EACJF,KAAK,CAACS,OACJ,CAAC,GACJ,IAAI;EACR,IAAIC,SAAS,GAAGV,KAAK,CAACU,SAAS,GAC7BV,KAAK,CAACU,SAAS,GACbT,WAAW,CAACS,SAAS,GACvBT,WAAW,CAACS,SAAS,gBAErBlB,KAAA,CAAAW,aAAA,CAACL,aAAa,MAAE,CACjB;EACD,OAAOa,MAAA,CAAMC,OAAO,CAAAC,aAAA,CAAAA,aAAA;IAClBC,QAAQ,EAAE,IAAI;IACdC,QAAQ,EAAE,IAAI;IACdC,MAAM,EAAE,IAAI;IACZC,UAAU,EAAE,IAAI;IAChBZ,KAAK,EAAE;MACLa,YAAY,EAAE;IAChB;EAAC,GACElB,KAAK;IACRU,SAAS,EAAEA,SAAS;IACpBR,IAAI,EAAE,IAAI;IACVM,KAAK,EAAEA,KAAK;IACZC,OAAO,EAAEA,OAAO;IAChBU,aAAa,
|
|
1
|
+
{"version":3,"file":"Confirm.js","names":["React","styles","config","getLess","cls","ExclamationCircleFilled","CloseOutlined","Index","props","modalButton","icon","createElement","className","style","color","confirmIcon","title","content","closeIcon","_Modal","confirm","_objectSpread","centered","closable","okText","cancelText","borderRadius","okButtonProps","backgroundColor","window","localStorage","getItem","wrapClassName"],"sources":["../../../src/components/base/modal/Confirm.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Modal } from \"antd\";\r\n\r\nimport type { ModalFuncProps } from \"antd/lib/modal\";\r\n\r\nimport styles from \"./Confirm.less\";\r\nimport config from \"../../config\";\r\nimport { getLess } from \"../../utils\";\r\nimport cls from \"classnames\";\r\nimport { ExclamationCircleFilled, CloseOutlined } from \"@ant-design/icons\";\r\nconst Index = (props: ModalFuncProps) => {\r\n const { modalButton } = config();\r\n const icon = props.icon ? (\r\n <span className={getLess(styles, \"nsc-modal-confirm-icon\")}>\r\n {props.icon}\r\n </span>\r\n ) : (\r\n <span\r\n className={getLess(styles, \"nsc-modal-confirm-icon\")}\r\n style={{ color: \"#F9B247\" }}\r\n >\r\n {modalButton.confirmIcon ? (\r\n modalButton.confirmIcon\r\n ) : (\r\n <ExclamationCircleFilled />\r\n )}\r\n </span>\r\n );\r\n let title = (\r\n <div className={getLess(styles, \"nsc-modal-confirm-title\")}>\r\n {!props.content && icon}\r\n {props.title ? props.title : \"提示\"}\r\n </div>\r\n );\r\n\r\n let content = props.content ? (\r\n <div className={getLess(styles, \"nsc-modal-confirm-content\")}>\r\n {icon}\r\n {props.content}\r\n </div>\r\n ) : null;\r\n let closeIcon = props.closeIcon ? (\r\n props.closeIcon\r\n ) : modalButton.closeIcon ? (\r\n modalButton.closeIcon\r\n ) : (\r\n <CloseOutlined />\r\n );\r\n return Modal.confirm({\r\n centered: true,\r\n closable: true,\r\n okText: \"确认\",\r\n cancelText: \"取消\",\r\n style: {\r\n borderRadius: \"10px\",\r\n },\r\n ...props,\r\n closeIcon: closeIcon,\r\n icon: null,\r\n title: title,\r\n content: content,\r\n okButtonProps: {\r\n style: { backgroundColor: window.localStorage.getItem(\"sysThemeColor\") },\r\n },\r\n wrapClassName: cls(\r\n getLess(styles, \"nsc-modal-confirm\"),\r\n props.wrapClassName\r\n ),\r\n });\r\n};\r\n\r\nexport default Index;\r\n"],"mappings":";;;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAK9B,OAAOC,MAAM,MAAM,gBAAgB;AACnC,OAAOC,MAAM,MAAM,cAAc;AACjC,SAASC,OAAO,QAAQ,aAAa;AACrC,OAAOC,GAAG,MAAM,YAAY;AAC5B,SAASC,uBAAuB,EAAEC,aAAa,QAAQ,mBAAmB;AAC1E,MAAMC,KAAK,GAAIC,KAAqB,IAAK;EACvC,MAAM;IAAEC;EAAY,CAAC,GAAGP,MAAM,CAAC,CAAC;EAChC,MAAMQ,IAAI,GAAGF,KAAK,CAACE,IAAI,gBACrBV,KAAA,CAAAW,aAAA;IAAMC,SAAS,EAAET,OAAO,CAACF,MAAM,EAAE,wBAAwB;EAAE,GACxDO,KAAK,CAACE,IACH,CAAC,gBAEPV,KAAA,CAAAW,aAAA;IACEC,SAAS,EAAET,OAAO,CAACF,MAAM,EAAE,wBAAwB,CAAE;IACrDY,KAAK,EAAE;MAAEC,KAAK,EAAE;IAAU;EAAE,GAE3BL,WAAW,CAACM,WAAW,GACtBN,WAAW,CAACM,WAAW,gBAEvBf,KAAA,CAAAW,aAAA,CAACN,uBAAuB,MAAE,CAExB,CACP;EACD,IAAIW,KAAK,gBACPhB,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAET,OAAO,CAACF,MAAM,EAAE,yBAAyB;EAAE,GACxD,CAACO,KAAK,CAACS,OAAO,IAAIP,IAAI,EACtBF,KAAK,CAACQ,KAAK,GAAGR,KAAK,CAACQ,KAAK,GAAG,IAC1B,CACN;EAED,IAAIC,OAAO,GAAGT,KAAK,CAACS,OAAO,gBACzBjB,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAET,OAAO,CAACF,MAAM,EAAE,2BAA2B;EAAE,GAC1DS,IAAI,EACJF,KAAK,CAACS,OACJ,CAAC,GACJ,IAAI;EACR,IAAIC,SAAS,GAAGV,KAAK,CAACU,SAAS,GAC7BV,KAAK,CAACU,SAAS,GACbT,WAAW,CAACS,SAAS,GACvBT,WAAW,CAACS,SAAS,gBAErBlB,KAAA,CAAAW,aAAA,CAACL,aAAa,MAAE,CACjB;EACD,OAAOa,MAAA,CAAMC,OAAO,CAAAC,aAAA,CAAAA,aAAA;IAClBC,QAAQ,EAAE,IAAI;IACdC,QAAQ,EAAE,IAAI;IACdC,MAAM,EAAE,IAAI;IACZC,UAAU,EAAE,IAAI;IAChBZ,KAAK,EAAE;MACLa,YAAY,EAAE;IAChB;EAAC,GACElB,KAAK;IACRU,SAAS,EAAEA,SAAS;IACpBR,IAAI,EAAE,IAAI;IACVM,KAAK,EAAEA,KAAK;IACZC,OAAO,EAAEA,OAAO;IAChBU,aAAa,EAAE;MACbd,KAAK,EAAE;QAAEe,eAAe,EAAEC,MAAM,CAACC,YAAY,CAACC,OAAO,CAAC,eAAe;MAAE;IACzE,CAAC;IACDC,aAAa,EAAE5B,GAAG,CAChBD,OAAO,CAACF,MAAM,EAAE,mBAAmB,CAAC,EACpCO,KAAK,CAACwB,aACR;EAAC,EACF,CAAC;AACJ,CAAC;AAED,eAAezB,KAAK"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { UploadProps } from "antd";
|
|
3
|
+
import NscUploadDragger from "./Dragger";
|
|
3
4
|
interface IUploadProps extends UploadProps {
|
|
4
5
|
sliceSize?: number;
|
|
5
6
|
maxSize?: number | boolean;
|
|
@@ -14,17 +15,20 @@ interface IUploadProps extends UploadProps {
|
|
|
14
15
|
fileCard?: boolean;
|
|
15
16
|
onListChange?: any;
|
|
16
17
|
checkSameFile?: boolean;
|
|
18
|
+
requestConfig?: any;
|
|
19
|
+
newVersion?: boolean;
|
|
17
20
|
}
|
|
18
21
|
export default class NscUpload extends React.PureComponent<IUploadProps, any> {
|
|
19
|
-
static Dragger:
|
|
20
|
-
height?: number;
|
|
21
|
-
} & React.RefAttributes<import("antd/es/upload/Upload").UploadRef<any>>>;
|
|
22
|
+
static Dragger: typeof NscUploadDragger;
|
|
22
23
|
state: {
|
|
23
24
|
fileList: any[];
|
|
24
25
|
viewId: string;
|
|
25
26
|
fileListStore: any[];
|
|
26
27
|
fileNames: any[];
|
|
27
28
|
};
|
|
29
|
+
uploadIngSize: number;
|
|
30
|
+
uploadSize: number;
|
|
31
|
+
uploadIngList: any[];
|
|
28
32
|
componentDidMount(): void;
|
|
29
33
|
convertFileList(list?: Array<Object>): void;
|
|
30
34
|
componentDidUpdate(preProps: any, preState: any): void;
|
|
@@ -33,7 +37,7 @@ export default class NscUpload extends React.PureComponent<IUploadProps, any> {
|
|
|
33
37
|
beforeUpload(file: any, ofileList: any): Promise<boolean>;
|
|
34
38
|
checkFileType(file: any): boolean;
|
|
35
39
|
onProcess({ percent, file }: any): void;
|
|
36
|
-
onComplete(
|
|
40
|
+
onComplete(files: any): Promise<void>;
|
|
37
41
|
customRequest: (options: any) => Promise<void>;
|
|
38
42
|
onDelete(file: any): void;
|
|
39
43
|
render(): React.ReactNode;
|
|
@@ -14,14 +14,13 @@ import styles from "./index.less";
|
|
|
14
14
|
import cls from "classnames";
|
|
15
15
|
import FileIcon from "../common/FileIcon";
|
|
16
16
|
import { DeleteOutlined, DownloadOutlined, EyeOutlined } from "@ant-design/icons";
|
|
17
|
+
import NscUploadDragger from "./Dragger";
|
|
17
18
|
const {
|
|
18
19
|
upload,
|
|
19
20
|
download,
|
|
20
|
-
previewDocument
|
|
21
|
+
previewDocument,
|
|
22
|
+
previewImage
|
|
21
23
|
} = file;
|
|
22
|
-
const {
|
|
23
|
-
Dragger
|
|
24
|
-
} = _Upload;
|
|
25
24
|
export default class NscUpload extends React.PureComponent {
|
|
26
25
|
constructor() {
|
|
27
26
|
super(...arguments);
|
|
@@ -31,6 +30,9 @@ export default class NscUpload extends React.PureComponent {
|
|
|
31
30
|
fileListStore: [],
|
|
32
31
|
fileNames: []
|
|
33
32
|
});
|
|
33
|
+
_defineProperty(this, "uploadIngSize", 0);
|
|
34
|
+
_defineProperty(this, "uploadSize", 0);
|
|
35
|
+
_defineProperty(this, "uploadIngList", []);
|
|
34
36
|
_defineProperty(this, "customRequest", async options => {
|
|
35
37
|
const file = options.file;
|
|
36
38
|
const {
|
|
@@ -56,36 +58,43 @@ export default class NscUpload extends React.PureComponent {
|
|
|
56
58
|
file: file,
|
|
57
59
|
onProgress: onProgress,
|
|
58
60
|
partSize: sliceSize
|
|
59
|
-
});
|
|
61
|
+
}, this.props.requestConfig);
|
|
62
|
+
this.uploadIngSize = this.uploadIngSize + 1;
|
|
60
63
|
let fileId = null;
|
|
64
|
+
let ImgRes = null;
|
|
61
65
|
if (res.code == 200) {
|
|
62
66
|
fileId = res.data.attachId;
|
|
63
67
|
options.onSuccess();
|
|
68
|
+
if (this.props.listType == "picture-card" && this.props.newVersion) {
|
|
69
|
+
ImgRes = await previewImage(fileId, this.props.requestConfig);
|
|
70
|
+
}
|
|
64
71
|
} else {
|
|
65
72
|
options.onError();
|
|
66
73
|
}
|
|
67
|
-
this.
|
|
74
|
+
this.uploadIngList.push({
|
|
68
75
|
file: options.file,
|
|
69
76
|
fileId: fileId,
|
|
70
|
-
status: res.code == 200 ? "success" : "error"
|
|
77
|
+
status: res.code == 200 ? "success" : "error",
|
|
78
|
+
url: ImgRes ? ImgRes.data : null
|
|
71
79
|
});
|
|
80
|
+
if (this.uploadSize == this.uploadIngSize) {
|
|
81
|
+
this.onComplete(this.uploadIngList);
|
|
82
|
+
}
|
|
72
83
|
onComplete && onComplete({
|
|
73
84
|
file: options.file,
|
|
74
85
|
fileId: fileId,
|
|
75
86
|
status: res.code == 200 ? "success" : "error"
|
|
76
87
|
});
|
|
77
88
|
} catch (e) {
|
|
78
|
-
this.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
});
|
|
89
|
+
if (this.uploadSize == this.uploadIngSize) {
|
|
90
|
+
this.onComplete(this.uploadIngList);
|
|
91
|
+
options.onError();
|
|
92
|
+
}
|
|
83
93
|
onComplete && onComplete({
|
|
84
94
|
file: options.file,
|
|
85
95
|
fileId: "",
|
|
86
96
|
status: "error"
|
|
87
97
|
});
|
|
88
|
-
options.onError();
|
|
89
98
|
}
|
|
90
99
|
});
|
|
91
100
|
}
|
|
@@ -96,12 +105,14 @@ export default class NscUpload extends React.PureComponent {
|
|
|
96
105
|
}
|
|
97
106
|
convertFileList(list) {
|
|
98
107
|
const {
|
|
99
|
-
fileList
|
|
108
|
+
fileList,
|
|
109
|
+
listType
|
|
100
110
|
} = this.props;
|
|
101
111
|
const newFileList = [];
|
|
102
112
|
let oldList = list ? list : fileList;
|
|
103
|
-
oldList.map(item => {
|
|
113
|
+
oldList.map(async (item, index) => {
|
|
104
114
|
let temp = _objectSpread(_objectSpread({}, item), {}, {
|
|
115
|
+
status: item.status,
|
|
105
116
|
name: item.name || item.fileName,
|
|
106
117
|
type: item.type,
|
|
107
118
|
size: item.size
|
|
@@ -109,8 +120,8 @@ export default class NscUpload extends React.PureComponent {
|
|
|
109
120
|
newFileList.push(temp);
|
|
110
121
|
});
|
|
111
122
|
this.setState({
|
|
112
|
-
fileList: newFileList,
|
|
113
|
-
fileListStore: fileList
|
|
123
|
+
fileList: [...newFileList],
|
|
124
|
+
fileListStore: [...fileList]
|
|
114
125
|
});
|
|
115
126
|
}
|
|
116
127
|
componentDidUpdate(preProps, preState) {
|
|
@@ -197,6 +208,7 @@ export default class NscUpload extends React.PureComponent {
|
|
|
197
208
|
this.setState({
|
|
198
209
|
fileList: newList
|
|
199
210
|
});
|
|
211
|
+
this.uploadSize = ofileList.length;
|
|
200
212
|
}
|
|
201
213
|
checkFileType(file) {
|
|
202
214
|
const {
|
|
@@ -233,22 +245,35 @@ export default class NscUpload extends React.PureComponent {
|
|
|
233
245
|
});
|
|
234
246
|
onListChange && onListChange(fileList);
|
|
235
247
|
}
|
|
236
|
-
onComplete(
|
|
248
|
+
async onComplete(files) {
|
|
249
|
+
this.uploadIngSize = 0;
|
|
250
|
+
this.uploadSize = 0;
|
|
251
|
+
this.uploadIngList = [];
|
|
237
252
|
const {
|
|
238
253
|
fileList
|
|
239
254
|
} = this.state;
|
|
255
|
+
const {
|
|
256
|
+
newVersion = true,
|
|
257
|
+
requestConfig = {}
|
|
258
|
+
} = this.props;
|
|
240
259
|
const newList = [];
|
|
241
|
-
fileList.map(item => {
|
|
260
|
+
fileList.map(async (item, index) => {
|
|
242
261
|
const newFile = _objectSpread({}, item);
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
262
|
+
files.map(async file => {
|
|
263
|
+
if (file.file.uid == item.uid) {
|
|
264
|
+
newFile.status = file.status == "success" ? "done" : file.status;
|
|
265
|
+
newFile.fileId = file.fileId;
|
|
266
|
+
newFile.url = file.url;
|
|
267
|
+
if (!newVersion) {
|
|
268
|
+
let url = "/jquick-resource/oss/endpoint/download-files?attachId=".concat(file.fileId, "&_tpk=").concat(window.localStorage.getItem("token"));
|
|
269
|
+
newFile.url = requestConfig.prefix ? requestConfig.prefix + url : "/api" + url;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
});
|
|
248
273
|
newList.push(newFile);
|
|
249
274
|
});
|
|
250
275
|
this.setState({
|
|
251
|
-
fileList: newList
|
|
276
|
+
fileList: [...newList]
|
|
252
277
|
});
|
|
253
278
|
const {
|
|
254
279
|
onListChange
|
|
@@ -285,9 +310,10 @@ export default class NscUpload extends React.PureComponent {
|
|
|
285
310
|
downloadIcon: null,
|
|
286
311
|
removeIcon: null,
|
|
287
312
|
previewIcon: null
|
|
288
|
-
}
|
|
313
|
+
},
|
|
314
|
+
requestConfig = {}
|
|
289
315
|
} = this.props;
|
|
290
|
-
const newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange"]);
|
|
316
|
+
const newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange", "newVersion", "requestConfig"]);
|
|
291
317
|
let defaultProps = {
|
|
292
318
|
customRequest: this.customRequest.bind(this),
|
|
293
319
|
multiple: true
|
|
@@ -296,29 +322,29 @@ export default class NscUpload extends React.PureComponent {
|
|
|
296
322
|
defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
297
323
|
itemRender: (originNode, file, currFileList) => {
|
|
298
324
|
const name = file.name || file.fileName;
|
|
299
|
-
const names = name
|
|
325
|
+
const names = name.split(".");
|
|
300
326
|
const suffix = names ? names[names.length - 1] : "";
|
|
301
327
|
return /*#__PURE__*/React.createElement("div", {
|
|
302
|
-
className: getLess(styles, "file-item")
|
|
328
|
+
className: getLess(styles, "nsc-upload-file-item")
|
|
303
329
|
}, /*#__PURE__*/React.createElement("div", {
|
|
304
|
-
className: cls(getLess(styles, "content"), {
|
|
305
|
-
[getLess(styles, "
|
|
330
|
+
className: cls(getLess(styles, "nsc-upload-content"), {
|
|
331
|
+
[getLess(styles, "nsc-upload-content-error")]: file.status == "error"
|
|
306
332
|
})
|
|
307
333
|
}, /*#__PURE__*/React.createElement("div", {
|
|
308
|
-
className: getLess(styles, "mark-picture")
|
|
334
|
+
className: getLess(styles, "nsc-upload-mark-picture")
|
|
309
335
|
}, /*#__PURE__*/React.createElement(FileIcon, {
|
|
310
336
|
suffix: suffix,
|
|
311
337
|
fileId: file.fileId
|
|
312
338
|
})), /*#__PURE__*/React.createElement("div", {
|
|
313
|
-
className: getLess(styles, "name")
|
|
339
|
+
className: getLess(styles, "nsc-upload-content-name")
|
|
314
340
|
}, file.name || file.fileName), /*#__PURE__*/React.createElement("div", {
|
|
315
|
-
className: getLess(styles, "icon")
|
|
341
|
+
className: getLess(styles, "nsc-upload-icon")
|
|
316
342
|
}, showUploadList.showPreviewIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
|
|
317
343
|
onClick: () => {
|
|
318
344
|
if (this.props.onPreview) {
|
|
319
345
|
this.props.onPreview(file);
|
|
320
346
|
} else {
|
|
321
|
-
previewDocument(file.fileId);
|
|
347
|
+
previewDocument(file.fileId, requestConfig);
|
|
322
348
|
}
|
|
323
349
|
},
|
|
324
350
|
style: {
|
|
@@ -329,7 +355,7 @@ export default class NscUpload extends React.PureComponent {
|
|
|
329
355
|
if (this.props.onDownload) {
|
|
330
356
|
this.props.onDownload(file);
|
|
331
357
|
} else {
|
|
332
|
-
download(file.fileId);
|
|
358
|
+
download(file.fileId, true, requestConfig);
|
|
333
359
|
}
|
|
334
360
|
},
|
|
335
361
|
style: {
|
|
@@ -347,9 +373,9 @@ export default class NscUpload extends React.PureComponent {
|
|
|
347
373
|
cursor: "pointer"
|
|
348
374
|
}
|
|
349
375
|
}, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DeleteOutlined, null)))), file.status == "uploading" && /*#__PURE__*/React.createElement("div", {
|
|
350
|
-
className: getLess(styles, "process")
|
|
376
|
+
className: getLess(styles, "nsc-upload-process")
|
|
351
377
|
}, /*#__PURE__*/React.createElement("div", {
|
|
352
|
-
className: getLess(styles, "percent"),
|
|
378
|
+
className: getLess(styles, "nsc-upload-percent"),
|
|
353
379
|
style: {
|
|
354
380
|
width: file.percent + "%"
|
|
355
381
|
}
|
|
@@ -359,14 +385,14 @@ export default class NscUpload extends React.PureComponent {
|
|
|
359
385
|
} else {
|
|
360
386
|
defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
361
387
|
onDownload: file => {
|
|
362
|
-
download(file.fileId);
|
|
388
|
+
download(file.fileId, true, requestConfig);
|
|
363
389
|
},
|
|
364
390
|
onRemove: file => {
|
|
365
391
|
this.onDelete(file);
|
|
366
392
|
},
|
|
367
393
|
onPreview: file => {
|
|
368
|
-
if (file
|
|
369
|
-
previewDocument(file.fileId);
|
|
394
|
+
if (file.fileId) {
|
|
395
|
+
previewDocument(file.fileId, requestConfig);
|
|
370
396
|
}
|
|
371
397
|
},
|
|
372
398
|
showUploadList: _objectSpread({}, showUploadList)
|
|
@@ -388,6 +414,5 @@ export default class NscUpload extends React.PureComponent {
|
|
|
388
414
|
})));
|
|
389
415
|
}
|
|
390
416
|
}
|
|
391
|
-
|
|
392
|
-
_defineProperty(NscUpload, "Dragger", Dragger);
|
|
393
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJEcmFnZ2VyIiwiX1VwbG9hZCIsIk5zY1VwbG9hZCIsIlB1cmVDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImZpbGVMaXN0Iiwidmlld0lkIiwiZmlsZUxpc3RTdG9yZSIsImZpbGVOYW1lcyIsIm9wdGlvbnMiLCJvbkNvbXBsZXRlIiwib25Qcm9jZXNzIiwic2xpY2VTaXplIiwicHJvcHMiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJyZXMiLCJwYXJ0U2l6ZSIsImZpbGVJZCIsImNvZGUiLCJkYXRhIiwiYXR0YWNoSWQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwic3RhdHVzIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsIm1hcCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwicHVzaCIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZSIsImdldEZpbGVMaXN0Iiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvZmlsZUxpc3QiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tTYW1lRmlsZSIsIm1heENvdW50Iiwic2hvd1VwbG9hZExpc3QiLCJwcm9wc0xpc3QiLCJvbkxpc3RDaGFuZ2UiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJjb25jYXQiLCJjaGVja0xpc3QiLCJpbmRleE9mIiwibmV3TGlzdCIsInVpZCIsImxlbmd0aCIsImkiLCJzcGxpY2UiLCJuYW1lcyIsInNwbGl0Iiwic3VmZml4IiwiX3JlZiIsIm5ld0ZpbGUiLCJ1cmwiLCJ3aW5kb3ciLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwib25EZWxldGUiLCJyZW5kZXIiLCJmaWxlQ2FyZCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UHJldmlld0ljb24iLCJzaG93UmVtb3ZlSWNvbiIsImRvd25sb2FkSWNvbiIsInJlbW92ZUljb24iLCJwcmV2aWV3SWNvbiIsIm5ld3Byb3BzIiwiZGVmYXVsdFByb3BzIiwiY3VzdG9tUmVxdWVzdCIsImJpbmQiLCJtdWx0aXBsZSIsIml0ZW1SZW5kZXIiLCJvcmlnaW5Ob2RlIiwiY3VyckZpbGVMaXN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJvblByZXZpZXciLCJzdHlsZSIsImN1cnNvciIsIm9uRG93bmxvYWQiLCJvblJlbW92ZSIsIndpZHRoIiwiRnJhZ21lbnQiLCJfZXh0ZW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL1VwbG9hZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFVwbG9hZCwgVXBsb2FkUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IHdpdGhaaExvY2FsZSBmcm9tIFwiLi4vY29tbW9uL3dpdGhaaExvY2FsZVwiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBGaWxlSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ZpbGVJY29uXCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbiAgRG93bmxvYWRPdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFBkZlZpZXdlciBmcm9tIFwiLi4vcGRmdml3ZXJcIjtcclxuY29uc3QgeyB1cGxvYWQsIGRvd25sb2FkLCBwcmV2aWV3RG9jdW1lbnQgfSA9IGZpbGU7XHJcbmNvbnN0IHsgRHJhZ2dlciB9ID0gVXBsb2FkO1xyXG5pbnRlcmZhY2UgSVVwbG9hZFByb3BzIGV4dGVuZHMgVXBsb2FkUHJvcHMge1xyXG4gIHNsaWNlU2l6ZT86IG51bWJlcjtcclxuICBtYXhTaXplPzogbnVtYmVyIHwgYm9vbGVhbjtcclxuICBvblByb2Nlc3M/OiAocHJvY2VzcykgPT4gdm9pZDtcclxuICBvbkNvbXBsZXRlPzogKHsgZmlsZSwgZmlsZUlkLCBzdGF0dXMgfSkgPT4gdm9pZDtcclxuICBhbGxvd0ZpbGVTdWZmaXg/OiBBcnJheTxTdHJpbmc+OyAvL+WFgeiuuOS4iuS8oOaJqeWxleWQjSzkuI3luKYuXHJcbiAgdXNlRGVmYXVsdExpc3Q/OiBib29sZWFuOyAvL+aYr+WQpuS9v+eUqOm7mOiupOeahGZpbGVMaXN0XHJcbiAgZmlsZUNhcmQ/OiBib29sZWFuO1xyXG4gIG9uTGlzdENoYW5nZT86IGFueTtcclxuICBjaGVja1NhbWVGaWxlPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOc2NVcGxvYWQgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PElVcGxvYWRQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIERyYWdnZXIgPSBEcmFnZ2VyO1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiwgZmlsZUxpc3RTdG9yZTogW10sIGZpbGVOYW1lczogW10gfTtcclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnZlcnRGaWxlTGlzdChsaXN0PzogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICBsZXQgb2xkTGlzdCA9IGxpc3QgPyBsaXN0IDogZmlsZUxpc3Q7XHJcbiAgICBvbGRMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgfTtcclxuICAgICAgbmV3RmlsZUxpc3QucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdGaWxlTGlzdCxcclxuICAgICAgZmlsZUxpc3RTdG9yZTogZmlsZUxpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZmlsZUxpc3QpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZmlsZUxpc3RTdG9yZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRGaWxlTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmZpbGVMaXN0O1xyXG4gIH1cclxuICBzZXRGaWxlTGlzdChmaWxlTGlzdDogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBiZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICBhbGxvd0ZpbGVTdWZmaXgsXHJcbiAgICAgIGNoZWNrU2FtZUZpbGUgPSB0cnVlLFxyXG4gICAgICBtYXhDb3VudCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QsXHJcbiAgICAgIGZpbGVMaXN0OiBwcm9wc0xpc3QsXHJcbiAgICAgIG9uTGlzdENoYW5nZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgZmlsZUxpc3QsIGZpbGVMaXN0U3RvcmUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgc2l6ZTogbnVtYmVyO1xyXG4gICAgaWYgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGZpbGUpKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXHJcbiAgICAgICAgYCR7ZmlsZS5uYW1lfeaWh+S7tuexu+Wei+S4jeWFgeiuuOS4iuS8oO+8jOivt+S4iuS8oOWQjue8gOS4uiR7YWxsb3dGaWxlU3VmZml4feeahOexu+Wei+aWh+S7tu+8gWBcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG1heFNpemUgIT09IGZhbHNlKSB7XHJcbiAgICAgIGlmIChtYXhTaXplID09PSB0cnVlKSB7XHJcbiAgICAgICAgbWF4U2l6ZSA9IDEwMDtcclxuICAgICAgfVxyXG4gICAgICBzaXplID0gbWF4U2l6ZSAqIDEwMjQgKiAxMDI0O1xyXG4gICAgICBpZiAoc2l6ZSA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgIG1lc3NhZ2UuZXJyb3IoYCR7ZmlsZS5uYW1lfeaWh+S7tuWkp+Wwj+i2hei/hyR7bWF4U2l6ZX1N77yM6K+36YeN5paw5LiK5Lyg77yBYCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgZmlsZU5hbWVzID0gW107XHJcbiAgICBpZiAoY2hlY2tTYW1lRmlsZSkge1xyXG4gICAgICBjb25zdCBjaGVja0xpc3QgPSB0aGlzLnByb3BzLmZpbGVMaXN0ID8gZmlsZUxpc3RTdG9yZSA6IGZpbGVMaXN0O1xyXG4gICAgICBjaGVja0xpc3QubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgZmlsZU5hbWVzLnB1c2goaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChmaWxlTmFtZXMuaW5kZXhPZihmaWxlLm5hbWUpID4gLTEgJiYgc2hvd1VwbG9hZExpc3QgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihg5paH5Lu2JHtmaWxlLm5hbWV95bey5Zyo5LiK5Lyg5YiX6KGo5Lit77yM6K+36YeN5paw6YCJ5oup5paH5Lu277yBYCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKSB7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKGZpbGUsIG9maWxlTGlzdCk7XHJcbiAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmZpbGVMaXN0XTtcclxuICAgIG9maWxlTGlzdC5tYXAoYXN5bmMgKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICEoXHJcbiAgICAgICAgICAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoaXRlbSkpIHx8XHJcbiAgICAgICAgICBzaXplIDwgaXRlbS5zaXplIHx8XHJcbiAgICAgICAgICAoY2hlY2tTYW1lRmlsZSAmJiBmaWxlTmFtZXMuaW5kZXhPZihpdGVtLm5hbWUpID4gLTEpXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCB0ZW1wID0ge1xyXG4gICAgICAgICAgZmlsZU5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgIHBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICBzdGF0dXM6IFwidXBsb2FkaW5nXCIsXHJcbiAgICAgICAgICB1aWQ6IGl0ZW0udWlkLFxyXG4gICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKHRlbXApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAobWF4Q291bnQgJiYgbmV3TGlzdC5sZW5ndGggPiBtYXhDb3VudCkge1xyXG4gICAgICBsZXQgbGVuZ3RoID0gbmV3TGlzdC5sZW5ndGggLSBtYXhDb3VudDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG5ld0xpc3Quc3BsaWNlKDAsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBuZXdMaXN0IH0pO1xyXG4gIH1cclxuICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgYWxsb3dGaWxlU3VmZml4IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4KSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBvbkNvbXBsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICBuZXdGaWxlLnN0YXR1cyA9IGZpbGUuc3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCJkb25lXCIgOiBmaWxlLnN0YXR1cztcclxuICAgICAgICBuZXdGaWxlLmZpbGVJZCA9IGZpbGUuZmlsZUlkO1xyXG4gICAgICAgIG5ld0ZpbGUudXJsID0gYC9hcGkvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgZmlsZS5maWxlSWRcclxuICAgICAgICB9Jl90cGs9JHt3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKX1gO1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIGN1c3RvbVJlcXVlc3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcclxuICAgIGNvbnN0IHsgb25Db21wbGV0ZSwgb25Qcm9jZXNzLCBzbGljZVNpemUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBvblByb2dyZXNzID0gKHRvdGFsUHJvZ3Jlc3M6IGFueSkgPT4ge1xyXG4gICAgICBvcHRpb25zLm9uUHJvZ3Jlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzIH0sIGZpbGUpO1xyXG4gICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgfTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKHtcclxuICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgcGFydFNpemU6IHNsaWNlU2l6ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoe1xyXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IFwiXCIsXHJcbiAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBvbkRlbGV0ZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIC8v6YCa6L+H5paH5Lu25ZCN5Yik5pat77yM5LiK5Lyg5piv5paH5Lu25ZCN5piv5ZSv5LiA55qEXHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgIGl0ZW0uZmlsZUlkICE9PSBmaWxlLmZpbGVJZCB8fFxyXG4gICAgICAgIGl0ZW0udWlkICE9PSBmaWxlLnVpZFxyXG4gICAgICApIHtcclxuICAgICAgICBuZXdMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcclxuICAgIGxldCB7XHJcbiAgICAgIGZpbGVMaXN0LFxyXG4gICAgICBmaWxlQ2FyZCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICBzaG93UHJldmlld0ljb246IGZhbHNlLFxyXG4gICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgIGRvd25sb2FkSWNvbjogbnVsbCxcclxuICAgICAgICByZW1vdmVJY29uOiBudWxsLFxyXG4gICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICB9IGFzIGFueSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3cHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgXCJtYXhTaXplXCIsXHJcbiAgICAgIFwib25Db21wbGV0ZVwiLFxyXG4gICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICBcImFsbG93RmlsZVN1ZmZpeFwiLFxyXG4gICAgICBcInVzZURlZmF1bHRMaXN0XCIsXHJcbiAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgXCJvbkxpc3RDaGFuZ2VcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd0Rvd25sb2FkSWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblJlbW92ZTogKGZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblByZXZpZXc6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAgIC8vIG9uQ2hhbmdlPXsoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSkgPT4ge1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcIm9uQ2hhbmdlZmlsZVwiLCBmaWxlKTtcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coXCJvbkNoYW5nZWZpbGVMaXN0XCIsIGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgY29uc3QgeyBvbkNoYW5nZSwgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIC8vICAgICBmaWxlTGlzdDogZmlsZUxpc3QsXHJcbiAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgLy8gICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSk7XHJcbiAgICAgICAgICAvLyB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuLy8gZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxl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
|
|
417
|
+
_defineProperty(NscUpload, "Dragger", NscUploadDragger);
|
|
418
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiTnNjVXBsb2FkRHJhZ2dlciIsInVwbG9hZCIsImRvd25sb2FkIiwicHJldmlld0RvY3VtZW50IiwicHJldmlld0ltYWdlIiwiTnNjVXBsb2FkIiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsIm9uQ29tcGxldGUiLCJvblByb2Nlc3MiLCJzbGljZVNpemUiLCJwcm9wcyIsIm9uUHJvZ3Jlc3MiLCJ0b3RhbFByb2dyZXNzIiwicGVyY2VudCIsInJlcyIsInBhcnRTaXplIiwicmVxdWVzdENvbmZpZyIsInVwbG9hZEluZ1NpemUiLCJmaWxlSWQiLCJJbWdSZXMiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwibGlzdFR5cGUiLCJuZXdWZXJzaW9uIiwib25FcnJvciIsInVwbG9hZEluZ0xpc3QiLCJwdXNoIiwic3RhdHVzIiwidXJsIiwidXBsb2FkU2l6ZSIsImUiLCJjb21wb25lbnREaWRNb3VudCIsImNvbnZlcnRGaWxlTGlzdCIsImxpc3QiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmVQcm9wcyIsInByZVN0YXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXRlIiwiZ2V0RmlsZUxpc3QiLCJzZXRGaWxlTGlzdCIsImJlZm9yZVVwbG9hZCIsIm9maWxlTGlzdCIsIm1heFNpemUiLCJhbGxvd0ZpbGVTdWZmaXgiLCJjaGVja1NhbWVGaWxlIiwibWF4Q291bnQiLCJzaG93VXBsb2FkTGlzdCIsInByb3BzTGlzdCIsIm9uTGlzdENoYW5nZSIsImNoZWNrRmlsZVR5cGUiLCJlcnJvciIsImNvbmNhdCIsImNoZWNrTGlzdCIsImluZGV4T2YiLCJuZXdMaXN0IiwidWlkIiwibGVuZ3RoIiwiaSIsInNwbGljZSIsIm5hbWVzIiwic3BsaXQiLCJzdWZmaXgiLCJfcmVmIiwibmV3RmlsZSIsImZpbGVzIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInByZWZpeCIsIm9uRGVsZXRlIiwicmVuZGVyIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25QcmV2aWV3Iiwic3R5bGUiLCJjdXJzb3IiLCJvbkRvd25sb2FkIiwib25SZW1vdmUiLCJ3aWR0aCIsIkZyYWdtZW50IiwiX1VwbG9hZCIsIl9leHRlbmRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS91cGxvYWQvVXBsb2FkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgVXBsb2FkLCBVcGxvYWRQcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vbWVzc2FnZVwiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBGaWxlSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ZpbGVJY29uXCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbiAgRG93bmxvYWRPdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFBkZlZpZXdlciBmcm9tIFwiLi4vcGRmdml3ZXJcIjtcclxuaW1wb3J0IE5zY1VwbG9hZERyYWdnZXIgZnJvbSBcIi4vRHJhZ2dlclwiO1xyXG5jb25zdCB7IHVwbG9hZCwgZG93bmxvYWQsIHByZXZpZXdEb2N1bWVudCwgcHJldmlld0ltYWdlIH0gPSBmaWxlO1xyXG5cclxuaW50ZXJmYWNlIElVcGxvYWRQcm9wcyBleHRlbmRzIFVwbG9hZFByb3BzIHtcclxuICBzbGljZVNpemU/OiBudW1iZXI7XHJcbiAgbWF4U2l6ZT86IG51bWJlciB8IGJvb2xlYW47XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbiAgY2hlY2tTYW1lRmlsZT86IGJvb2xlYW47XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBuZXdWZXJzaW9uPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOc2NVcGxvYWQgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PElVcGxvYWRQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIERyYWdnZXIgPSBOc2NVcGxvYWREcmFnZ2VyO1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiwgZmlsZUxpc3RTdG9yZTogW10sIGZpbGVOYW1lczogW10gfTtcclxuICB1cGxvYWRJbmdTaXplID0gMDtcclxuICB1cGxvYWRTaXplID0gMDtcclxuICB1cGxvYWRJbmdMaXN0ID0gW107XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb252ZXJ0RmlsZUxpc3QobGlzdD86IEFycmF5PE9iamVjdD4pIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QsIGxpc3RUeXBlIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICBsZXQgb2xkTGlzdCA9IGxpc3QgPyBsaXN0IDogZmlsZUxpc3Q7XHJcbiAgICBvbGRMaXN0Lm1hcChhc3luYyAoaXRlbTogYW55LCBpbmRleCkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgIHN0YXR1czogaXRlbS5zdGF0dXMsXHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgfSBhcyBhbnk7XHJcblxyXG4gICAgICBuZXdGaWxlTGlzdC5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdGaWxlTGlzdF0sXHJcbiAgICAgIGZpbGVMaXN0U3RvcmU6IFsuLi5maWxlTGlzdF0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZmlsZUxpc3QpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZmlsZUxpc3RTdG9yZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRGaWxlTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmZpbGVMaXN0O1xyXG4gIH1cclxuICBzZXRGaWxlTGlzdChmaWxlTGlzdDogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBiZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICBhbGxvd0ZpbGVTdWZmaXgsXHJcbiAgICAgIGNoZWNrU2FtZUZpbGUgPSB0cnVlLFxyXG4gICAgICBtYXhDb3VudCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QsXHJcbiAgICAgIGZpbGVMaXN0OiBwcm9wc0xpc3QsXHJcbiAgICAgIG9uTGlzdENoYW5nZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgZmlsZUxpc3QsIGZpbGVMaXN0U3RvcmUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgc2l6ZTogbnVtYmVyO1xyXG4gICAgaWYgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGZpbGUpKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXHJcbiAgICAgICAgYCR7ZmlsZS5uYW1lfeaWh+S7tuexu+Wei+S4jeWFgeiuuOS4iuS8oO+8jOivt+S4iuS8oOWQjue8gOS4uiR7YWxsb3dGaWxlU3VmZml4feeahOexu+Wei+aWh+S7tu+8gWBcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG1heFNpemUgIT09IGZhbHNlKSB7XHJcbiAgICAgIGlmIChtYXhTaXplID09PSB0cnVlKSB7XHJcbiAgICAgICAgbWF4U2l6ZSA9IDEwMDtcclxuICAgICAgfVxyXG4gICAgICBzaXplID0gbWF4U2l6ZSAqIDEwMjQgKiAxMDI0O1xyXG4gICAgICBpZiAoc2l6ZSA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgIG1lc3NhZ2UuZXJyb3IoYCR7ZmlsZS5uYW1lfeaWh+S7tuWkp+Wwj+i2hei/hyR7bWF4U2l6ZX1N77yM6K+36YeN5paw5LiK5Lyg77yBYCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgZmlsZU5hbWVzID0gW107XHJcbiAgICBpZiAoY2hlY2tTYW1lRmlsZSkge1xyXG4gICAgICBjb25zdCBjaGVja0xpc3QgPSB0aGlzLnByb3BzLmZpbGVMaXN0ID8gZmlsZUxpc3RTdG9yZSA6IGZpbGVMaXN0O1xyXG4gICAgICBjaGVja0xpc3QubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgZmlsZU5hbWVzLnB1c2goaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChmaWxlTmFtZXMuaW5kZXhPZihmaWxlLm5hbWUpID4gLTEgJiYgc2hvd1VwbG9hZExpc3QgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihg5paH5Lu2JHtmaWxlLm5hbWV95bey5Zyo5LiK5Lyg5YiX6KGo5Lit77yM6K+36YeN5paw6YCJ5oup5paH5Lu277yBYCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKSB7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKGZpbGUsIG9maWxlTGlzdCk7XHJcbiAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmZpbGVMaXN0XTtcclxuICAgIG9maWxlTGlzdC5tYXAoYXN5bmMgKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICEoXHJcbiAgICAgICAgICAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoaXRlbSkpIHx8XHJcbiAgICAgICAgICBzaXplIDwgaXRlbS5zaXplIHx8XHJcbiAgICAgICAgICAoY2hlY2tTYW1lRmlsZSAmJiBmaWxlTmFtZXMuaW5kZXhPZihpdGVtLm5hbWUpID4gLTEpXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCB0ZW1wID0ge1xyXG4gICAgICAgICAgZmlsZU5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgIHBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICBzdGF0dXM6IFwidXBsb2FkaW5nXCIsXHJcbiAgICAgICAgICB1aWQ6IGl0ZW0udWlkLFxyXG4gICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKHRlbXApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAobWF4Q291bnQgJiYgbmV3TGlzdC5sZW5ndGggPiBtYXhDb3VudCkge1xyXG4gICAgICBsZXQgbGVuZ3RoID0gbmV3TGlzdC5sZW5ndGggLSBtYXhDb3VudDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG5ld0xpc3Quc3BsaWNlKDAsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBuZXdMaXN0IH0pO1xyXG4gICAgdGhpcy51cGxvYWRTaXplID0gb2ZpbGVMaXN0Lmxlbmd0aDtcclxuICB9XHJcbiAgY2hlY2tGaWxlVHlwZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGFsbG93RmlsZVN1ZmZpeCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5hbWVzID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgIGNvbnN0IHN1ZmZpeCA9IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKGFsbG93RmlsZVN1ZmZpeC5pbmRleE9mKHN1ZmZpeCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgb25Qcm9jZXNzKHsgcGVyY2VudCwgZmlsZSB9OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAoZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICBuZXdGaWxlLnBlcmNlbnQgPSBwZXJjZW50O1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICB9XHJcbiAgYXN5bmMgb25Db21wbGV0ZShmaWxlcykge1xyXG4gICAgdGhpcy51cGxvYWRJbmdTaXplID0gMDtcclxuICAgIHRoaXMudXBsb2FkU2l6ZSA9IDA7XHJcbiAgICB0aGlzLnVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG5ld1ZlcnNpb24gPSB0cnVlLCByZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuXHJcbiAgICBmaWxlTGlzdC5tYXAoYXN5bmMgKGl0ZW06IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBmaWxlcy5tYXAoYXN5bmMgKGZpbGUpID0+IHtcclxuICAgICAgICBpZiAoZmlsZS5maWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgICAgbmV3RmlsZS5zdGF0dXMgPSBmaWxlLnN0YXR1cyA9PSBcInN1Y2Nlc3NcIiA/IFwiZG9uZVwiIDogZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgICBuZXdGaWxlLmZpbGVJZCA9IGZpbGUuZmlsZUlkO1xyXG4gICAgICAgICAgbmV3RmlsZS51cmwgPSBmaWxlLnVybDtcclxuICAgICAgICAgIGlmICghbmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgICBsZXQgdXJsID0gYC9qcXVpY2stcmVzb3VyY2Uvb3NzL2VuZHBvaW50L2Rvd25sb2FkLWZpbGVzP2F0dGFjaElkPSR7XHJcbiAgICAgICAgICAgICAgZmlsZS5maWxlSWRcclxuICAgICAgICAgICAgfSZfdHBrPSR7d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIil9YDtcclxuICAgICAgICAgICAgbmV3RmlsZS51cmwgPSByZXF1ZXN0Q29uZmlnLnByZWZpeFxyXG4gICAgICAgICAgICAgID8gcmVxdWVzdENvbmZpZy5wcmVmaXggKyB1cmxcclxuICAgICAgICAgICAgICA6IFwiL2FwaVwiICsgdXJsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBbLi4ubmV3TGlzdF0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIGN1c3RvbVJlcXVlc3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcclxuICAgIGNvbnN0IHsgb25Db21wbGV0ZSwgb25Qcm9jZXNzLCBzbGljZVNpemUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBvblByb2dyZXNzID0gKHRvdGFsUHJvZ3Jlc3M6IGFueSkgPT4ge1xyXG4gICAgICBvcHRpb25zLm9uUHJvZ3Jlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzIH0sIGZpbGUpO1xyXG4gICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgfTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgICBvblByb2dyZXNzOiBvblByb2dyZXNzLFxyXG4gICAgICAgICAgcGFydFNpemU6IHNsaWNlU2l6ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMucmVxdWVzdENvbmZpZ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSB0aGlzLnVwbG9hZEluZ1NpemUgKyAxO1xyXG4gICAgICBsZXQgZmlsZUlkID0gbnVsbDtcclxuICAgICAgbGV0IEltZ1JlcyA9IG51bGw7XHJcbiAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICBmaWxlSWQgPSByZXMuZGF0YS5hdHRhY2hJZDtcclxuICAgICAgICBvcHRpb25zLm9uU3VjY2VzcygpO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgdGhpcy5wcm9wcy5uZXdWZXJzaW9uKSB7XHJcbiAgICAgICAgICBJbWdSZXMgPSBhd2FpdCBwcmV2aWV3SW1hZ2UoZmlsZUlkLCB0aGlzLnByb3BzLnJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwbG9hZEluZ0xpc3QucHVzaCh7XHJcbiAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgdXJsOiBJbWdSZXMgPyBJbWdSZXMuZGF0YSA6IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgIHRoaXMub25Db21wbGV0ZSh0aGlzLnVwbG9hZEluZ0xpc3QpO1xyXG4gICAgICB9XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkU2l6ZSA9PSB0aGlzLnVwbG9hZEluZ1NpemUpIHtcclxuICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgIH1cclxuICB9O1xyXG4gIG9uRGVsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0ubmFtZSAhPT0gZmlsZS5uYW1lIHx8XHJcbiAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgaXRlbS51aWQgIT09IGZpbGUudWlkXHJcbiAgICAgICkge1xyXG4gICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgbGV0IHtcclxuICAgICAgZmlsZUxpc3QsXHJcbiAgICAgIGZpbGVDYXJkLFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCA9IHtcclxuICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgIHNob3dQcmV2aWV3SWNvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd1JlbW92ZUljb246IHRydWUsXHJcbiAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgIHJlbW92ZUljb246IG51bGwsXHJcbiAgICAgICAgcHJldmlld0ljb246IG51bGwsXHJcbiAgICAgIH0gYXMgYW55LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgIFwic2xpY2VTaXplXCIsXHJcbiAgICAgIFwibWF4U2l6ZVwiLFxyXG4gICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgXCJvblByb2Nlc3NcIixcclxuICAgICAgXCJhbGxvd0ZpbGVTdWZmaXhcIixcclxuICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICBcImZpbGVDYXJkXCIsXHJcbiAgICAgIFwib25MaXN0Q2hhbmdlXCIsXHJcbiAgICAgIFwibmV3VmVyc2lvblwiLFxyXG4gICAgICBcInJlcXVlc3RDb25maWdcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZS5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgICBjb25zdCBzdWZmaXggPSBuYW1lcyA/IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdIDogXCJcIjtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdXBsb2FkLWZpbGUtaXRlbVwiKX0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLXVwbG9hZC1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdXBsb2FkLWNvbnRlbnQtZXJyb3JcIildOlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGUuc3RhdHVzID09IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdXBsb2FkLW1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy11cGxvYWQtY29udGVudC1uYW1lXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ZpbGUubmFtZSB8fCBmaWxlLmZpbGVOYW1lfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXVwbG9hZC1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd0Rvd25sb2FkSWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkLCB0cnVlLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXVwbG9hZC1wcm9jZXNzXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXVwbG9hZC1wZXJjZW50XCIpfVxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBmaWxlLnBlcmNlbnQgKyBcIiVcIiB9fVxyXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgb25Eb3dubG9hZDogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25SZW1vdmU6IChmaWxlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25QcmV2aWV3OiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmlsZS5maWxlSWQpIHtcclxuICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAgIC8vIG9uQ2hhbmdlPXsoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSkgPT4ge1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcIm9uQ2hhbmdlZmlsZVwiLCBmaWxlKTtcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coXCJvbkNoYW5nZWZpbGVMaXN0XCIsIGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgY29uc3QgeyBvbkNoYW5nZSwgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIC8vICAgICBmaWxlTGlzdDogZmlsZUxpc3QsXHJcbiAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgLy8gICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSk7XHJcbiAgICAgICAgICAvLyB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFLLE1BQU0sT0FBTztBQUU5QixPQUFPQyxJQUFJLE1BQU0sVUFBVTtBQUMzQixPQUFPQyxPQUFPLE1BQU0sWUFBWTtBQUNoQyxPQUFPQyxJQUFJLE1BQU0sU0FBUztBQUMxQixTQUFTQyxPQUFPLFFBQVEsYUFBYTtBQUNyQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPQyxRQUFRLE1BQU0s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
|