nsc-react-component 4.1.15 → 4.1.17

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.
@@ -5,7 +5,6 @@ const IconFont = props => {
5
5
  let {
6
6
  iconfontUrl
7
7
  } = config();
8
- console.log('iconfontUrl', iconfontUrl);
9
8
  const Icon = createFromIconfontCN({
10
9
  scriptUrl: [require("./iconfontalibaba.js"), iconfontUrl // icon-shoppingcart, icon-python
11
10
  ]
@@ -13,4 +12,4 @@ const IconFont = props => {
13
12
  return /*#__PURE__*/React.createElement(Icon, props);
14
13
  };
15
14
  export default IconFont;
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVGcm9tSWNvbmZvbnRDTiIsIlJlYWN0IiwiY29uZmlnIiwiSWNvbkZvbnQiLCJwcm9wcyIsImljb25mb250VXJsIiwiY29uc29sZSIsImxvZyIsIkljb24iLCJzY3JpcHRVcmwiLCJyZXF1aXJlIiwiY3JlYXRlRWxlbWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvY29tbW9uL0ljb25Gb250LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcm9tSWNvbmZvbnRDTiB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBJY29uRm9udFByb3BzIH0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zL2xpYi9jb21wb25lbnRzL0ljb25Gb250XCI7XHJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmNvbnN0IEljb25Gb250ID0gKHByb3BzOiBJY29uRm9udFByb3BzKSA9PiB7XHJcbiAgbGV0IHsgaWNvbmZvbnRVcmwgfSA9IGNvbmZpZygpO1xyXG4gIGNvbnNvbGUubG9nKCdpY29uZm9udFVybCcsaWNvbmZvbnRVcmwpXHJcbiAgY29uc3QgSWNvbiA9IGNyZWF0ZUZyb21JY29uZm9udENOKHtcclxuICAgIHNjcmlwdFVybDogW1xyXG4gICAgICByZXF1aXJlKFwiLi9pY29uZm9udGFsaWJhYmEuanNcIiksXHJcbiAgICAgIGljb25mb250VXJsLCAvLyBpY29uLXNob3BwaW5nY2FydCwgaWNvbi1weXRob25cclxuICAgIF0sXHJcbiAgfSk7XHJcbiAgcmV0dXJuIDxJY29uIHsuLi5wcm9wc30gLz47XHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IEljb25Gb250O1xyXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLG9CQUFvQixRQUFRLG1CQUFtQjtBQUV4RCxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxNQUFNQyxRQUFRLEdBQUlDLEtBQW9CLElBQUs7RUFDekMsSUFBSTtJQUFFQztFQUFZLENBQUMsR0FBR0gsTUFBTSxDQUFDLENBQUM7RUFDOUJJLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLGFBQWEsRUFBQ0YsV0FBVyxDQUFDO0VBQ3RDLE1BQU1HLElBQUksR0FBR1Isb0JBQW9CLENBQUM7SUFDaENTLFNBQVMsRUFBRSxDQUNUQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFDL0JMLFdBQVcsQ0FBRTtJQUFBO0VBRWpCLENBQUMsQ0FBQztFQUNGLG9CQUFPSixLQUFBLENBQUFVLGFBQUEsQ0FBQ0gsSUFBSSxFQUFLSixLQUFRLENBQUM7QUFDNUIsQ0FBQztBQUNELGVBQWVELFFBQVEifQ==
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVGcm9tSWNvbmZvbnRDTiIsIlJlYWN0IiwiY29uZmlnIiwiSWNvbkZvbnQiLCJwcm9wcyIsImljb25mb250VXJsIiwiSWNvbiIsInNjcmlwdFVybCIsInJlcXVpcmUiLCJjcmVhdGVFbGVtZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9jb21tb24vSWNvbkZvbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUZyb21JY29uZm9udENOIH0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IEljb25Gb250UHJvcHMgfSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnMvbGliL2NvbXBvbmVudHMvSWNvbkZvbnRcIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuY29uc3QgSWNvbkZvbnQgPSAocHJvcHM6IEljb25Gb250UHJvcHMpID0+IHtcclxuICBsZXQgeyBpY29uZm9udFVybCB9ID0gY29uZmlnKCk7XHJcbiAgY29uc3QgSWNvbiA9IGNyZWF0ZUZyb21JY29uZm9udENOKHtcclxuICAgIHNjcmlwdFVybDogW1xyXG4gICAgICByZXF1aXJlKFwiLi9pY29uZm9udGFsaWJhYmEuanNcIiksXHJcbiAgICAgIGljb25mb250VXJsLCAvLyBpY29uLXNob3BwaW5nY2FydCwgaWNvbi1weXRob25cclxuICAgIF0sXHJcbiAgfSk7XHJcbiAgcmV0dXJuIDxJY29uIHsuLi5wcm9wc30gLz47XHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IEljb25Gb250O1xyXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLG9CQUFvQixRQUFRLG1CQUFtQjtBQUV4RCxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxNQUFNQyxRQUFRLEdBQUlDLEtBQW9CLElBQUs7RUFDekMsSUFBSTtJQUFFQztFQUFZLENBQUMsR0FBR0gsTUFBTSxDQUFDLENBQUM7RUFDOUIsTUFBTUksSUFBSSxHQUFHTixvQkFBb0IsQ0FBQztJQUNoQ08sU0FBUyxFQUFFLENBQ1RDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUMvQkgsV0FBVyxDQUFFO0lBQUE7RUFFakIsQ0FBQyxDQUFDO0VBQ0Ysb0JBQU9KLEtBQUEsQ0FBQVEsYUFBQSxDQUFDSCxJQUFJLEVBQUtGLEtBQVEsQ0FBQztBQUM1QixDQUFDO0FBQ0QsZUFBZUQsUUFBUSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"IconFont.js","names":["createFromIconfontCN","React","config","IconFont","props","iconfontUrl","console","log","Icon","scriptUrl","require","createElement"],"sources":["../../../src/components/base/common/IconFont.tsx"],"sourcesContent":["import { createFromIconfontCN } from \"@ant-design/icons\";\r\nimport { IconFontProps } from \"@ant-design/icons/lib/components/IconFont\";\r\nimport React from \"react\";\r\nimport config from \"../../config\";\r\nconst IconFont = (props: IconFontProps) => {\r\n let { iconfontUrl } = config();\r\n console.log('iconfontUrl',iconfontUrl)\r\n const Icon = createFromIconfontCN({\r\n scriptUrl: [\r\n require(\"./iconfontalibaba.js\"),\r\n iconfontUrl, // icon-shoppingcart, icon-python\r\n ],\r\n });\r\n return <Icon {...props} />;\r\n};\r\nexport default IconFont;\r\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,mBAAmB;AAExD,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,cAAc;AACjC,MAAMC,QAAQ,GAAIC,KAAoB,IAAK;EACzC,IAAI;IAAEC;EAAY,CAAC,GAAGH,MAAM,CAAC,CAAC;EAC9BI,OAAO,CAACC,GAAG,CAAC,aAAa,EAACF,WAAW,CAAC;EACtC,MAAMG,IAAI,GAAGR,oBAAoB,CAAC;IAChCS,SAAS,EAAE,CACTC,OAAO,CAAC,sBAAsB,CAAC,EAC/BL,WAAW,CAAE;IAAA;EAEjB,CAAC,CAAC;EACF,oBAAOJ,KAAA,CAAAU,aAAA,CAACH,IAAI,EAAKJ,KAAQ,CAAC;AAC5B,CAAC;AACD,eAAeD,QAAQ"}
1
+ {"version":3,"file":"IconFont.js","names":["createFromIconfontCN","React","config","IconFont","props","iconfontUrl","Icon","scriptUrl","require","createElement"],"sources":["../../../src/components/base/common/IconFont.tsx"],"sourcesContent":["import { createFromIconfontCN } from \"@ant-design/icons\";\r\nimport { IconFontProps } from \"@ant-design/icons/lib/components/IconFont\";\r\nimport React from \"react\";\r\nimport config from \"../../config\";\r\nconst IconFont = (props: IconFontProps) => {\r\n let { iconfontUrl } = config();\r\n const Icon = createFromIconfontCN({\r\n scriptUrl: [\r\n require(\"./iconfontalibaba.js\"),\r\n iconfontUrl, // icon-shoppingcart, icon-python\r\n ],\r\n });\r\n return <Icon {...props} />;\r\n};\r\nexport default IconFont;\r\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,mBAAmB;AAExD,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,cAAc;AACjC,MAAMC,QAAQ,GAAIC,KAAoB,IAAK;EACzC,IAAI;IAAEC;EAAY,CAAC,GAAGH,MAAM,CAAC,CAAC;EAC9B,MAAMI,IAAI,GAAGN,oBAAoB,CAAC;IAChCO,SAAS,EAAE,CACTC,OAAO,CAAC,sBAAsB,CAAC,EAC/BH,WAAW,CAAE;IAAA;EAEjB,CAAC,CAAC;EACF,oBAAOJ,KAAA,CAAAQ,aAAA,CAACH,IAAI,EAAKF,KAAQ,CAAC;AAC5B,CAAC;AACD,eAAeD,QAAQ"}
@@ -22,6 +22,7 @@ declare class NscImportData extends React.PureComponent<ImportPropos, any> {
22
22
  requestStatus: string;
23
23
  errorList: any[];
24
24
  warnList: any[];
25
+ buttonLoading: boolean;
25
26
  };
26
27
  modalRef: React.RefObject<any>;
27
28
  fileSizeKb(number?: number): string;
@@ -28,7 +28,8 @@ class NscImportData extends React.PureComponent {
28
28
  currentStep: 1,
29
29
  requestStatus: "",
30
30
  errorList: [],
31
- warnList: []
31
+ warnList: [],
32
+ buttonLoading: false
32
33
  });
33
34
  _defineProperty(this, "modalRef", /*#__PURE__*/React.createRef());
34
35
  }
@@ -46,6 +47,9 @@ class NscImportData extends React.PureComponent {
46
47
  data = {}
47
48
  } = requestConfig,
48
49
  config = _objectWithoutProperties(requestConfig, _excluded);
50
+ this.setState({
51
+ buttonLoading: true
52
+ });
49
53
  nscFile.importFile({
50
54
  url: importUrl,
51
55
  data: _objectSpread(_objectSpread({}, data), {}, {
@@ -53,11 +57,17 @@ class NscImportData extends React.PureComponent {
53
57
  }),
54
58
  file: file
55
59
  }, requestConfig).then(res => {
60
+ this.setState({
61
+ buttonLoading: false
62
+ });
56
63
  if (res.code == 200) {
64
+ var _this$modalRef$curren;
57
65
  _message.success("导入成功!");
58
66
  this.setState({
59
67
  requestStatus: "success"
60
68
  });
69
+ (_this$modalRef$curren = this.modalRef.current) === null || _this$modalRef$curren === void 0 || _this$modalRef$curren.hide();
70
+ this.resetData();
61
71
  (onCallBacks === null || onCallBacks === void 0 ? void 0 : onCallBacks.importCallBack) && (onCallBacks === null || onCallBacks === void 0 ? void 0 : onCallBacks.importCallBack(res));
62
72
  }
63
73
  });
@@ -86,44 +96,46 @@ class NscImportData extends React.PureComponent {
86
96
  error: "导入失败",
87
97
  warning: "告警提示"
88
98
  };
89
- if (requestStatus == "success") {
90
- var _alert_msg_map$reques;
91
- return /*#__PURE__*/React.createElement(Alert, {
92
- style: {
93
- marginTop: "8px"
94
- },
95
- message: (_alert_msg_map$reques = alert_msg_map[requestStatus]) !== null && _alert_msg_map$reques !== void 0 ? _alert_msg_map$reques : "提示",
96
- type: requestStatus,
97
- showIcon: true
98
- });
99
- } else {
100
- return /*#__PURE__*/React.createElement(Collapse, {
101
- expandIconPosition: "right",
102
- className: requestStatus == "warning" ? "content-warning" : "content-error",
103
- style: {
104
- backgroundColor: requestStatus == "warning" ? "#FCE1AB" : "#fff2f0",
105
- border: requestStatus == "warning" ? "1px solid #FCE1AB" : "1px solid #FFCCC7",
106
- borderRadius: "2px"
107
- },
108
- defaultActiveKey: ["1"]
109
- }, /*#__PURE__*/React.createElement(Collapse.Panel, {
110
- key: "1",
111
- header: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
99
+ if (requestStatus) {
100
+ if (requestStatus == "success") {
101
+ var _alert_msg_map$reques;
102
+ return /*#__PURE__*/React.createElement(Alert, {
103
+ style: {
104
+ marginTop: "8px"
105
+ },
106
+ message: (_alert_msg_map$reques = alert_msg_map[requestStatus]) !== null && _alert_msg_map$reques !== void 0 ? _alert_msg_map$reques : "提示",
107
+ type: requestStatus,
108
+ showIcon: true
109
+ });
110
+ } else {
111
+ return /*#__PURE__*/React.createElement(Collapse, {
112
+ expandIconPosition: "right",
113
+ className: requestStatus == "warning" ? "content-warning" : "content-error",
112
114
  style: {
113
- color: requestStatus == "warning" ? "#FAAD14" : "#f60"
114
- }
115
- }, requestStatus == "warning" ? /*#__PURE__*/React.createElement(ExclamationCircleOutlined, null) : /*#__PURE__*/React.createElement(CloseCircleOutlined, null), alert_msg_map[requestStatus])),
116
- extra: /*#__PURE__*/React.createElement("span", {
115
+ backgroundColor: requestStatus == "warning" ? "#FCE1AB" : "#fff2f0",
116
+ border: requestStatus == "warning" ? "1px solid #FCE1AB" : "1px solid #FFCCC7",
117
+ borderRadius: "2px"
118
+ },
119
+ defaultActiveKey: ["1"]
120
+ }, /*#__PURE__*/React.createElement(Collapse.Panel, {
121
+ key: "1",
122
+ header: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
123
+ style: {
124
+ color: requestStatus == "warning" ? "#FAAD14" : "#f60"
125
+ }
126
+ }, requestStatus == "warning" ? /*#__PURE__*/React.createElement(ExclamationCircleOutlined, null) : /*#__PURE__*/React.createElement(CloseCircleOutlined, null), alert_msg_map[requestStatus])),
127
+ extra: /*#__PURE__*/React.createElement("span", {
128
+ style: {
129
+ color: requestStatus == "warning" ? "#FAAD14" : "#f60"
130
+ }
131
+ }, requestStatus == "warning" ? "查看" : "查看错误")
132
+ }, /*#__PURE__*/React.createElement("div", {
117
133
  style: {
118
- color: requestStatus == "warning" ? "#FAAD14" : "#f60"
119
- }
120
- }, requestStatus == "warning" ? "查看" : "查看错误")
121
- }, /*#__PURE__*/React.createElement("div", {
122
- style: {
123
- background: requestStatus == "warning" ? "#FFFDF6" : "#fff9f9"
124
- },
125
- className: "content-error__msg"
126
- }, this.renderErrorContent(requestStatus == "warning" ? warnList : errorList))));
134
+ background: requestStatus == "warning" ? "#FFFDF6" : "#fff9f9"
135
+ },
136
+ className: "content-error__msg"
137
+ }, this.renderErrorContent(requestStatus == "warning" ? warnList : errorList))));
138
+ }
127
139
  }
128
140
  }
129
141
  resetData() {
@@ -154,8 +166,8 @@ class NscImportData extends React.PureComponent {
154
166
  className: "footer"
155
167
  }, /*#__PURE__*/React.createElement(NSCButton, {
156
168
  onClick: () => {
157
- var _this$modalRef$curren;
158
- (_this$modalRef$curren = this.modalRef.current) === null || _this$modalRef$curren === void 0 || _this$modalRef$curren.hide();
169
+ var _this$modalRef$curren2;
170
+ (_this$modalRef$curren2 = this.modalRef.current) === null || _this$modalRef$curren2 === void 0 || _this$modalRef$curren2.hide();
159
171
  this.resetData();
160
172
  }
161
173
  }, "\u53D6\u6D88"), status == 1 && this.state.file && /*#__PURE__*/React.createElement(NSCButton, {
@@ -209,7 +221,8 @@ class NscImportData extends React.PureComponent {
209
221
  },
210
222
  onClick: () => {
211
223
  this.importData(this.state.file, false);
212
- }
224
+ },
225
+ disabled: this.state.buttonLoading
213
226
  }, "\u4E0D\u8986\u76D6\u6570\u636E"), requestStatus == "warning" && status == 2 && /*#__PURE__*/React.createElement(NSCButton, {
214
227
  type: "primary",
215
228
  style: {
@@ -217,13 +230,14 @@ class NscImportData extends React.PureComponent {
217
230
  },
218
231
  onClick: () => {
219
232
  this.importData(this.state.file, true);
220
- }
233
+ },
234
+ disabled: this.state.buttonLoading
221
235
  }, "\u8986\u76D6\u6570\u636E"));
222
236
  return /*#__PURE__*/React.createElement("div", null, this.props.children ? this.props.children : /*#__PURE__*/React.createElement(NSCButton, {
223
237
  type: "primary",
224
238
  onClick: () => {
225
- var _this$modalRef$curren2;
226
- (_this$modalRef$curren2 = this.modalRef.current) === null || _this$modalRef$curren2 === void 0 || _this$modalRef$curren2.show();
239
+ var _this$modalRef$curren3;
240
+ (_this$modalRef$curren3 = this.modalRef.current) === null || _this$modalRef$curren3 === void 0 || _this$modalRef$curren3.show();
227
241
  }
228
242
  }, "\u6570\u636E\u5BFC\u5165"), /*#__PURE__*/React.createElement(NscModal, {
229
243
  title: "\u6570\u636E\u5BFC\u5165",
@@ -232,8 +246,8 @@ class NscImportData extends React.PureComponent {
232
246
  ref: this.modalRef,
233
247
  footer: footer,
234
248
  onCancel: () => {
235
- var _this$modalRef$curren3;
236
- (_this$modalRef$curren3 = this.modalRef.current) === null || _this$modalRef$curren3 === void 0 || _this$modalRef$curren3.hide();
249
+ var _this$modalRef$curren4;
250
+ (_this$modalRef$curren4 = this.modalRef.current) === null || _this$modalRef$curren4 === void 0 || _this$modalRef$curren4.hide();
237
251
  this.resetData();
238
252
  }
239
253
  }, /*#__PURE__*/React.createElement("div", {
@@ -294,4 +308,4 @@ class NscImportData extends React.PureComponent {
294
308
  }
295
309
  }
296
310
  export default NscImportData;
297
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIk5zY1VwbG9hZCIsIk5TQ0J1dHRvbiIsIk5zY0Rvd25Mb2FkIiwiTnNjTW9kYWwiLCJGaWxlSWNvbiIsIlVwbG9hZE91dGxpbmVkIiwiRm9sZGVyT3V0bGluZWQiLCJDbG9zZUNpcmNsZU91dGxpbmVkIiwiRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCIsIlN0ZXBzIiwibnNjRmlsZSIsIkFsZXJ0IiwiQ29sbGFwc2UiLCJOc2NJbXBvcnREYXRhIiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5Iiwic3RhdHVzIiwiZmlsZSIsImN1cnJlbnRTdGVwIiwicmVxdWVzdFN0YXR1cyIsImVycm9yTGlzdCIsIndhcm5MaXN0IiwiY3JlYXRlUmVmIiwiZmlsZVNpemVLYiIsIm51bWJlciIsImxlbmd0aCIsInVuZGVmaW5lZCIsInRvRml4ZWQiLCJpbXBvcnREYXRhIiwiaXNPdmVyd3JpdGUiLCJyZXF1ZXN0Q29uZmlnIiwiaW1wb3J0VXJsIiwib25DYWxsQmFja3MiLCJwcm9wcyIsImRhdGEiLCJjb25maWciLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJpbXBvcnRGaWxlIiwidXJsIiwiX29iamVjdFNwcmVhZCIsInRoZW4iLCJyZXMiLCJjb2RlIiwiX21lc3NhZ2UiLCJzdWNjZXNzIiwic2V0U3RhdGUiLCJpbXBvcnRDYWxsQmFjayIsInJlbmRlckVycm9yQ29udGVudCIsImxpc3QiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJzdGF0ZSIsImNyZWF0ZUVsZW1lbnQiLCJrZXkiLCJyb3dOdW0iLCJlcnJvck1zZyIsInJlbmRlclJlc3VsdCIsImFsZXJ0X21zZ19tYXAiLCJlcnJvciIsIndhcm5pbmciLCJfYWxlcnRfbXNnX21hcCRyZXF1ZXMiLCJzdHlsZSIsIm1hcmdpblRvcCIsIm1lc3NhZ2UiLCJ0eXBlIiwic2hvd0ljb24iLCJleHBhbmRJY29uUG9zaXRpb24iLCJjbGFzc05hbWUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXIiLCJib3JkZXJSYWRpdXMiLCJkZWZhdWx0QWN0aXZlS2V5IiwiUGFuZWwiLCJoZWFkZXIiLCJjb2xvciIsImV4dHJhIiwiYmFja2dyb3VuZCIsInJlc2V0RGF0YSIsInJlbmRlciIsImRvd25Mb2FkVGVtcGxldCIsImRvd25UZW1wbGV0VXJsIiwiY2hlY2tEYXRhIiwiY2hlY2tVcmwiLCJmb290ZXIiLCJvbkNsaWNrIiwiX3RoaXMkbW9kYWxSZWYkY3VycmVuIiwibW9kYWxSZWYiLCJjdXJyZW50IiwiaGlkZSIsImVycm9yQ291bnQiLCJkdXBsaWNhdGVDb3VudCIsImR1cGxpY2F0ZUxpc3QiLCJkaXNhYmxlZCIsImljb24iLCJtYXJnaW5MZWZ0IiwiY2hpbGRyZW4iLCJfdGhpcyRtb2RhbFJlZiRjdXJyZW4yIiwic2hvdyIsInRpdGxlIiwid2lkdGgiLCJ3cmFwQ2xhc3NOYW1lIiwicmVmIiwib25DYW5jZWwiLCJfdGhpcyRtb2RhbFJlZiRjdXJyZW4zIiwiZGlzcGxheSIsImJlZm9yZVVwbG9hZCIsImFsbG93RmlsZVN1ZmZpeCIsImFjY2VwdCIsInNob3dVcGxvYWRMaXN0IiwibmFtZSIsInNpemUiLCJpdGVtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvaW1wb3J0RGF0YS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IE5zY1VwbG9hZCBmcm9tIFwiLi4vdXBsb2FkXCI7XHJcbmltcG9ydCBOU0NCdXR0b24gZnJvbSBcIi4uL2J1dHRvblwiO1xyXG5pbXBvcnQgTnNjRG93bkxvYWQgZnJvbSBcIi4uL2Rvd25sb2FkXCI7XHJcbmltcG9ydCBOc2NNb2RhbCBmcm9tIFwiLi4vbW9kYWxcIjtcclxuaW1wb3J0IEZpbGVJY29uIGZyb20gXCIuLi9jb21tb24vRmlsZUljb25cIjtcclxuaW1wb3J0IHtcclxuICBVcGxvYWRPdXRsaW5lZCxcclxuICBGb2xkZXJPdXRsaW5lZCxcclxuICBDbG9zZUNpcmNsZU91dGxpbmVkLFxyXG4gIEV4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBTdGVwcyBmcm9tIFwiLi4vc3RlcHNcIjtcclxuaW1wb3J0IG5zY0ZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgQWxlcnQgZnJvbSBcIi4uL2FsZXJ0XCI7XHJcbmltcG9ydCBDb2xsYXBzZSBmcm9tIFwiLi4vY29sbGFwc2VcIjtcclxuaW1wb3J0IEljb24gZnJvbSBcIi4uL2NvbW1vbi9JY29uXCI7XHJcblxyXG5pbnRlcmZhY2UgSW1wb3J0UHJvcG9zIHtcclxuICBjaGVja0RhdGE/OiBib29sZWFuOyAvL+aYr+WQpui/m+ihjOaVsOaNruagoemqjO+8jOm7mOiupGZhbHNlXHJcbiAgY2hlY2tVcmw/OiBzdHJpbmc7IC8v5pWw5o2u5qCh6aqM5o6l5Y+j5Zyw5Z2AXHJcbiAgaW1wb3J0VXJsOiBzdHJpbmc7IC8v5pWw5o2u5a+85YWl5Zyw5Z2AXHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBkb3duTG9hZFRlbXBsZXQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuS4i+i9veaooeadv+aMiemSrlxyXG4gIGRvd25UZW1wbGV0VXJsPzogc3RyaW5nOyAvL+S4i+i9veaooeadv+WcsOWdgFxyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgY2hlY2tDYWxsQmFjaz86IGFueTsgLy/mlbDmja7moKHpqozlm57osINcclxuICAgIGltcG9ydENhbGxCYWNrPzogYW55OyAvL+aVsOaNruWvvOWFpeWbnuiwg1xyXG4gICAgY2xvc2VDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jbGFzcyBOc2NJbXBvcnREYXRhIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJbXBvcnRQcm9wb3MsIGFueT4ge1xyXG4gIHN0YXRlID0ge1xyXG4gICAgc3RhdHVzOiAxLFxyXG4gICAgZmlsZTogbnVsbCxcclxuICAgIGN1cnJlbnRTdGVwOiAxLFxyXG4gICAgcmVxdWVzdFN0YXR1czogXCJcIixcclxuICAgIGVycm9yTGlzdDogW10sXHJcbiAgICB3YXJuTGlzdDogW10sXHJcbiAgfTtcclxuICBtb2RhbFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZmlsZVNpemVLYihudW1iZXIgPSAwKSB7XHJcbiAgICByZXR1cm4gKG51bWJlciAvIDEwMjQpLnRvRml4ZWQoMik7XHJcbiAgfVxyXG4gIGltcG9ydERhdGEoZmlsZSwgaXNPdmVyd3JpdGUpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZyA9IHt9LCBpbXBvcnRVcmwsIG9uQ2FsbEJhY2tzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBkYXRhID0ge30sIC4uLmNvbmZpZyB9ID0gcmVxdWVzdENvbmZpZztcclxuICAgIG5zY0ZpbGVcclxuICAgICAgLmltcG9ydEZpbGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdXJsOiBpbXBvcnRVcmwsXHJcbiAgICAgICAgICBkYXRhOiB7IC4uLmRhdGEsIGlzT3ZlcndyaXRlOiBpc092ZXJ3cml0ZSB9LFxyXG4gICAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlcXVlc3RDb25maWdcclxuICAgICAgKVxyXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLlr7zlhaXmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJzdWNjZXNzXCIsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIG9uQ2FsbEJhY2tzPy5pbXBvcnRDYWxsQmFjayAmJiBvbkNhbGxCYWNrcz8uaW1wb3J0Q2FsbEJhY2socmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXJFcnJvckNvbnRlbnQobGlzdCkge1xyXG4gICAgcmV0dXJuIGxpc3QubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zdGF0ZS5yZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e1wi56ysXCIgKyBpdGVtLnJvd051bSArIFwi6KGM5pWw5o2u6YeN5aSN77ybXCJ9PC9kaXY+O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtLmVycm9yTXNnfTwvZGl2PjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlclJlc3VsdCgpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFN0YXR1cywgZXJyb3JMaXN0LCB3YXJuTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGFsZXJ0X21zZ19tYXAgPSB7XHJcbiAgICAgIHN1Y2Nlc3M6IFwi5a+85YWl5oiQ5YqfXCIsXHJcbiAgICAgIGVycm9yOiBcIuWvvOWFpeWksei0pVwiLFxyXG4gICAgICB3YXJuaW5nOiBcIuWRiuitpuaPkOekulwiLFxyXG4gICAgfTtcclxuICAgIGlmIChyZXF1ZXN0U3RhdHVzID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEFsZXJ0XHJcbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Ub3A6IFwiOHB4XCIgfX1cclxuICAgICAgICAgIG1lc3NhZ2U9e2FsZXJ0X21zZ19tYXBbcmVxdWVzdFN0YXR1c10gPz8gXCLmj5DnpLpcIn1cclxuICAgICAgICAgIHR5cGU9e3JlcXVlc3RTdGF0dXN9XHJcbiAgICAgICAgICBzaG93SWNvblxyXG4gICAgICAgIC8+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxDb2xsYXBzZVxyXG4gICAgICAgICAgZXhwYW5kSWNvblBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtcclxuICAgICAgICAgICAgcmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiA/IFwiY29udGVudC13YXJuaW5nXCIgOiBcImNvbnRlbnQtZXJyb3JcIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkNFMUFCXCIgOiBcIiNmZmYyZjBcIixcclxuICAgICAgICAgICAgYm9yZGVyOlxyXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCJcclxuICAgICAgICAgICAgICAgID8gXCIxcHggc29saWQgI0ZDRTFBQlwiXHJcbiAgICAgICAgICAgICAgICA6IFwiMXB4IHNvbGlkICNGRkNDQzdcIixcclxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjJweFwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGRlZmF1bHRBY3RpdmVLZXk9e1tcIjFcIl19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPENvbGxhcHNlLlBhbmVsXHJcbiAgICAgICAgICAgIGtleT1cIjFcIlxyXG4gICAgICAgICAgICBoZWFkZXI9e1xyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkFBRDE0XCIgOiBcIiNmNjBcIixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgPEV4Y2xhbWF0aW9uQ2lyY2xlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICA8Q2xvc2VDaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7YWxlcnRfbXNnX21hcFtyZXF1ZXN0U3RhdHVzXX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBleHRyYT17XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkFBRDE0XCIgOiBcIiNmNjBcIixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIuafpeeci1wiIDogXCLmn6XnnIvplJnor69cIn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkZGREY2XCIgOiBcIiNmZmY5ZjlcIixcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbnRlbnQtZXJyb3JfX21zZ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJFcnJvckNvbnRlbnQoXHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gd2Fybkxpc3QgOiBlcnJvckxpc3RcclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvQ29sbGFwc2UuUGFuZWw+XHJcbiAgICAgICAgPC9Db2xsYXBzZT5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVzZXREYXRhKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHN0YXR1czogMSxcclxuICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICAgIHJlcXVlc3RTdGF0dXM6IFwiXCIsXHJcbiAgICAgIGVycm9yTGlzdDogW10sXHJcbiAgICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZpbGUsIHN0YXR1cywgY3VycmVudFN0ZXAsIHJlcXVlc3RTdGF0dXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRvd25Mb2FkVGVtcGxldCxcclxuICAgICAgZG93blRlbXBsZXRVcmwsXHJcbiAgICAgIGNoZWNrRGF0YSxcclxuICAgICAgY2hlY2tVcmwsXHJcbiAgICAgIHJlcXVlc3RDb25maWcsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGZvb3RlciA9IChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb290ZXJcIj5cclxuICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kYWxSZWYuY3VycmVudD8uaGlkZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0RGF0YSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDlj5bmtohcclxuICAgICAgICA8L05TQ0J1dHRvbj5cclxuXHJcbiAgICAgICAge3N0YXR1cyA9PSAxICYmIHRoaXMuc3RhdGUuZmlsZSAmJiAoXHJcbiAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogMixcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwOiAxLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChjaGVja0RhdGEpIHtcclxuICAgICAgICAgICAgICAgIG5zY0ZpbGVcclxuICAgICAgICAgICAgICAgICAgLmltcG9ydEZpbGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogY2hlY2tVcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiByZXF1ZXN0Q29uZmlnPy5kYXRhIHx8IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmVycm9yQ291bnQgPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS5kdXBsaWNhdGVDb3VudCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXA6IDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJzdWNjZXNzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEoZmlsZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuZXJyb3JDb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTGlzdDogcmVzLmRhdGEuZXJyb3JMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmR1cGxpY2F0ZUNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBcIndhcm5pbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuTGlzdDogcmVzLmRhdGEuZHVwbGljYXRlTGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGlzYWJsZWQ9e2ZpbGUgPyBmYWxzZSA6IHRydWV9XHJcbiAgICAgICAgICAgIGljb249ezxVcGxvYWRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMjAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5byA5aeL5LiK5LygXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtyZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiICYmIHN0YXR1cyA9PSAyICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbXBvcnREYXRhKHRoaXMuc3RhdGUuZmlsZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDkuI3opobnm5bmlbDmja5cclxuICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgJiYgc3RhdHVzID09IDIgJiYgKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEodGhpcy5zdGF0ZS5maWxlLCB0cnVlKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg6KaG55uW5pWw5o2uXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdj5cclxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbiA/IChcclxuICAgICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LnNob3coKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5pWw5o2u5a+85YWlXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG5cclxuICAgICAgICA8TnNjTW9kYWxcclxuICAgICAgICAgIHRpdGxlPVwi5pWw5o2u5a+85YWlXCJcclxuICAgICAgICAgIHdpZHRoPXs4MDB9XHJcbiAgICAgICAgICB3cmFwQ2xhc3NOYW1lPXtcImltcG9ydC1tb2RhbFwifVxyXG4gICAgICAgICAgcmVmPXt0aGlzLm1vZGFsUmVmfVxyXG4gICAgICAgICAgZm9vdGVyPXtmb290ZXJ9XHJcbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LmhpZGUoKTtcclxuICAgICAgICAgICAgdGhpcy5yZXNldERhdGEoKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgIHtzdGF0dXMgPT0gMSA/IChcclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fT5cclxuICAgICAgICAgICAgICAgICAgPE5zY1VwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZVVwbG9hZD17KGZpbGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBhbGxvd0ZpbGVTdWZmaXg9e1tcInhsc1wiLCBcInhseHNcIl19XHJcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0PXtcIi54bHMsLnhseHNcIn1cclxuICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmaWxlID8gdHJ1ZSA6IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PEZvbGRlck91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIOmAieaLqeaWh+S7tlxyXG4gICAgICAgICAgICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L05zY1VwbG9hZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIHtkb3duTG9hZFRlbXBsZXQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxOc2NEb3duTG9hZCB1cmw9e2Rvd25UZW1wbGV0VXJsfT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxOU0NCdXR0b24gdHlwZT1cInByaW1hcnlcIiBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgICAg5qih5p2/5LiL6L29XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L05zY0Rvd25Mb2FkPlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVwbG9hZC10aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgMeOAgeaUr+aMgUV4Y2VsIDIwMDflj4rku6XkuIrniYjmnKzvvIzkuJTmr4/mrKHlj6rog73kuIrkvKDkuIDkuKrmlofku7bvvJtcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PjLjgIHlr7zlhaXliY3lhYjkuIvovb3mqKHmnb/vvIzlubbmoLnmja7mqKHmnb/loavlhpnmlbDmja7vvJs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB7ZmlsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkLWZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHR5cGU9XCJleGNlbFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS10aXRsZVwiPntmaWxlLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICDmlofku7blpKflsI/vvJp7dGhpcy5maWxlU2l6ZUtiKGZpbGUuc2l6ZSkgKyBcIktCXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxTdGVwc1xyXG4gICAgICAgICAgICAgICAgICBjdXJyZW50PXtjdXJyZW50U3RlcH1cclxuICAgICAgICAgICAgICAgICAgaXRlbXM9e1tcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCLmlbDmja7liIbmnpBcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIuaVsOaNruaPkuWFpVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicmVzdWx0LWNvbnRlbnRcIn0+e3RoaXMucmVuZGVyUmVzdWx0KCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L05zY01vZGFsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IE5zY0ltcG9ydERhdGE7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxjQUFjO0FBQ3JCLE9BQU9DLFNBQVMsTUFBTSxXQUFXO0FBQ2pDLE9BQU9DLFNBQVMsTUFBTSxXQUFXO0FBQ2pDLE9BQU9DLFdBQVcsTUFBTSxhQUFhO0FBQ3JDLE9BQU9DLFFBQVEsTUFBTSxVQUFVO0FBQy9CLE9BQU9DLFFBQVEsTUFBTSxvQkFBb0I7QUFDekMsU0FDRUMsY0FBYyxFQUNkQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMseUJBQXlCLFFBQ3BCLG1CQUFtQjtBQUMxQixPQUFPQyxLQUFLLE1BQU0sVUFBVTtBQUM1QixPQUFPQyxPQUFPLE1BQU0sVUFBVTtBQUU5QixPQUFPQyxLQUFLLE1BQU0sVUFBVTtBQUM1QixPQUFPQyxRQUFRLE1BQU0sYUFBYTtBQWlCbEMsTUFBTUMsYUFBYSxTQUFTZCxLQUFLLENBQUNlLGFBQWEsQ0FBb0I7RUFBQUMsWUFBQTtJQUFBLFNBQUFDLFNBQUE7SUFBQUMsZUFBQSxnQkFDekQ7TUFDTkMsTUFBTSxFQUFFLENBQUM7TUFDVEMsSUFBSSxFQUFFLElBQUk7TUFDVkMsV0FBVyxFQUFFLENBQUM7TUFDZEMsYUFBYSxFQUFFLEVBQUU7TUFDakJDLFNBQVMsRUFBRSxFQUFFO01BQ2JDLFFBQVEsRUFBRTtJQUNaLENBQUM7SUFBQU4s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
311
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIk5zY1VwbG9hZCIsIk5TQ0J1dHRvbiIsIk5zY0Rvd25Mb2FkIiwiTnNjTW9kYWwiLCJGaWxlSWNvbiIsIlVwbG9hZE91dGxpbmVkIiwiRm9sZGVyT3V0bGluZWQiLCJDbG9zZUNpcmNsZU91dGxpbmVkIiwiRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCIsIlN0ZXBzIiwibnNjRmlsZSIsIkFsZXJ0IiwiQ29sbGFwc2UiLCJOc2NJbXBvcnREYXRhIiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5Iiwic3RhdHVzIiwiZmlsZSIsImN1cnJlbnRTdGVwIiwicmVxdWVzdFN0YXR1cyIsImVycm9yTGlzdCIsIndhcm5MaXN0IiwiYnV0dG9uTG9hZGluZyIsImNyZWF0ZVJlZiIsImZpbGVTaXplS2IiLCJudW1iZXIiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0b0ZpeGVkIiwiaW1wb3J0RGF0YSIsImlzT3ZlcndyaXRlIiwicmVxdWVzdENvbmZpZyIsImltcG9ydFVybCIsIm9uQ2FsbEJhY2tzIiwicHJvcHMiLCJkYXRhIiwiY29uZmlnIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwic2V0U3RhdGUiLCJpbXBvcnRGaWxlIiwidXJsIiwiX29iamVjdFNwcmVhZCIsInRoZW4iLCJyZXMiLCJjb2RlIiwiX3RoaXMkbW9kYWxSZWYkY3VycmVuIiwiX21lc3NhZ2UiLCJzdWNjZXNzIiwibW9kYWxSZWYiLCJjdXJyZW50IiwiaGlkZSIsInJlc2V0RGF0YSIsImltcG9ydENhbGxCYWNrIiwicmVuZGVyRXJyb3JDb250ZW50IiwibGlzdCIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInN0YXRlIiwiY3JlYXRlRWxlbWVudCIsImtleSIsInJvd051bSIsImVycm9yTXNnIiwicmVuZGVyUmVzdWx0IiwiYWxlcnRfbXNnX21hcCIsImVycm9yIiwid2FybmluZyIsIl9hbGVydF9tc2dfbWFwJHJlcXVlcyIsInN0eWxlIiwibWFyZ2luVG9wIiwibWVzc2FnZSIsInR5cGUiLCJzaG93SWNvbiIsImV4cGFuZEljb25Qb3NpdGlvbiIsImNsYXNzTmFtZSIsImJhY2tncm91bmRDb2xvciIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsImRlZmF1bHRBY3RpdmVLZXkiLCJQYW5lbCIsImhlYWRlciIsImNvbG9yIiwiZXh0cmEiLCJiYWNrZ3JvdW5kIiwicmVuZGVyIiwiZG93bkxvYWRUZW1wbGV0IiwiZG93blRlbXBsZXRVcmwiLCJjaGVja0RhdGEiLCJjaGVja1VybCIsImZvb3RlciIsIm9uQ2xpY2siLCJfdGhpcyRtb2RhbFJlZiRjdXJyZW4yIiwiZXJyb3JDb3VudCIsImR1cGxpY2F0ZUNvdW50IiwiZHVwbGljYXRlTGlzdCIsImRpc2FibGVkIiwiaWNvbiIsIm1hcmdpbkxlZnQiLCJjaGlsZHJlbiIsIl90aGlzJG1vZGFsUmVmJGN1cnJlbjMiLCJzaG93IiwidGl0bGUiLCJ3aWR0aCIsIndyYXBDbGFzc05hbWUiLCJyZWYiLCJvbkNhbmNlbCIsIl90aGlzJG1vZGFsUmVmJGN1cnJlbjQiLCJkaXNwbGF5IiwiYmVmb3JlVXBsb2FkIiwiYWxsb3dGaWxlU3VmZml4IiwiYWNjZXB0Iiwic2hvd1VwbG9hZExpc3QiLCJuYW1lIiwic2l6ZSIsIml0ZW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9pbXBvcnREYXRhL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgTnNjVXBsb2FkIGZyb20gXCIuLi91cGxvYWRcIjtcclxuaW1wb3J0IE5TQ0J1dHRvbiBmcm9tIFwiLi4vYnV0dG9uXCI7XHJcbmltcG9ydCBOc2NEb3duTG9hZCBmcm9tIFwiLi4vZG93bmxvYWRcIjtcclxuaW1wb3J0IE5zY01vZGFsIGZyb20gXCIuLi9tb2RhbFwiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIFVwbG9hZE91dGxpbmVkLFxyXG4gIEZvbGRlck91dGxpbmVkLFxyXG4gIENsb3NlQ2lyY2xlT3V0bGluZWQsXHJcbiAgRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFN0ZXBzIGZyb20gXCIuLi9zdGVwc1wiO1xyXG5pbXBvcnQgbnNjRmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgbWVzc2FnZSB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBBbGVydCBmcm9tIFwiLi4vYWxlcnRcIjtcclxuaW1wb3J0IENvbGxhcHNlIGZyb20gXCIuLi9jb2xsYXBzZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ljb25cIjtcclxuXHJcbmludGVyZmFjZSBJbXBvcnRQcm9wb3Mge1xyXG4gIGNoZWNrRGF0YT86IGJvb2xlYW47IC8v5piv5ZCm6L+b6KGM5pWw5o2u5qCh6aqM77yM6buY6K6kZmFsc2VcclxuICBjaGVja1VybD86IHN0cmluZzsgLy/mlbDmja7moKHpqozmjqXlj6PlnLDlnYBcclxuICBpbXBvcnRVcmw6IHN0cmluZzsgLy/mlbDmja7lr7zlhaXlnLDlnYBcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIGRvd25Mb2FkVGVtcGxldD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65LiL6L295qih5p2/5oyJ6ZKuXHJcbiAgZG93blRlbXBsZXRVcmw/OiBzdHJpbmc7IC8v5LiL6L295qih5p2/5Zyw5Z2AXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICBjaGVja0NhbGxCYWNrPzogYW55OyAvL+aVsOaNruagoemqjOWbnuiwg1xyXG4gICAgaW1wb3J0Q2FsbEJhY2s/OiBhbnk7IC8v5pWw5o2u5a+85YWl5Zue6LCDXHJcbiAgICBjbG9zZUNhbGxCYWNrPzogYW55O1xyXG4gIH07XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIE5zY0ltcG9ydERhdGEgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PEltcG9ydFByb3BvcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBzdGF0dXM6IDEsXHJcbiAgICBmaWxlOiBudWxsLFxyXG4gICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICByZXF1ZXN0U3RhdHVzOiBcIlwiLFxyXG4gICAgZXJyb3JMaXN0OiBbXSxcclxuICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gIH07XHJcbiAgbW9kYWxSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGZpbGVTaXplS2IobnVtYmVyID0gMCkge1xyXG4gICAgcmV0dXJuIChudW1iZXIgLyAxMDI0KS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuICBpbXBvcnREYXRhKGZpbGUsIGlzT3ZlcndyaXRlKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25maWcgPSB7fSwgaW1wb3J0VXJsLCBvbkNhbGxCYWNrcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgZGF0YSA9IHt9LCAuLi5jb25maWcgfSA9IHJlcXVlc3RDb25maWc7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgYnV0dG9uTG9hZGluZzogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgbnNjRmlsZVxyXG4gICAgICAuaW1wb3J0RmlsZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICB1cmw6IGltcG9ydFVybCxcclxuICAgICAgICAgIGRhdGE6IHsgLi4uZGF0YSwgaXNPdmVyd3JpdGU6IGlzT3ZlcndyaXRlIH0sXHJcbiAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVxdWVzdENvbmZpZ1xyXG4gICAgICApXHJcbiAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgYnV0dG9uTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5a+85YWl5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwic3VjY2Vzc1wiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgICAgICAgICBvbkNhbGxCYWNrcz8uaW1wb3J0Q2FsbEJhY2sgJiYgb25DYWxsQmFja3M/LmltcG9ydENhbGxCYWNrKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyRXJyb3JDb250ZW50KGxpc3QpIHtcclxuICAgIHJldHVybiBsaXN0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUucmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIikge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntcIuesrFwiICsgaXRlbS5yb3dOdW0gKyBcIuihjOaVsOaNrumHjeWkje+8m1wifTwvZGl2PjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbS5lcnJvck1zZ308L2Rpdj47XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXJSZXN1bHQoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RTdGF0dXMsIGVycm9yTGlzdCwgd2Fybkxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBhbGVydF9tc2dfbWFwID0ge1xyXG4gICAgICBzdWNjZXNzOiBcIuWvvOWFpeaIkOWKn1wiLFxyXG4gICAgICBlcnJvcjogXCLlr7zlhaXlpLHotKVcIixcclxuICAgICAgd2FybmluZzogXCLlkYrorabmj5DnpLpcIixcclxuICAgIH07XHJcbiAgICBpZiAocmVxdWVzdFN0YXR1cykge1xyXG4gICAgICBpZiAocmVxdWVzdFN0YXR1cyA9PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QWxlcnRcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luVG9wOiBcIjhweFwiIH19XHJcbiAgICAgICAgICAgIG1lc3NhZ2U9e2FsZXJ0X21zZ19tYXBbcmVxdWVzdFN0YXR1c10gPz8gXCLmj5DnpLpcIn1cclxuICAgICAgICAgICAgdHlwZT17cmVxdWVzdFN0YXR1c31cclxuICAgICAgICAgICAgc2hvd0ljb25cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPENvbGxhcHNlXHJcbiAgICAgICAgICAgIGV4cGFuZEljb25Qb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtcclxuICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCJjb250ZW50LXdhcm5pbmdcIiA6IFwiY29udGVudC1lcnJvclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkNFMUFCXCIgOiBcIiNmZmYyZjBcIixcclxuICAgICAgICAgICAgICBib3JkZXI6XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgID8gXCIxcHggc29saWQgI0ZDRTFBQlwiXHJcbiAgICAgICAgICAgICAgICAgIDogXCIxcHggc29saWQgI0ZGQ0NDN1wiLFxyXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogXCIycHhcIixcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGVmYXVsdEFjdGl2ZUtleT17W1wiMVwiXX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPENvbGxhcHNlLlBhbmVsXHJcbiAgICAgICAgICAgICAga2V5PVwiMVwiXHJcbiAgICAgICAgICAgICAgaGVhZGVyPXtcclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkFBRDE0XCIgOiBcIiNmNjBcIixcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2VDaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAge2FsZXJ0X21zZ19tYXBbcmVxdWVzdFN0YXR1c119XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBleHRyYT17XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkFBRDE0XCIgOiBcIiNmNjBcIixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIuafpeeci1wiIDogXCLmn6XnnIvplJnor69cIn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGRkZERjZcIiA6IFwiI2ZmZjlmOVwiLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbnRlbnQtZXJyb3JfX21zZ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRXJyb3JDb250ZW50KFxyXG4gICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gd2Fybkxpc3QgOiBlcnJvckxpc3RcclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvQ29sbGFwc2UuUGFuZWw+XHJcbiAgICAgICAgICA8L0NvbGxhcHNlPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmVzZXREYXRhKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHN0YXR1czogMSxcclxuICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICAgIHJlcXVlc3RTdGF0dXM6IFwiXCIsXHJcbiAgICAgIGVycm9yTGlzdDogW10sXHJcbiAgICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZpbGUsIHN0YXR1cywgY3VycmVudFN0ZXAsIHJlcXVlc3RTdGF0dXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRvd25Mb2FkVGVtcGxldCxcclxuICAgICAgZG93blRlbXBsZXRVcmwsXHJcbiAgICAgIGNoZWNrRGF0YSxcclxuICAgICAgY2hlY2tVcmwsXHJcbiAgICAgIHJlcXVlc3RDb25maWcsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGZvb3RlciA9IChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb290ZXJcIj5cclxuICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kYWxSZWYuY3VycmVudD8uaGlkZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0RGF0YSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDlj5bmtohcclxuICAgICAgICA8L05TQ0J1dHRvbj5cclxuXHJcbiAgICAgICAge3N0YXR1cyA9PSAxICYmIHRoaXMuc3RhdGUuZmlsZSAmJiAoXHJcbiAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogMixcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRTdGVwOiAxLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChjaGVja0RhdGEpIHtcclxuICAgICAgICAgICAgICAgIG5zY0ZpbGVcclxuICAgICAgICAgICAgICAgICAgLmltcG9ydEZpbGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogY2hlY2tVcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiByZXF1ZXN0Q29uZmlnPy5kYXRhIHx8IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmVycm9yQ291bnQgPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS5kdXBsaWNhdGVDb3VudCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0ZXA6IDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJzdWNjZXNzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEoZmlsZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuZXJyb3JDb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTGlzdDogcmVzLmRhdGEuZXJyb3JMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmR1cGxpY2F0ZUNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBcIndhcm5pbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuTGlzdDogcmVzLmRhdGEuZHVwbGljYXRlTGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGlzYWJsZWQ9e2ZpbGUgPyBmYWxzZSA6IHRydWV9XHJcbiAgICAgICAgICAgIGljb249ezxVcGxvYWRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMjAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5byA5aeL5LiK5LygXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtyZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiICYmIHN0YXR1cyA9PSAyICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbXBvcnREYXRhKHRoaXMuc3RhdGUuZmlsZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5idXR0b25Mb2FkaW5nfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDkuI3opobnm5bmlbDmja5cclxuICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgJiYgc3RhdHVzID09IDIgJiYgKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEodGhpcy5zdGF0ZS5maWxlLCB0cnVlKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuYnV0dG9uTG9hZGluZ31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg6KaG55uW5pWw5o2uXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdj5cclxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbiA/IChcclxuICAgICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LnNob3coKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5pWw5o2u5a+85YWlXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG5cclxuICAgICAgICA8TnNjTW9kYWxcclxuICAgICAgICAgIHRpdGxlPVwi5pWw5o2u5a+85YWlXCJcclxuICAgICAgICAgIHdpZHRoPXs4MDB9XHJcbiAgICAgICAgICB3cmFwQ2xhc3NOYW1lPXtcImltcG9ydC1tb2RhbFwifVxyXG4gICAgICAgICAgcmVmPXt0aGlzLm1vZGFsUmVmfVxyXG4gICAgICAgICAgZm9vdGVyPXtmb290ZXJ9XHJcbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LmhpZGUoKTtcclxuICAgICAgICAgICAgdGhpcy5yZXNldERhdGEoKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgIHtzdGF0dXMgPT0gMSA/IChcclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fT5cclxuICAgICAgICAgICAgICAgICAgPE5zY1VwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZVVwbG9hZD17KGZpbGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBhbGxvd0ZpbGVTdWZmaXg9e1tcInhsc1wiLCBcInhseHNcIl19XHJcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0PXtcIi54bHMsLnhseHNcIn1cclxuICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmaWxlID8gdHJ1ZSA6IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PEZvbGRlck91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIOmAieaLqeaWh+S7tlxyXG4gICAgICAgICAgICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L05zY1VwbG9hZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIHtkb3duTG9hZFRlbXBsZXQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxOc2NEb3duTG9hZCB1cmw9e2Rvd25UZW1wbGV0VXJsfT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxOU0NCdXR0b24gdHlwZT1cInByaW1hcnlcIiBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgICAg5qih5p2/5LiL6L29XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L05zY0Rvd25Mb2FkPlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVwbG9hZC10aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgMeOAgeaUr+aMgUV4Y2VsIDIwMDflj4rku6XkuIrniYjmnKzvvIzkuJTmr4/mrKHlj6rog73kuIrkvKDkuIDkuKrmlofku7bvvJtcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PjLjgIHlr7zlhaXliY3lhYjkuIvovb3mqKHmnb/vvIzlubbmoLnmja7mqKHmnb/loavlhpnmlbDmja7vvJs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB7ZmlsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkLWZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHR5cGU9XCJleGNlbFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS10aXRsZVwiPntmaWxlLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICDmlofku7blpKflsI/vvJp7dGhpcy5maWxlU2l6ZUtiKGZpbGUuc2l6ZSkgKyBcIktCXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxTdGVwc1xyXG4gICAgICAgICAgICAgICAgICBjdXJyZW50PXtjdXJyZW50U3RlcH1cclxuICAgICAgICAgICAgICAgICAgaXRlbXM9e1tcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCLmlbDmja7liIbmnpBcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIuaVsOaNruaPkuWFpVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicmVzdWx0LWNvbnRlbnRcIn0+e3RoaXMucmVuZGVyUmVzdWx0KCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L05zY01vZGFsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IE5zY0ltcG9ydERhdGE7XHJcbiJdLCJt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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","NscUpload","NSCButton","NscDownLoad","NscModal","FileIcon","UploadOutlined","FolderOutlined","CloseCircleOutlined","ExclamationCircleOutlined","Steps","nscFile","Alert","Collapse","NscImportData","PureComponent","constructor","arguments","_defineProperty","status","file","currentStep","requestStatus","errorList","warnList","createRef","fileSizeKb","number","length","undefined","toFixed","importData","isOverwrite","requestConfig","importUrl","onCallBacks","props","data","config","_objectWithoutProperties","_excluded","importFile","url","_objectSpread","then","res","code","_message","success","setState","importCallBack","renderErrorContent","list","map","item","index","state","createElement","key","rowNum","errorMsg","renderResult","alert_msg_map","error","warning","_alert_msg_map$reques","style","marginTop","message","type","showIcon","expandIconPosition","className","backgroundColor","border","borderRadius","defaultActiveKey","Panel","header","color","extra","background","resetData","render","downLoadTemplet","downTempletUrl","checkData","checkUrl","footer","onClick","_this$modalRef$curren","modalRef","current","hide","errorCount","duplicateCount","duplicateList","disabled","icon","marginLeft","children","_this$modalRef$curren2","show","title","width","wrapClassName","ref","onCancel","_this$modalRef$curren3","display","beforeUpload","allowFileSuffix","accept","showUploadList","name","size","items"],"sources":["../../../src/components/base/importData/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./index.less\";\r\nimport NscUpload from \"../upload\";\r\nimport NSCButton from \"../button\";\r\nimport NscDownLoad from \"../download\";\r\nimport NscModal from \"../modal\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n UploadOutlined,\r\n FolderOutlined,\r\n CloseCircleOutlined,\r\n ExclamationCircleOutlined,\r\n} from \"@ant-design/icons\";\r\nimport Steps from \"../steps\";\r\nimport nscFile from \"nsc-file\";\r\nimport { message } from \"antd\";\r\nimport Alert from \"../alert\";\r\nimport Collapse from \"../collapse\";\r\nimport Icon from \"../common/Icon\";\r\n\r\ninterface ImportPropos {\r\n checkData?: boolean; //是否进行数据校验,默认false\r\n checkUrl?: string; //数据校验接口地址\r\n importUrl: string; //数据导入地址\r\n requestConfig?: any;\r\n downLoadTemplet?: boolean; //是否显示下载模板按钮\r\n downTempletUrl?: string; //下载模板地址\r\n onCallBacks?: {\r\n checkCallBack?: any; //数据校验回调\r\n importCallBack?: any; //数据导入回调\r\n closeCallBack?: any;\r\n };\r\n [propsName: string]: any;\r\n}\r\nclass NscImportData extends React.PureComponent<ImportPropos, any> {\r\n state = {\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n };\r\n modalRef = React.createRef<any>();\r\n fileSizeKb(number = 0) {\r\n return (number / 1024).toFixed(2);\r\n }\r\n importData(file, isOverwrite) {\r\n const { requestConfig = {}, importUrl, onCallBacks = {} } = this.props;\r\n let { data = {}, ...config } = requestConfig;\r\n nscFile\r\n .importFile(\r\n {\r\n url: importUrl,\r\n data: { ...data, isOverwrite: isOverwrite },\r\n file: file,\r\n },\r\n requestConfig\r\n )\r\n .then((res: any) => {\r\n if (res.code == 200) {\r\n message.success(\"导入成功!\");\r\n this.setState({\r\n requestStatus: \"success\",\r\n });\r\n onCallBacks?.importCallBack && onCallBacks?.importCallBack(res);\r\n }\r\n });\r\n }\r\n renderErrorContent(list) {\r\n return list.map((item, index) => {\r\n if (this.state.requestStatus == \"warning\") {\r\n return <div key={index}>{\"第\" + item.rowNum + \"行数据重复;\"}</div>;\r\n } else {\r\n return <div key={index}>{item.errorMsg}</div>;\r\n }\r\n });\r\n }\r\n renderResult() {\r\n const { requestStatus, errorList, warnList } = this.state;\r\n const alert_msg_map = {\r\n success: \"导入成功\",\r\n error: \"导入失败\",\r\n warning: \"告警提示\",\r\n };\r\n if (requestStatus == \"success\") {\r\n return (\r\n <Alert\r\n style={{ marginTop: \"8px\" }}\r\n message={alert_msg_map[requestStatus] ?? \"提示\"}\r\n type={requestStatus}\r\n showIcon\r\n />\r\n );\r\n } else {\r\n return (\r\n <Collapse\r\n expandIconPosition=\"right\"\r\n className={\r\n requestStatus == \"warning\" ? \"content-warning\" : \"content-error\"\r\n }\r\n style={{\r\n backgroundColor: requestStatus == \"warning\" ? \"#FCE1AB\" : \"#fff2f0\",\r\n border:\r\n requestStatus == \"warning\"\r\n ? \"1px solid #FCE1AB\"\r\n : \"1px solid #FFCCC7\",\r\n borderRadius: \"2px\",\r\n }}\r\n defaultActiveKey={[\"1\"]}\r\n >\r\n <Collapse.Panel\r\n key=\"1\"\r\n header={\r\n <div>\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? (\r\n <ExclamationCircleOutlined />\r\n ) : (\r\n <CloseCircleOutlined />\r\n )}\r\n {alert_msg_map[requestStatus]}\r\n </span>\r\n </div>\r\n }\r\n extra={\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? \"查看\" : \"查看错误\"}\r\n </span>\r\n }\r\n >\r\n <div\r\n style={{\r\n background: requestStatus == \"warning\" ? \"#FFFDF6\" : \"#fff9f9\",\r\n }}\r\n className=\"content-error__msg\"\r\n >\r\n {this.renderErrorContent(\r\n requestStatus == \"warning\" ? warnList : errorList\r\n )}\r\n </div>\r\n </Collapse.Panel>\r\n </Collapse>\r\n );\r\n }\r\n }\r\n resetData() {\r\n this.setState({\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n });\r\n }\r\n render() {\r\n const { file, status, currentStep, requestStatus } = this.state;\r\n const {\r\n downLoadTemplet,\r\n downTempletUrl,\r\n checkData,\r\n checkUrl,\r\n requestConfig,\r\n } = this.props;\r\n const footer = (\r\n <div className=\"footer\">\r\n <NSCButton\r\n onClick={() => {\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n }}\r\n >\r\n 取消\r\n </NSCButton>\r\n\r\n {status == 1 && this.state.file && (\r\n <NSCButton\r\n onClick={() => {\r\n this.setState({\r\n status: 2,\r\n currentStep: 1,\r\n });\r\n if (checkData) {\r\n nscFile\r\n .importFile({\r\n url: checkUrl,\r\n file: file,\r\n data: requestConfig?.data || {},\r\n })\r\n .then((res: any) => {\r\n if (res.code == 200) {\r\n if (\r\n res.data.errorCount == 0 &&\r\n res.data.duplicateCount == 0\r\n ) {\r\n this.setState({\r\n currentStep: 2,\r\n requestStatus: \"success\",\r\n });\r\n this.importData(file, false);\r\n return;\r\n }\r\n if (res.data.errorCount > 0) {\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errorList,\r\n });\r\n return;\r\n }\r\n if (res.data.duplicateCount > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.duplicateList,\r\n });\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n }}\r\n disabled={file ? false : true}\r\n icon={<UploadOutlined />}\r\n style={{ marginLeft: 20 }}\r\n >\r\n 开始上传\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, false);\r\n }}\r\n >\r\n 不覆盖数据\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, true);\r\n }}\r\n >\r\n 覆盖数据\r\n </NSCButton>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n {this.props.children ? (\r\n this.props.children\r\n ) : (\r\n <NSCButton\r\n type=\"primary\"\r\n onClick={() => {\r\n this.modalRef.current?.show();\r\n }}\r\n >\r\n 数据导入\r\n </NSCButton>\r\n )}\r\n\r\n <NscModal\r\n title=\"数据导入\"\r\n width={800}\r\n wrapClassName={\"import-modal\"}\r\n ref={this.modalRef}\r\n footer={footer}\r\n onCancel={() => {\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n }}\r\n >\r\n <div className=\"content\">\r\n {status == 1 ? (\r\n <div>\r\n <div style={{ display: \"flex\" }}>\r\n <NscUpload\r\n beforeUpload={(file) => {\r\n this.setState({\r\n file,\r\n });\r\n return false;\r\n }}\r\n allowFileSuffix={[\"xls\", \"xlxs\"]}\r\n accept={\".xls,.xlxs\"}\r\n showUploadList={false}\r\n >\r\n <NSCButton\r\n type={\"primary\"}\r\n disabled={file ? true : false}\r\n icon={<FolderOutlined />}\r\n >\r\n 选择文件\r\n </NSCButton>\r\n </NscUpload>\r\n\r\n {downLoadTemplet && (\r\n <NscDownLoad url={downTempletUrl}>\r\n <NSCButton type=\"primary\" style={{ marginLeft: 20 }}>\r\n 模板下载\r\n </NSCButton>\r\n </NscDownLoad>\r\n )}\r\n </div>\r\n <div className=\"upload-tip\">\r\n <div className=\"upload-tip-left\">\r\n <ExclamationCircleOutlined />\r\n </div>\r\n <div className=\"upload-tip-content\">\r\n <div>\r\n 1、支持Excel 2007及以上版本,且每次只能上传一个文件;\r\n </div>\r\n <div>2、导入前先下载模板,并根据模板填写数据;</div>\r\n </div>\r\n </div>\r\n\r\n {file && (\r\n <div className=\"upload-file\">\r\n <div className=\"file-icon\">\r\n <FileIcon type=\"excel\" />\r\n </div>\r\n <div className=\"file-content\">\r\n <div className=\"file-title\">{file.name}</div>\r\n <div className=\"file-desc\">\r\n <span>\r\n 文件大小:{this.fileSizeKb(file.size) + \"KB\"}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div>\r\n <Steps\r\n current={currentStep}\r\n items={[\r\n {\r\n title: \"数据分析\",\r\n },\r\n {\r\n title: \"数据插入\",\r\n },\r\n ]}\r\n />\r\n <div className={\"result-content\"}>{this.renderResult()}</div>\r\n </div>\r\n )}\r\n </div>\r\n </NscModal>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default NscImportData;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","NscUpload","NSCButton","NscDownLoad","NscModal","FileIcon","UploadOutlined","FolderOutlined","CloseCircleOutlined","ExclamationCircleOutlined","Steps","nscFile","Alert","Collapse","NscImportData","PureComponent","constructor","arguments","_defineProperty","status","file","currentStep","requestStatus","errorList","warnList","buttonLoading","createRef","fileSizeKb","number","length","undefined","toFixed","importData","isOverwrite","requestConfig","importUrl","onCallBacks","props","data","config","_objectWithoutProperties","_excluded","setState","importFile","url","_objectSpread","then","res","code","_this$modalRef$curren","_message","success","modalRef","current","hide","resetData","importCallBack","renderErrorContent","list","map","item","index","state","createElement","key","rowNum","errorMsg","renderResult","alert_msg_map","error","warning","_alert_msg_map$reques","style","marginTop","message","type","showIcon","expandIconPosition","className","backgroundColor","border","borderRadius","defaultActiveKey","Panel","header","color","extra","background","render","downLoadTemplet","downTempletUrl","checkData","checkUrl","footer","onClick","_this$modalRef$curren2","errorCount","duplicateCount","duplicateList","disabled","icon","marginLeft","children","_this$modalRef$curren3","show","title","width","wrapClassName","ref","onCancel","_this$modalRef$curren4","display","beforeUpload","allowFileSuffix","accept","showUploadList","name","size","items"],"sources":["../../../src/components/base/importData/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./index.less\";\r\nimport NscUpload from \"../upload\";\r\nimport NSCButton from \"../button\";\r\nimport NscDownLoad from \"../download\";\r\nimport NscModal from \"../modal\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n UploadOutlined,\r\n FolderOutlined,\r\n CloseCircleOutlined,\r\n ExclamationCircleOutlined,\r\n} from \"@ant-design/icons\";\r\nimport Steps from \"../steps\";\r\nimport nscFile from \"nsc-file\";\r\nimport { message } from \"antd\";\r\nimport Alert from \"../alert\";\r\nimport Collapse from \"../collapse\";\r\nimport Icon from \"../common/Icon\";\r\n\r\ninterface ImportPropos {\r\n checkData?: boolean; //是否进行数据校验,默认false\r\n checkUrl?: string; //数据校验接口地址\r\n importUrl: string; //数据导入地址\r\n requestConfig?: any;\r\n downLoadTemplet?: boolean; //是否显示下载模板按钮\r\n downTempletUrl?: string; //下载模板地址\r\n onCallBacks?: {\r\n checkCallBack?: any; //数据校验回调\r\n importCallBack?: any; //数据导入回调\r\n closeCallBack?: any;\r\n };\r\n [propsName: string]: any;\r\n}\r\nclass NscImportData extends React.PureComponent<ImportPropos, any> {\r\n state = {\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n buttonLoading: false,\r\n };\r\n modalRef = React.createRef<any>();\r\n fileSizeKb(number = 0) {\r\n return (number / 1024).toFixed(2);\r\n }\r\n importData(file, isOverwrite) {\r\n const { requestConfig = {}, importUrl, onCallBacks = {} } = this.props;\r\n let { data = {}, ...config } = requestConfig;\r\n this.setState({\r\n buttonLoading: true,\r\n });\r\n nscFile\r\n .importFile(\r\n {\r\n url: importUrl,\r\n data: { ...data, isOverwrite: isOverwrite },\r\n file: file,\r\n },\r\n requestConfig\r\n )\r\n .then((res: any) => {\r\n this.setState({\r\n buttonLoading: false,\r\n });\r\n if (res.code == 200) {\r\n message.success(\"导入成功!\");\r\n this.setState({\r\n requestStatus: \"success\",\r\n });\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n onCallBacks?.importCallBack && onCallBacks?.importCallBack(res);\r\n }\r\n });\r\n }\r\n renderErrorContent(list) {\r\n return list.map((item, index) => {\r\n if (this.state.requestStatus == \"warning\") {\r\n return <div key={index}>{\"第\" + item.rowNum + \"行数据重复;\"}</div>;\r\n } else {\r\n return <div key={index}>{item.errorMsg}</div>;\r\n }\r\n });\r\n }\r\n renderResult() {\r\n const { requestStatus, errorList, warnList } = this.state;\r\n const alert_msg_map = {\r\n success: \"导入成功\",\r\n error: \"导入失败\",\r\n warning: \"告警提示\",\r\n };\r\n if (requestStatus) {\r\n if (requestStatus == \"success\") {\r\n return (\r\n <Alert\r\n style={{ marginTop: \"8px\" }}\r\n message={alert_msg_map[requestStatus] ?? \"提示\"}\r\n type={requestStatus}\r\n showIcon\r\n />\r\n );\r\n } else {\r\n return (\r\n <Collapse\r\n expandIconPosition=\"right\"\r\n className={\r\n requestStatus == \"warning\" ? \"content-warning\" : \"content-error\"\r\n }\r\n style={{\r\n backgroundColor:\r\n requestStatus == \"warning\" ? \"#FCE1AB\" : \"#fff2f0\",\r\n border:\r\n requestStatus == \"warning\"\r\n ? \"1px solid #FCE1AB\"\r\n : \"1px solid #FFCCC7\",\r\n borderRadius: \"2px\",\r\n }}\r\n defaultActiveKey={[\"1\"]}\r\n >\r\n <Collapse.Panel\r\n key=\"1\"\r\n header={\r\n <div>\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? (\r\n <ExclamationCircleOutlined />\r\n ) : (\r\n <CloseCircleOutlined />\r\n )}\r\n {alert_msg_map[requestStatus]}\r\n </span>\r\n </div>\r\n }\r\n extra={\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? \"查看\" : \"查看错误\"}\r\n </span>\r\n }\r\n >\r\n <div\r\n style={{\r\n background:\r\n requestStatus == \"warning\" ? \"#FFFDF6\" : \"#fff9f9\",\r\n }}\r\n className=\"content-error__msg\"\r\n >\r\n {this.renderErrorContent(\r\n requestStatus == \"warning\" ? warnList : errorList\r\n )}\r\n </div>\r\n </Collapse.Panel>\r\n </Collapse>\r\n );\r\n }\r\n }\r\n }\r\n resetData() {\r\n this.setState({\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n });\r\n }\r\n render() {\r\n const { file, status, currentStep, requestStatus } = this.state;\r\n const {\r\n downLoadTemplet,\r\n downTempletUrl,\r\n checkData,\r\n checkUrl,\r\n requestConfig,\r\n } = this.props;\r\n const footer = (\r\n <div className=\"footer\">\r\n <NSCButton\r\n onClick={() => {\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n }}\r\n >\r\n 取消\r\n </NSCButton>\r\n\r\n {status == 1 && this.state.file && (\r\n <NSCButton\r\n onClick={() => {\r\n this.setState({\r\n status: 2,\r\n currentStep: 1,\r\n });\r\n if (checkData) {\r\n nscFile\r\n .importFile({\r\n url: checkUrl,\r\n file: file,\r\n data: requestConfig?.data || {},\r\n })\r\n .then((res: any) => {\r\n if (res.code == 200) {\r\n if (\r\n res.data.errorCount == 0 &&\r\n res.data.duplicateCount == 0\r\n ) {\r\n this.setState({\r\n currentStep: 2,\r\n requestStatus: \"success\",\r\n });\r\n this.importData(file, false);\r\n return;\r\n }\r\n if (res.data.errorCount > 0) {\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errorList,\r\n });\r\n return;\r\n }\r\n if (res.data.duplicateCount > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.duplicateList,\r\n });\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n }}\r\n disabled={file ? false : true}\r\n icon={<UploadOutlined />}\r\n style={{ marginLeft: 20 }}\r\n >\r\n 开始上传\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, false);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 不覆盖数据\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, true);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 覆盖数据\r\n </NSCButton>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n {this.props.children ? (\r\n this.props.children\r\n ) : (\r\n <NSCButton\r\n type=\"primary\"\r\n onClick={() => {\r\n this.modalRef.current?.show();\r\n }}\r\n >\r\n 数据导入\r\n </NSCButton>\r\n )}\r\n\r\n <NscModal\r\n title=\"数据导入\"\r\n width={800}\r\n wrapClassName={\"import-modal\"}\r\n ref={this.modalRef}\r\n footer={footer}\r\n onCancel={() => {\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n }}\r\n >\r\n <div className=\"content\">\r\n {status == 1 ? (\r\n <div>\r\n <div style={{ display: \"flex\" }}>\r\n <NscUpload\r\n beforeUpload={(file) => {\r\n this.setState({\r\n file,\r\n });\r\n return false;\r\n }}\r\n allowFileSuffix={[\"xls\", \"xlxs\"]}\r\n accept={\".xls,.xlxs\"}\r\n showUploadList={false}\r\n >\r\n <NSCButton\r\n type={\"primary\"}\r\n disabled={file ? true : false}\r\n icon={<FolderOutlined />}\r\n >\r\n 选择文件\r\n </NSCButton>\r\n </NscUpload>\r\n\r\n {downLoadTemplet && (\r\n <NscDownLoad url={downTempletUrl}>\r\n <NSCButton type=\"primary\" style={{ marginLeft: 20 }}>\r\n 模板下载\r\n </NSCButton>\r\n </NscDownLoad>\r\n )}\r\n </div>\r\n <div className=\"upload-tip\">\r\n <div className=\"upload-tip-left\">\r\n <ExclamationCircleOutlined />\r\n </div>\r\n <div className=\"upload-tip-content\">\r\n <div>\r\n 1、支持Excel 2007及以上版本,且每次只能上传一个文件;\r\n </div>\r\n <div>2、导入前先下载模板,并根据模板填写数据;</div>\r\n </div>\r\n </div>\r\n\r\n {file && (\r\n <div className=\"upload-file\">\r\n <div className=\"file-icon\">\r\n <FileIcon type=\"excel\" />\r\n </div>\r\n <div className=\"file-content\">\r\n <div className=\"file-title\">{file.name}</div>\r\n <div className=\"file-desc\">\r\n <span>\r\n 文件大小:{this.fileSizeKb(file.size) + \"KB\"}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div>\r\n <Steps\r\n current={currentStep}\r\n items={[\r\n {\r\n title: \"数据分析\",\r\n },\r\n {\r\n title: \"数据插入\",\r\n },\r\n ]}\r\n />\r\n <div className={\"result-content\"}>{this.renderResult()}</div>\r\n </div>\r\n )}\r\n </div>\r\n </NscModal>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default NscImportData;\r\n"],"mappings":"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"}