nsc-react-component 4.1.13 → 4.1.14
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.
|
@@ -47,6 +47,7 @@ declare class FormPage extends PureComponent<FormPageProps, any> {
|
|
|
47
47
|
hideForm(): void;
|
|
48
48
|
showForm(orgValue?: any, editorflag?: string, callBack?: any): void;
|
|
49
49
|
setLoading(loading: boolean): void;
|
|
50
|
+
setEditType(type: any): void;
|
|
50
51
|
getFormValue(): any;
|
|
51
52
|
convertValue(value: any, type: any): any;
|
|
52
53
|
setFormValue(value: any, type: any): void;
|
|
@@ -45,7 +45,6 @@ class FormPage extends PureComponent {
|
|
|
45
45
|
show(orgValue) {
|
|
46
46
|
let editorflag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "add";
|
|
47
47
|
let callBack = arguments.length > 2 ? arguments[2] : undefined;
|
|
48
|
-
console.log('editorflag', editorflag);
|
|
49
48
|
let label = "新增";
|
|
50
49
|
if (orgValue && editorflag == "editor") {
|
|
51
50
|
label = "编辑";
|
|
@@ -113,6 +112,11 @@ class FormPage extends PureComponent {
|
|
|
113
112
|
loading: loading
|
|
114
113
|
});
|
|
115
114
|
}
|
|
115
|
+
setEditType(type) {
|
|
116
|
+
this.setState({
|
|
117
|
+
label: type
|
|
118
|
+
});
|
|
119
|
+
}
|
|
116
120
|
getFormValue() {
|
|
117
121
|
var _this$formRef$current5;
|
|
118
122
|
const {
|
|
@@ -227,7 +231,7 @@ class FormPage extends PureComponent {
|
|
|
227
231
|
addParams,
|
|
228
232
|
editorParams
|
|
229
233
|
} = requestObject;
|
|
230
|
-
let url =
|
|
234
|
+
let url = submitUrl;
|
|
231
235
|
let params = {};
|
|
232
236
|
if (label == "新增") {
|
|
233
237
|
url = addUrl ? addUrl : submitUrl;
|
|
@@ -299,7 +303,7 @@ class FormPage extends PureComponent {
|
|
|
299
303
|
return fileList;
|
|
300
304
|
}
|
|
301
305
|
onSubmit() {
|
|
302
|
-
var _this$formRef$current8
|
|
306
|
+
var _this$formRef$current8;
|
|
303
307
|
const {
|
|
304
308
|
onSubmit
|
|
305
309
|
} = this.props;
|
|
@@ -309,9 +313,9 @@ class FormPage extends PureComponent {
|
|
|
309
313
|
dictNames,
|
|
310
314
|
fileList
|
|
311
315
|
} = this.state;
|
|
312
|
-
|
|
316
|
+
console.log("label", label);
|
|
313
317
|
let valid = this.valid;
|
|
314
|
-
(_this$formRef$
|
|
318
|
+
(_this$formRef$current8 = this.formRef.current) === null || _this$formRef$current8 === void 0 || _this$formRef$current8.validateFields().then(() => {
|
|
315
319
|
let data = this.getFormValue();
|
|
316
320
|
// if (!this.submitFlag) {
|
|
317
321
|
// message.error('请等待所有文件上传完成!')
|
|
@@ -593,4 +597,4 @@ class FormPage extends PureComponent {
|
|
|
593
597
|
}
|
|
594
598
|
}
|
|
595
599
|
export default FormPage;
|
|
596
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJ3aWR0aCIsInByb3BzIiwiZm9vdGVyV2lkdGgiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJjb25zb2xlIiwibG9nIiwic2V0U3RhdGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQiLCJjb252ZXJ0VmFsdWUiLCJmb3JtUmVmIiwiY3VycmVudCIsInNob3dGb3JtIiwiYWZ0ZXJSZW5kZXIiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQyIiwiZGVmYXVsdFZhbHVlIiwiaGlkZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJvbkhpZGVGb3JtIiwiaGlkZUZvcm0iLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ0Iiwic2V0TG9hZGluZyIsImdldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDUiLCJzdGF0ZSIsImZvcm1WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiZGF0YSIsIl9vYmplY3RTcHJlYWQiLCJmaWxlRm9ybWF0IiwibmV3RmlsZUxpc3QiLCJtYXAiLCJpdGVtIiwiZ2V0RmlsZUxpc3QiLCJzdWJtaXRGbGFnIiwiZXJyb3IiLCJkYXRlVmFsdWVGb3JtYXQiLCJrZXkiLCJvbGRkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwicmFuZ2VyRGF0ZSIsImRhdGVGb3JtYXQiLCJlIiwiaWQiLCJ0eXBlIiwidmFsdWVzIiwiY2xvbmVEZWVwIiwidmFsdWUxIiwidmFsdWUyIiwic2V0Rm9ybVZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NiIsIm5ld1ZhbHVlIiwic2V0RmllbGRzVmFsdWUiLCJkb1N1Ym1pdCIsImZvcm1kYXRhIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NyIsInN1Ym1pdFVybCIsInN1Ym1pdFBhcmFtcyIsInJlcXVlc3RPYmplY3QiLCJyZXF1ZXN0Q29uZmlnIiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIiwidXJsIiwicGFyYW1zIiwiVXRpbHMiLCJmdW5jIiwiRnVuY3Rpb24iLCJjb252ZXJQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5IiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwiZXZlbnRPcHRpb24iLCJmdW5jcyIsInJlZnMiLCJyZWZMaXN0IiwidmFsdWVTdHIiLCJzZWxmRnVuYyIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJzcGxpdCIsImFsbG93Q2hhcnMiLCJwbGFjZWhvbGRlciIsImNvbmNhdCIsImJpbmQiLCJkYXRhVHlwZSIsImRpc2FibGVkIiwicnVsZXMiLCJyZXF1aXJlZCIsIml0ZW1SZWYiLCJfaXRlbSRwcm9wczIiLCJzcGFuIiwic3R5bGUiLCJkaXNwbGF5IiwiSXRlbSIsImNvbXBvbmVudE5hbWUiLCJub1N0eWxlIiwiZm9ybVJlbmRlciIsInJlZiIsIl9pdGVtJHByb3BzMyIsIl9pdGVtJHByb3BzNCIsIl9pdGVtJHByb3BzNSIsIl9leHRlbmRzIiwib25MaXN0Q2hhbmdlIiwibGlzdCIsInNob3dVcGxvYWRMaXN0Iiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dSZW1vdmVJY29uIiwiY2hpbGRyZW4iLCJyZW5kZXIiLCJmb290ZXIiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJvbk9rIiwib25DYW5jZWwiLCJva0J1dHRvblByb3BzIiwiY2VudGVyZWQiLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJuZXdGb3Jtc09iaiIsImZvcm1Hcm91cHMiLCJvdGhlckdydXBzIiwiZ3JvdXBOYW1lIiwiaW5kZXhPZiIsImdyb3VwRm9ybXMiLCJmb3JtIiwic2VsZkJ1dHRvbnMiLCJzaG93TW9kZWwiLCJmb3JtVHlwZSIsImxhYmVsQ29sIiwiZmxleCIsIndyYXBwZXJDb2wiLCJvblZhbHVlc0NoYW5nZSIsImNoYW5nZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImtleXMiLCJmb290ZXJDbGFzc05hbWUiLCJjYW5jZWxCdXR0b25Qcm9wcyIsIm9uQ2xpY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Zvcm1QYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBDb2wgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Db2xcIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgbG9kYXNoIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IFVwbG9hZCBmcm9tIFwiLi4vLi4vYmFzZS91cGxvYWRcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcInNyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVBhZ2VQcm9wcyB7XHJcbiAgZm9ybXM/OiBBcnJheTxhbnk+OyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgZm9vdGVyQ2xhc3NOYW1lPzogYW55O1xyXG4gIG9rQnV0dG9uUHJvcHM/OiBhbnk7XHJcbiAgY2FuY2VsQnV0dG9uUHJvcHM/OiBhbnk7XHJcbiAgZm9vdGVyPzogUmVhY3ROb2RlIHwgYm9vbGVhbjtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvbkZvcm1DaGFuZ2U/OiAodmFsdWU/OiBhbnksIGFsbFZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIHN1Ym1pdFBhcmFtcz86IGFueTsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcHJvcHM/OiBJRm9ybVByb3BzO1xyXG4gIHJlcXVlc3RPYmplY3Q/OiB7XHJcbiAgICBhZGRVcmw/OiBzdHJpbmc7XHJcbiAgICBlZGl0b3JVcmw/OiBzdHJpbmc7XHJcbiAgICBhZGRQYXJhbXM/OiBhbnk7XHJcbiAgICBlZGl0b3JQYXJhbXM/OiBhbnk7XHJcbiAgfTtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIGZvb3RlcldpZHRoPzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55LFxyXG4gICAgd2lkdGg6IHRoaXMucHJvcHMuZm9vdGVyV2lkdGggfHwgZmFsc2UsXHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZmlsZUZvcm1hdCA9IFtdIGFzIGFueTtcclxuICByYW5nZXJEYXRlID0ge30gYXMgYW55O1xyXG4gIHJlZkxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgc3VibWl0RmxhZyA9IHRydWU7XHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdlZGl0b3JmbGFnJyxlZGl0b3JmbGFnKVxyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUob3JnVmFsdWUsIGxhYmVsKTtcclxuICAgICAgICAgIC8v5aSE55CG5paH5Lu25pWw5o2uXHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWUsIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUsIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNob3dGb3JtKG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvdyhvcmdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gIH1cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBsb2FkaW5nIH0pO1xyXG4gIH1cclxuICBnZXRGb3JtVmFsdWUoKSB7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IGRhdGEgPSB7IC4uLmZvcm1WYWx1ZSwgLi4uZGljdE5hbWVzIH07XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG5ld0ZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGVMaXN0W2l0ZW1dLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghZm9ybVZhbHVlW2l0ZW1dKSB7XHJcbiAgICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChmaWxlTGlzdFtpdGVtXSB8fCBbXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4ubmV3RmlsZUxpc3QgfTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXCLor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVswXV0gPSBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVsxXV0gPSBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBkYXlqcyhvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcbiAgY29udmVydFZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBsZXQgdmFsdWVzID0gbG9kYXNoLmNsb25lRGVlcCh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNbaXRlbV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEgJiYgQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSB0aGlzLmdldEZpbGVMaXN0KG9sZGRhdGEgfHwgW10sIHR5cGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtpdGVtXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogZmlsZUxpc3QgfSk7XHJcbiAgICB9XHJcbiAgICAvL+WkhOeQhuaXpeacn+agvOW8j+aVsOaNrlxyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gW1xyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMF0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IGRheWpzKG9sZGRhdGEsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTEgPSB2YWx1ZXNbdGhpcy5yYW5nZXJEYXRlW2tleV1bMF1dO1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUyID0gdmFsdWVzW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzFdXTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJ2YWx1ZTFcIiwgdmFsdWUxKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJ2YWx1ZTJcIiwgdmFsdWUyKTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlMSAmJiB2YWx1ZTIpIHtcclxuICAgICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICAgIGRheWpzKHZhbHVlMSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgZGF5anModmFsdWUyLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlcztcclxuICB9XHJcbiAgc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGZvcm1kYXRhLCBsYWJlbCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdWJtaXRVcmwsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBjYWxsQmFjayxcclxuICAgICAgcmVxdWVzdE9iamVjdCA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWRkVXJsLCBlZGl0b3JVcmwsIGFkZFBhcmFtcywgZWRpdG9yUGFyYW1zIH0gPSByZXF1ZXN0T2JqZWN0O1xyXG4gICAgbGV0IHVybCA9IFwiXCI7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBhZGRQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gYWRkUGFyYW1zID8gYWRkUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIGVkaXRvclBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBlZGl0b3JQYXJhbXMgPyBlZGl0b3JQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLphY3nva5VcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBkYXRhOiB7IC4uLmZvcm1kYXRhLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSBcIuaWsOWinlwiKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9IFwiZG9uZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFiZWwgIT09IFwi5p+l55yLXCIgJiYgaXRlbS5zdGF0dXMgIT09IFwiZG9uZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3QgeyBvblN1Ym1pdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcclxuICAgICAgPy52YWxpZGF0ZUZpZWxkcyh2YWxpZClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRGb3JtVmFsdWUoKTtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgIC8vICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7fSk7XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKHsgdHlwZSwgZGljdE5hbWUgfSwgcHJvcHMsIHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSkge1xyXG4gICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgIGlmIChkaWN0TmFtZSkge1xyXG4gICAgICAgIGNvbnN0IHsgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGNvbnN0IG5ld05hbWVzID0geyAuLi5kaWN0TmFtZXMgfSBhcyBhbnk7XHJcbiAgICAgICAgbmV3TmFtZXNbZGljdE5hbWVdID0gdmFsdWVPcHRpb24ubGFiZWw7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkaWN0TmFtZXM6IG5ld05hbWVzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcclxuICAgICAgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7XHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICBmb3JtUmVmOiB0aGlzLmZvcm1SZWYsXHJcbiAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB8fCB7fSxcclxuICAgICAgICAgIHJlZnM6IHRoaXMucmVmTGlzdCxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gXCJTZWxlY3RcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVPcHRpb24gPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcIkRhdGVQaWNrZXJcIiB8fCB0eXBlID09IFwiUmFuZ2VQaWNrZXJcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVTdHIgPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZkZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvblwiLCBcIlV0aWxzXCIsIHByb3BzLm9uQ2hhbmdlKTtcclxuICAgICAgICBzZWxmRnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkge1xyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgICBpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJSYW5nZVBpY2tlclwiICYmIGl0ZW0ubmFtZS5zcGxpdChcIixcIikubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJhbmdlckRhdGVbaXRlbS5uYW1lXSA9IGl0ZW0ubmFtZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBkaWN0TmFtZTogaXRlbS5kaWN0TmFtZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTsgLy9mb3JtLml0ZW0g5L2/55SoaW5wdXTnu4Tku7ZhbGxvd0NoYXJz5b+F6aG76buY6K6kdHJ1ZSzkuI3nhLbovpPlhaXnibnmrorlrZfnrKbmi7/liLDnmoTlgLzkuI3lr7lcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZGF0YVR5cGU7XHJcbiAgICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHx8IGl0ZW0ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGl0ZW1SZWY6IGFueSA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgICAgICAgICB0aGlzLnJlZkxpc3RbaXRlbS5uYW1lXSA9IGl0ZW1SZWY7XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlICE9PSBcIlVwbG9hZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgbm9TdHlsZT17aXRlbS5ub1N0eWxlIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5mb3JtUmVuZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpdGVtLmZvcm1SZW5kZXIocHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IGl0ZW1SZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUZvcm1hdC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdFtpdGVtLm5hbWVdIHx8IFtdfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q6IHsgLi4uZmlsZUxpc3QsIFtpdGVtLm5hbWVdOiBsaXN0IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd1JlbW92ZUljb246IGxhYmVsICE9PSBcIuafpeeci1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtUmVmfVxyXG4gICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgPyBpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiA8QnV0dG9uPuS4iuS8oOaWh+S7tjwvQnV0dG9uPn1cclxuICAgICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9Sb3c+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvcm1zID0gW10sIHByb3BzID0ge30sIGZvb3RlciA9IHRydWUsIGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsb2FkaW5nLCBsYWJlbCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Hcm91cHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtcyA9IFtdIGFzIGFueTtcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW2l0ZW1dID0gZ3JvdXBGb3JtcztcclxuICAgICAgfSk7XHJcbiAgICAgIG5ld0Zvcm1zT2JqW1wibm9Hcm91cE5hbWVcIl0gPSBvdGhlckdydXBzO1xyXG4gICAgfVxyXG4gICAgLy/oh6rlrprkuYnmjInpkq5cclxuICAgIGxldCBzZWxmQnV0dG9ucyA9IFtdIGFzIGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIHR5cGVvZiBpdGVtID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSBcIm9iamVjdFwiICYmIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPEZvcm1cclxuICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICBzaG93TW9kZWw9e3RoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IChcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5mb3JtVHlwZSA/IChcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRm9ybShmb3JtcywgbGFiZWwpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhuZXdGb3Jtc09iaikubWFwKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7a2V5ICE9IFwibm9Hcm91cE5hbWVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZvcm0obmV3Rm9ybXNPYmpba2V5XSwgbGFiZWwpfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciA9PSB0cnVlICYmIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgXCJuc2MtZm9ybS1wYWdlLWZvb3RlclwiLFxyXG4gICAgICAgICAgICAgICAgW3RoaXMuc3RhdGUud2lkdGggPyBcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLXdpZHRoXCIgOiBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZm9vdGVyQ2xhc3NOYW1lXHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLmNhbmNlbEJ1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNhbmNlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYW5jZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDlj5bmtohcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5va0J1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgbG9hZGluZz17dGhpcy5zdGF0ZS5sb2FkaW5nfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0blwifVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wibnNjLWZvcm0tcGFnZS1mb290ZXItYnRuXCJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBQzlDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU8scUJBQXFCO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQXlCNUIsTUFBTUMsUUFBUSxTQUFTWixhQUFhLENBQXFCO0VBQUFhLFlBQUE7SUFBQSxTQUFBQyxTQUFBO0lBQUFDLGVBQUEsK0JBQzdDaEIsS0FBSyxDQUFDaUIsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxnQkFDeEI7TUFDTkUsT0FBTyxFQUFFLEtBQUs7TUFDZEMsS0FBSyxFQUFFLEVBQUU7TUFDVEMsVUFBVSxFQUFFLElBQUk7TUFDaEJDLEtBQUssRUFBRSxDQUFDLENBQVE7TUFDaEJDLFNBQVMsRUFBRSxDQUFDLENBQVE7TUFDcEJDLFFBQVEsRUFBRSxDQUFDLENBQVE7TUFDbkJDLEtBQUssRUFBRSxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsV0FBVyxJQUFJO0lBQ25DLENBQUM7SUFBQVYsZUFBQSxnQkFDWSxFQUFFO0lBQUFBLGVBQUEsMEJBQ0csQ0FBQyxDQUFDO0lBQUFBLGVBQUEscUJB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
|
|
600
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJ3aWR0aCIsInByb3BzIiwiZm9vdGVyV2lkdGgiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImNvbnZlcnRWYWx1ZSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJkZWZhdWx0VmFsdWUiLCJoaWRlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MyIsIm9uSGlkZUZvcm0iLCJoaWRlRm9ybSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDQiLCJzZXRMb2FkaW5nIiwic2V0RWRpdFR5cGUiLCJ0eXBlIiwiZ2V0Rm9ybVZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NSIsInN0YXRlIiwiZm9ybVZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJkYXRhIiwiX29iamVjdFNwcmVhZCIsImZpbGVGb3JtYXQiLCJuZXdGaWxlTGlzdCIsIm1hcCIsIml0ZW0iLCJnZXRGaWxlTGlzdCIsInN1Ym1pdEZsYWciLCJlcnJvciIsImRhdGVWYWx1ZUZvcm1hdCIsImtleSIsIm9sZGRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXQiLCJyYW5nZXJEYXRlIiwiZGF0ZUZvcm1hdCIsImUiLCJpZCIsInZhbHVlcyIsImNsb25lRGVlcCIsInZhbHVlMSIsInZhbHVlMiIsImNvbnNvbGUiLCJsb2ciLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdE9iamVjdCIsInJlcXVlc3RDb25maWciLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJ1cmwiLCJwYXJhbXMiLCJVdGlscyIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwib25TdWJtaXQiLCJub1VuZGVmaW5lZCIsInJlcyIsImNvZGUiLCJzdWNjZXNzIiwib2JqIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJzdGF0dXMiLCJwdXNoIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50OCIsInZhbGlkIiwidmFsaWRhdGVGaWVsZHMiLCJ0aGVuIiwiY2F0Y2giLCJlcnJvckluZm8iLCJ2YWx1ZUNoYW5nZSIsIl9yZWYiLCJ2YWx1ZU9wdGlvbiIsImRpY3ROYW1lIiwibmV3TmFtZXMiLCJvbkNoYW5nZSIsImV2ZW50T3B0aW9uIiwiZnVuY3MiLCJyZWZzIiwicmVmTGlzdCIsInZhbHVlU3RyIiwic2VsZkZ1bmMiLCJyZW5kZXJGb3JtIiwiZm9ybXMiLCJuZXdWYWxpZCIsImNyZWF0ZUVsZW1lbnQiLCJndXR0ZXIiLCJpbmRleCIsIl9pdGVtJHByb3BzIiwiaXRlbVByb3BzIiwidmFsdWVGb3JtYXQiLCJuYW1lIiwic3BsaXQiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwiZGF0YVR5cGUiLCJkaXNhYmxlZCIsInJ1bGVzIiwicmVxdWlyZWQiLCJpdGVtUmVmIiwiX2l0ZW0kcHJvcHMyIiwic3BhbiIsInN0eWxlIiwiZGlzcGxheSIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwibm9TdHlsZSIsImZvcm1SZW5kZXIiLCJyZWYiLCJfaXRlbSRwcm9wczMiLCJfaXRlbSRwcm9wczQiLCJfaXRlbSRwcm9wczUiLCJfZXh0ZW5kcyIsIm9uTGlzdENoYW5nZSIsImxpc3QiLCJzaG93VXBsb2FkTGlzdCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UmVtb3ZlSWNvbiIsImNoaWxkcmVuIiwicmVuZGVyIiwiZm9vdGVyIiwibW9kYWxQcm9wcyIsInRpdGxlIiwib25PayIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwiZHJhd2VyUHJvcHMiLCJvbkNsb3NlIiwibmV3Rm9ybXNPYmoiLCJmb3JtR3JvdXBzIiwib3RoZXJHcnVwcyIsImdyb3VwTmFtZSIsImluZGV4T2YiLCJncm91cEZvcm1zIiwiZm9ybSIsInNlbGZCdXR0b25zIiwic2hvd01vZGVsIiwiZm9ybVR5cGUiLCJsYWJlbENvbCIsImZsZXgiLCJ3cmFwcGVyQ29sIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1QYWdlUHJvcHMge1xyXG4gIGZvcm1zPzogQXJyYXk8YW55PjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGZvb3RlckNsYXNzTmFtZT86IGFueTtcclxuICBva0J1dHRvblByb3BzPzogYW55O1xyXG4gIGNhbmNlbEJ1dHRvblByb3BzPzogYW55O1xyXG4gIGZvb3Rlcj86IFJlYWN0Tm9kZSB8IGJvb2xlYW47XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25Gb3JtQ2hhbmdlPzogKHZhbHVlPzogYW55LCBhbGxWYWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBzdWJtaXRQYXJhbXM/OiBhbnk7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHByb3BzPzogSUZvcm1Qcm9wcztcclxuICByZXF1ZXN0T2JqZWN0Pzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nO1xyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nO1xyXG4gICAgYWRkUGFyYW1zPzogYW55O1xyXG4gICAgZWRpdG9yUGFyYW1zPzogYW55O1xyXG4gIH07XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBmb290ZXJXaWR0aD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIEZvcm1QYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxGb3JtUGFnZVByb3BzLCBhbnk+IHtcclxuICBmb3JtUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgbGFiZWw6IFwiXCIsXHJcbiAgICBlZGl0b3JGbGFnOiB0cnVlLFxyXG4gICAgdmFsdWU6IHt9IGFzIGFueSxcclxuICAgIGRpY3ROYW1lczoge30gYXMgYW55LFxyXG4gICAgZmlsZUxpc3Q6IHt9IGFzIGFueSxcclxuICAgIHdpZHRoOiB0aGlzLnByb3BzLmZvb3RlcldpZHRoIHx8IGZhbHNlLFxyXG4gIH07XHJcbiAgdmFsaWQ6IGFueSA9IFtdO1xyXG4gIGRhdGVWYWx1ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGZpbGVGb3JtYXQgPSBbXSBhcyBhbnk7XHJcbiAgcmFuZ2VyRGF0ZSA9IHt9IGFzIGFueTtcclxuICByZWZMaXN0ID0ge30gYXMgYW55O1xyXG4gIHN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gIC8v6KGo5Y2V5pi+56S6XHJcbiAgc2hvdyhvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICBsZXQgbGFiZWwgPSBcIuaWsOWinlwiO1xyXG4gICAgaWYgKG9yZ1ZhbHVlICYmIGVkaXRvcmZsYWcgPT0gXCJlZGl0b3JcIikge1xyXG4gICAgICBsYWJlbCA9IFwi57yW6L6RXCI7XHJcbiAgICB9IGVsc2UgaWYgKG9yZ1ZhbHVlICYmIChlZGl0b3JmbGFnID09IFwiZGV0YWlsXCIgfHwgZWRpdG9yZmxhZyA9PSBcInNlYXJjaFwiKSkge1xyXG4gICAgICBsYWJlbCA9IFwi5p+l55yLXCI7XHJcbiAgICB9XHJcbiAgICBpZiAob3JnVmFsdWUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgICB2YWx1ZTogb3JnVmFsdWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZShvcmdWYWx1ZSwgbGFiZWwpO1xyXG4gICAgICAgICAgLy/lpITnkIbmlofku7bmlbDmja5cclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh2YWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgc2hvd0Zvcm0ob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgdGhpcy5zaG93KG9yZ1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjayk7XHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIHNldEVkaXRUeXBlKHR5cGUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBsYWJlbDogdHlwZSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRGb3JtVmFsdWUoKSB7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IGRhdGEgPSB7IC4uLmZvcm1WYWx1ZSwgLi4uZGljdE5hbWVzIH07XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG5ld0ZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGVMaXN0W2l0ZW1dLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghZm9ybVZhbHVlW2l0ZW1dKSB7XHJcbiAgICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChmaWxlTGlzdFtpdGVtXSB8fCBbXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4ubmV3RmlsZUxpc3QgfTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXCLor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVswXV0gPSBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVsxXV0gPSBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBkYXlqcyhvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcbiAgY29udmVydFZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBsZXQgdmFsdWVzID0gbG9kYXNoLmNsb25lRGVlcCh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNbaXRlbV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEgJiYgQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSB0aGlzLmdldEZpbGVMaXN0KG9sZGRhdGEgfHwgW10sIHR5cGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtpdGVtXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogZmlsZUxpc3QgfSk7XHJcbiAgICB9XHJcbiAgICAvL+WkhOeQhuaXpeacn+agvOW8j+aVsOaNrlxyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gW1xyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMF0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IGRheWpzKG9sZGRhdGEsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTEgPSB2YWx1ZXNbdGhpcy5yYW5nZXJEYXRlW2tleV1bMF1dO1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUyID0gdmFsdWVzW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzFdXTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJ2YWx1ZTFcIiwgdmFsdWUxKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJ2YWx1ZTJcIiwgdmFsdWUyKTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlMSAmJiB2YWx1ZTIpIHtcclxuICAgICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICAgIGRheWpzKHZhbHVlMSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgZGF5anModmFsdWUyLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlcztcclxuICB9XHJcbiAgc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGZvcm1kYXRhLCBsYWJlbCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdWJtaXRVcmwsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBjYWxsQmFjayxcclxuICAgICAgcmVxdWVzdE9iamVjdCA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWRkVXJsLCBlZGl0b3JVcmwsIGFkZFBhcmFtcywgZWRpdG9yUGFyYW1zIH0gPSByZXF1ZXN0T2JqZWN0O1xyXG4gICAgbGV0IHVybCA9IHN1Ym1pdFVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgaWYgKGxhYmVsID09IFwi5paw5aKeXCIpIHtcclxuICAgICAgdXJsID0gYWRkVXJsID8gYWRkVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoYWRkUGFyYW1zICYmIHR5cGVvZiBhZGRQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIGFkZFBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBhZGRQYXJhbXMgPyBhZGRQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICB1cmwgPSBlZGl0b3JVcmwgPyBlZGl0b3JVcmwgOiBzdWJtaXRVcmw7XHJcbiAgICAgIGlmIChlZGl0b3JQYXJhbXMgJiYgdHlwZW9mIGVkaXRvclBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgZWRpdG9yUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgcGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IGVkaXRvclBhcmFtcyA/IGVkaXRvclBhcmFtcyA6IHN1Ym1pdFBhcmFtcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIumFjee9rlVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBkYXRhID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgIHVybCxcclxuICAgICAge1xyXG4gICAgICAgIGRhdGE6IHsgLi4uZm9ybWRhdGEsIC4uLmRhdGEgfSxcclxuICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIC4uLm90aGVyUGFyYW1zLFxyXG4gICAgICB9LFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKGxhYmVsICsgXCLmiJDlip9cIik7XHJcbiAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGaWxlTGlzdChkYXRhLCBsYWJlbCA9IFwi5paw5aKeXCIpIHtcclxuICAgIHRoaXMuc3VibWl0RmxhZyA9IHRydWU7XHJcbiAgICBsZXQgZmlsZUxpc3QgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgZmlsZUlkOiBpdGVtLmZpbGVJZCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICBvYmouc3RhdHVzID0gXCJkb25lXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiBpdGVtLnN0YXR1cyAhPT0gXCJkb25lXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3VibWl0RmxhZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlTGlzdC5wdXNoKG9iaik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbGVMaXN0O1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7IG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zb2xlLmxvZyhcImxhYmVsXCIsIGxhYmVsKTtcclxuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudFxyXG4gICAgICA/LnZhbGlkYXRlRmllbGRzKClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRGb3JtVmFsdWUoKTtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgIC8vICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7fSk7XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKHsgdHlwZSwgZGljdE5hbWUgfSwgcHJvcHMsIHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSkge1xyXG4gICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgIGlmIChkaWN0TmFtZSkge1xyXG4gICAgICAgIGNvbnN0IHsgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGNvbnN0IG5ld05hbWVzID0geyAuLi5kaWN0TmFtZXMgfSBhcyBhbnk7XHJcbiAgICAgICAgbmV3TmFtZXNbZGljdE5hbWVdID0gdmFsdWVPcHRpb24ubGFiZWw7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkaWN0TmFtZXM6IG5ld05hbWVzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcclxuICAgICAgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7XHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICBmb3JtUmVmOiB0aGlzLmZvcm1SZWYsXHJcbiAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB8fCB7fSxcclxuICAgICAgICAgIHJlZnM6IHRoaXMucmVmTGlzdCxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gXCJTZWxlY3RcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVPcHRpb24gPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcIkRhdGVQaWNrZXJcIiB8fCB0eXBlID09IFwiUmFuZ2VQaWNrZXJcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVTdHIgPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZkZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvblwiLCBcIlV0aWxzXCIsIHByb3BzLm9uQ2hhbmdlKTtcclxuICAgICAgICBzZWxmRnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkge1xyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgICBpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJSYW5nZVBpY2tlclwiICYmIGl0ZW0ubmFtZS5zcGxpdChcIixcIikubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJhbmdlckRhdGVbaXRlbS5uYW1lXSA9IGl0ZW0ubmFtZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBkaWN0TmFtZTogaXRlbS5kaWN0TmFtZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTsgLy9mb3JtLml0ZW0g5L2/55SoaW5wdXTnu4Tku7ZhbGxvd0NoYXJz5b+F6aG76buY6K6kdHJ1ZSzkuI3nhLbovpPlhaXnibnmrorlrZfnrKbmi7/liLDnmoTlgLzkuI3lr7lcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZGF0YVR5cGU7XHJcbiAgICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHx8IGl0ZW0ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGl0ZW1SZWY6IGFueSA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgICAgICAgICB0aGlzLnJlZkxpc3RbaXRlbS5uYW1lXSA9IGl0ZW1SZWY7XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlICE9PSBcIlVwbG9hZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgbm9TdHlsZT17aXRlbS5ub1N0eWxlIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5mb3JtUmVuZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpdGVtLmZvcm1SZW5kZXIocHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IGl0ZW1SZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUZvcm1hdC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdFtpdGVtLm5hbWVdIHx8IFtdfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q6IHsgLi4uZmlsZUxpc3QsIFtpdGVtLm5hbWVdOiBsaXN0IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd1JlbW92ZUljb246IGxhYmVsICE9PSBcIuafpeeci1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtUmVmfVxyXG4gICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgPyBpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiA8QnV0dG9uPuS4iuS8oOaWh+S7tjwvQnV0dG9uPn1cclxuICAgICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9Sb3c+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvcm1zID0gW10sIHByb3BzID0ge30sIGZvb3RlciA9IHRydWUsIGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsb2FkaW5nLCBsYWJlbCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Hcm91cHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtcyA9IFtdIGFzIGFueTtcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW2l0ZW1dID0gZ3JvdXBGb3JtcztcclxuICAgICAgfSk7XHJcbiAgICAgIG5ld0Zvcm1zT2JqW1wibm9Hcm91cE5hbWVcIl0gPSBvdGhlckdydXBzO1xyXG4gICAgfVxyXG4gICAgLy/oh6rlrprkuYnmjInpkq5cclxuICAgIGxldCBzZWxmQnV0dG9ucyA9IFtdIGFzIGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIHR5cGVvZiBpdGVtID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSBcIm9iamVjdFwiICYmIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPEZvcm1cclxuICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICBzaG93TW9kZWw9e3RoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IChcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5mb3JtVHlwZSA/IChcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRm9ybShmb3JtcywgbGFiZWwpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhuZXdGb3Jtc09iaikubWFwKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7a2V5ICE9IFwibm9Hcm91cE5hbWVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZvcm0obmV3Rm9ybXNPYmpba2V5XSwgbGFiZWwpfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciA9PSB0cnVlICYmIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgXCJuc2MtZm9ybS1wYWdlLWZvb3RlclwiLFxyXG4gICAgICAgICAgICAgICAgW3RoaXMuc3RhdGUud2lkdGggPyBcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLXdpZHRoXCIgOiBcIlwiXSxcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZm9vdGVyQ2xhc3NOYW1lXHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLmNhbmNlbEJ1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNhbmNlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYW5jZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDlj5bmtohcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5va0J1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KCk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgbG9hZGluZz17dGhpcy5zdGF0ZS5sb2FkaW5nfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0blwifVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wibnNjLWZvcm0tcGFnZS1mb290ZXItYnRuXCJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBQzlDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU8scUJBQXFCO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQXlCNUIsTUFBTUMsUUFBUSxTQUFTWixhQUFhLENBQXFCO0VBQUFhLFlBQUE7SUFBQSxTQUFBQyxTQUFBO0lBQUFDLGVBQUEsK0JBQzdDaEIsS0FBSyxDQUFDaUIsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxnQkFDeEI7TUFDTkUsT0FBTyxFQUFFLEtBQUs7TUFDZEMsS0FBSyxFQUFFLEVBQUU7TUFDVEMsVUFBVSxFQUFFLElBQUk7TUFDaEJDLEtBQUssRUFBRSxDQUFDLENBQVE7TUFDaEJDLFNBQVMsRUFBRSxDQUFDLENBQVE7TUFDcEJDLFFBQVEsRUFBRSxDQUFDLENBQVE7TUFDbkJDLEtBQUssRUFBRSxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsV0FBVyxJQUFJO0lBQ25DLENBQUM7SUFBQVYsZUFBQSxnQkFDWSxFQUFFO0lBQUFBLGVBQUEsMEJBQ0csQ0FBQyxDQUFDO0lBQUFBLGVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","dayjs","lodash","Button","Upload","cls","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","width","props","footerWidth","show","orgValue","editorflag","length","undefined","callBack","console","log","setState","_this$formRef$current","convertValue","formRef","current","showForm","afterRender","_this$formRef$current2","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","data","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","rangerDate","dateFormat","e","id","type","values","cloneDeep","value1","value2","setFormValue","_this$formRef$current6","newValue","setFieldsValue","doSubmit","formdata","_this$formRef$current7","submitUrl","submitParams","requestObject","requestConfig","addUrl","editorUrl","addParams","editorParams","url","params","Utils","func","Function","converParams","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","res","code","success","obj","fileId","fileName","status","push","_this$formRef$current8","_this$formRef$current9","valid","validateFields","then","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","eventOption","funcs","refs","refList","valueStr","selfFunc","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","split","allowChars","placeholder","concat","bind","dataType","disabled","rules","required","itemRef","_item$props2","span","style","display","Item","componentName","noStyle","formRender","ref","_item$props3","_item$props4","_item$props5","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","footer","modalProps","title","onOk","onCancel","okButtonProps","centered","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","selfButtons","showModel","formType","labelCol","flex","wrapperCol","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from \"../../base/upload\";\r\nimport cls from \"classnames\";\r\nimport { IFormProps } from \"src/components/base/form/Form\";\r\nexport interface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n funcs?: any;\r\n props?: IFormProps;\r\n requestObject?: {\r\n addUrl?: string;\r\n editorUrl?: string;\r\n addParams?: any;\r\n editorParams?: any;\r\n };\r\n requestConfig?: any;\r\n footerWidth?: boolean;\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any,\r\n width: this.props.footerWidth || false,\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n rangerDate = {} as any;\r\n refList = {} as any;\r\n submitFlag = true;\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n console.log('editorflag',editorflag)\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && (editorflag == \"detail\" || editorflag == \"search\")) {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n showForm(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n this.show(orgValue, editorflag, callBack);\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n if (!formValue[item]) {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n }\r\n });\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error(\"请等待所有文件上传完成!\");\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n if (this.rangerDate[key]) {\r\n try {\r\n data[this.rangerDate[key][0]] = dayjs(olddata[0]).format(\r\n this.dateFormat[key]\r\n );\r\n data[this.rangerDate[key][1]] = dayjs(olddata[1]).format(\r\n this.dateFormat[key]\r\n );\r\n delete data[key];\r\n } catch (e) {}\r\n }\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = values[item];\r\n if (olddata && Array.isArray(olddata)) {\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n } else {\r\n fileList[item] = [];\r\n }\r\n });\r\n this.setState({ fileList: fileList });\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = values[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n values[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n values[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n } else {\r\n if (this.rangerDate[key]) {\r\n let value1 = values[this.rangerDate[key][0]];\r\n let value2 = values[this.rangerDate[key][1]];\r\n console.log(\"value1\", value1);\r\n console.log(\"value2\", value2);\r\n if (value1 && value2) {\r\n values[key] = [\r\n dayjs(value1, this.dateFormat[key]),\r\n dayjs(value2, this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return values;\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const {\r\n submitUrl,\r\n submitParams = {},\r\n callBack,\r\n requestObject = {},\r\n requestConfig = {},\r\n } = this.props;\r\n const { addUrl, editorUrl, addParams, editorParams } = requestObject;\r\n let url = \"\";\r\n let params: any = {};\r\n if (label == \"新增\") {\r\n url = addUrl ? addUrl : submitUrl;\r\n if (addParams && typeof addParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", addParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = addParams ? addParams : submitParams;\r\n }\r\n } else if (label == \"编辑\") {\r\n url = editorUrl ? editorUrl : submitUrl;\r\n if (editorParams && typeof editorParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", editorParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = editorParams ? editorParams : submitParams;\r\n }\r\n }\r\n if (!url) {\r\n console.error(\"配置Url不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = params;\r\n this.formRef.current?.onSubmit(\r\n url,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...requestConfig,\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n this.hide(true);\r\n callBack && callBack();\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = \"新增\") {\r\n this.submitFlag = true;\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == \"查看\") {\r\n obj.status = \"done\";\r\n }\r\n if (label !== \"查看\" && item.status !== \"done\") {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n }\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields(valid)\r\n .then(() => {\r\n let data = this.getFormValue();\r\n // if (!this.submitFlag) {\r\n // message.error('请等待所有文件上传完成!')\r\n // return;\r\n // }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => {});\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n if (typeof props.onChange == \"function\") {\r\n props.onChange(value, valueOption, data);\r\n } else if (typeof props.onChange == \"string\") {\r\n const eventOption = {\r\n value,\r\n data,\r\n formRef: this.formRef,\r\n funcs: this.props.funcs || {},\r\n refs: this.refList,\r\n } as any;\r\n const Utils = this.props.Utils || {};\r\n if (type == \"Select\") {\r\n eventOption.valueOption = valueOption;\r\n eventOption.data = data;\r\n } else if (type == \"DatePicker\" || type == \"RangePicker\") {\r\n eventOption.valueStr = valueOption;\r\n }\r\n const selfFunc = new Function(\"eventOption\", \"Utils\", props.onChange);\r\n selfFunc(eventOption, Utils);\r\n }\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return (\r\n <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n if (item.type == \"RangePicker\" && item.name.split(\",\").length > 1) {\r\n this.rangerDate[item.name] = item.name.split(\",\");\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true; //form.item 使用input组件allowChars必须默认true,不然输入特殊字符拿到的值不对\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.dataType;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = \"\";\r\n }\r\n if ((item.rules && item.rules.length > 0) || item.required === true) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n const itemRef: any = React.createRef<any>();\r\n this.refList[item.name] = itemRef;\r\n if (item.type !== \"Upload\") {\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n required={item.required}\r\n type={item.props?.type}\r\n noStyle={item.noStyle || false}\r\n >\r\n {item.formRender\r\n ? item.formRender(props)\r\n : getNode(item.type, {\r\n ref: itemRef,\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name);\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n type={item.props?.type}\r\n required={item.required}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state;\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list },\r\n });\r\n }}\r\n showUploadList={{\r\n showDownloadIcon: true,\r\n showRemoveIcon: label !== \"查看\",\r\n }}\r\n ref={itemRef}\r\n {...props}\r\n >\r\n {item.props?.children\r\n ? item.props?.children\r\n : label !== \"查看\" && <Button>上传文件</Button>}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n );\r\n }\r\n render() {\r\n const { forms = [], props = {}, footer = true, children } = this.props;\r\n const { loading, label } = this.state;\r\n let modalProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n } as any;\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = [];\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any;\r\n let otherGrups = [] as any;\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item);\r\n }\r\n });\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any;\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form);\r\n }\r\n });\r\n newFormsObj[item] = groupForms;\r\n });\r\n newFormsObj[\"noGroupName\"] = otherGrups;\r\n }\r\n //自定义按钮\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == \"object\" && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == \"object\" && selfButtons.push(children);\r\n }\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n labelCol={{ flex: \"100px\" }}\r\n wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...props}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? (\r\n this.props.formType ? (\r\n this.renderForm(forms, label)\r\n ) : (\r\n <div className=\"nsc-form-pane\">\r\n {this.renderForm(forms, label)}\r\n </div>\r\n )\r\n ) : (\r\n Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && (\r\n <div className=\"nsc-form-title\">{key}</div>\r\n )}\r\n <div className=\"nsc-form-content\">\r\n {this.renderForm(newFormsObj[key], label)}\r\n </div>\r\n </div>\r\n );\r\n })\r\n )}\r\n {!this.props.formType && footer == true && (\r\n <div\r\n className={cls(\r\n \"nsc-form-page-footer\",\r\n [this.state.width ? \"nsc-form-page-footer-width\" : \"\"],\r\n this.props.footerClassName\r\n )}\r\n >\r\n <Button\r\n {...this.props.cancelButtonProps}\r\n onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return;\r\n }\r\n this.setState({ loading: false });\r\n }}\r\n >\r\n 取消\r\n </Button>\r\n <Button\r\n type=\"primary\"\r\n {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit();\r\n }}\r\n loading={this.state.loading}\r\n className={\"nsc-form-page-footer-btn\"}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return (\r\n <div className={\"nsc-form-page-footer-btn\"} key={index}>\r\n {item}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {!this.props.formType && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","dayjs","lodash","Button","Upload","cls","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","width","props","footerWidth","show","orgValue","editorflag","length","undefined","callBack","setState","_this$formRef$current","convertValue","formRef","current","showForm","afterRender","_this$formRef$current2","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","setEditType","type","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","data","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","rangerDate","dateFormat","e","id","values","cloneDeep","value1","value2","console","log","setFormValue","_this$formRef$current6","newValue","setFieldsValue","doSubmit","formdata","_this$formRef$current7","submitUrl","submitParams","requestObject","requestConfig","addUrl","editorUrl","addParams","editorParams","url","params","Utils","func","Function","converParams","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","res","code","success","obj","fileId","fileName","status","push","_this$formRef$current8","valid","validateFields","then","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","eventOption","funcs","refs","refList","valueStr","selfFunc","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","split","allowChars","placeholder","concat","bind","dataType","disabled","rules","required","itemRef","_item$props2","span","style","display","Item","componentName","noStyle","formRender","ref","_item$props3","_item$props4","_item$props5","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","footer","modalProps","title","onOk","onCancel","okButtonProps","centered","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","selfButtons","showModel","formType","labelCol","flex","wrapperCol","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from \"../../base/upload\";\r\nimport cls from \"classnames\";\r\nimport { IFormProps } from \"src/components/base/form/Form\";\r\nexport interface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n funcs?: any;\r\n props?: IFormProps;\r\n requestObject?: {\r\n addUrl?: string;\r\n editorUrl?: string;\r\n addParams?: any;\r\n editorParams?: any;\r\n };\r\n requestConfig?: any;\r\n footerWidth?: boolean;\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any,\r\n width: this.props.footerWidth || false,\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n rangerDate = {} as any;\r\n refList = {} as any;\r\n submitFlag = true;\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && (editorflag == \"detail\" || editorflag == \"search\")) {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n showForm(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n this.show(orgValue, editorflag, callBack);\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n setEditType(type) {\r\n this.setState({\r\n label: type,\r\n });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n if (!formValue[item]) {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n }\r\n });\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error(\"请等待所有文件上传完成!\");\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n if (this.rangerDate[key]) {\r\n try {\r\n data[this.rangerDate[key][0]] = dayjs(olddata[0]).format(\r\n this.dateFormat[key]\r\n );\r\n data[this.rangerDate[key][1]] = dayjs(olddata[1]).format(\r\n this.dateFormat[key]\r\n );\r\n delete data[key];\r\n } catch (e) {}\r\n }\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = values[item];\r\n if (olddata && Array.isArray(olddata)) {\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n } else {\r\n fileList[item] = [];\r\n }\r\n });\r\n this.setState({ fileList: fileList });\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = values[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n values[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n values[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n } else {\r\n if (this.rangerDate[key]) {\r\n let value1 = values[this.rangerDate[key][0]];\r\n let value2 = values[this.rangerDate[key][1]];\r\n console.log(\"value1\", value1);\r\n console.log(\"value2\", value2);\r\n if (value1 && value2) {\r\n values[key] = [\r\n dayjs(value1, this.dateFormat[key]),\r\n dayjs(value2, this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return values;\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const {\r\n submitUrl,\r\n submitParams = {},\r\n callBack,\r\n requestObject = {},\r\n requestConfig = {},\r\n } = this.props;\r\n const { addUrl, editorUrl, addParams, editorParams } = requestObject;\r\n let url = submitUrl;\r\n let params: any = {};\r\n if (label == \"新增\") {\r\n url = addUrl ? addUrl : submitUrl;\r\n if (addParams && typeof addParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", addParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = addParams ? addParams : submitParams;\r\n }\r\n } else if (label == \"编辑\") {\r\n url = editorUrl ? editorUrl : submitUrl;\r\n if (editorParams && typeof editorParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", editorParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = editorParams ? editorParams : submitParams;\r\n }\r\n }\r\n if (!url) {\r\n console.error(\"配置Url不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = params;\r\n this.formRef.current?.onSubmit(\r\n url,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...requestConfig,\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n this.hide(true);\r\n callBack && callBack();\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = \"新增\") {\r\n this.submitFlag = true;\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == \"查看\") {\r\n obj.status = \"done\";\r\n }\r\n if (label !== \"查看\" && item.status !== \"done\") {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n }\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n console.log(\"label\", label);\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields()\r\n .then(() => {\r\n let data = this.getFormValue();\r\n // if (!this.submitFlag) {\r\n // message.error('请等待所有文件上传完成!')\r\n // return;\r\n // }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => {});\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n if (typeof props.onChange == \"function\") {\r\n props.onChange(value, valueOption, data);\r\n } else if (typeof props.onChange == \"string\") {\r\n const eventOption = {\r\n value,\r\n data,\r\n formRef: this.formRef,\r\n funcs: this.props.funcs || {},\r\n refs: this.refList,\r\n } as any;\r\n const Utils = this.props.Utils || {};\r\n if (type == \"Select\") {\r\n eventOption.valueOption = valueOption;\r\n eventOption.data = data;\r\n } else if (type == \"DatePicker\" || type == \"RangePicker\") {\r\n eventOption.valueStr = valueOption;\r\n }\r\n const selfFunc = new Function(\"eventOption\", \"Utils\", props.onChange);\r\n selfFunc(eventOption, Utils);\r\n }\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return (\r\n <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n if (item.type == \"RangePicker\" && item.name.split(\",\").length > 1) {\r\n this.rangerDate[item.name] = item.name.split(\",\");\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true; //form.item 使用input组件allowChars必须默认true,不然输入特殊字符拿到的值不对\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.dataType;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = \"\";\r\n }\r\n if ((item.rules && item.rules.length > 0) || item.required === true) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n const itemRef: any = React.createRef<any>();\r\n this.refList[item.name] = itemRef;\r\n if (item.type !== \"Upload\") {\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n required={item.required}\r\n type={item.props?.type}\r\n noStyle={item.noStyle || false}\r\n >\r\n {item.formRender\r\n ? item.formRender(props)\r\n : getNode(item.type, {\r\n ref: itemRef,\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name);\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n type={item.props?.type}\r\n required={item.required}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state;\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list },\r\n });\r\n }}\r\n showUploadList={{\r\n showDownloadIcon: true,\r\n showRemoveIcon: label !== \"查看\",\r\n }}\r\n ref={itemRef}\r\n {...props}\r\n >\r\n {item.props?.children\r\n ? item.props?.children\r\n : label !== \"查看\" && <Button>上传文件</Button>}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n );\r\n }\r\n render() {\r\n const { forms = [], props = {}, footer = true, children } = this.props;\r\n const { loading, label } = this.state;\r\n let modalProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n } as any;\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = [];\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any;\r\n let otherGrups = [] as any;\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item);\r\n }\r\n });\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any;\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form);\r\n }\r\n });\r\n newFormsObj[item] = groupForms;\r\n });\r\n newFormsObj[\"noGroupName\"] = otherGrups;\r\n }\r\n //自定义按钮\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == \"object\" && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == \"object\" && selfButtons.push(children);\r\n }\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n labelCol={{ flex: \"100px\" }}\r\n wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...props}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? (\r\n this.props.formType ? (\r\n this.renderForm(forms, label)\r\n ) : (\r\n <div className=\"nsc-form-pane\">\r\n {this.renderForm(forms, label)}\r\n </div>\r\n )\r\n ) : (\r\n Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && (\r\n <div className=\"nsc-form-title\">{key}</div>\r\n )}\r\n <div className=\"nsc-form-content\">\r\n {this.renderForm(newFormsObj[key], label)}\r\n </div>\r\n </div>\r\n );\r\n })\r\n )}\r\n {!this.props.formType && footer == true && (\r\n <div\r\n className={cls(\r\n \"nsc-form-page-footer\",\r\n [this.state.width ? \"nsc-form-page-footer-width\" : \"\"],\r\n this.props.footerClassName\r\n )}\r\n >\r\n <Button\r\n {...this.props.cancelButtonProps}\r\n onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return;\r\n }\r\n this.setState({ loading: false });\r\n }}\r\n >\r\n 取消\r\n </Button>\r\n <Button\r\n type=\"primary\"\r\n {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit();\r\n }}\r\n loading={this.state.loading}\r\n className={\"nsc-form-page-footer-btn\"}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return (\r\n <div className={\"nsc-form-page-footer-btn\"} key={index}>\r\n {item}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {!this.props.formType && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
|