nsc-react-component 4.1.28 → 4.2.1

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.
@@ -58,10 +58,6 @@ class FormPage extends PureComponent {
58
58
  }
59
59
  componentDidMount() {
60
60
  window.addEventListener("message", this.listenMessage);
61
- window.parent.postMessage({
62
- eventType: "getMenuCollsape",
63
- serviceName: "micro-web"
64
- }, window.location.origin);
65
61
  }
66
62
  componentWillUnmount() {
67
63
  window.removeEventListener("message", this.listenMessage);
@@ -504,12 +500,21 @@ class FormPage extends PureComponent {
504
500
  forms = [],
505
501
  props = {},
506
502
  footer = true,
507
- children
503
+ children,
504
+ formType = "page"
508
505
  } = this.props;
509
506
  const {
510
507
  loading,
511
508
  label
512
509
  } = this.state;
510
+ let selfButtons = [];
511
+ if (Array.isArray(children)) {
512
+ children.map(item => {
513
+ typeof item == "object" && selfButtons.push(item);
514
+ });
515
+ } else if (children) {
516
+ typeof children == "object" && selfButtons.push(children);
517
+ }
513
518
  let modalProps = {
514
519
  title: label,
515
520
  onOk: this.onSubmit.bind(this),
@@ -518,13 +523,15 @@ class FormPage extends PureComponent {
518
523
  loading: loading
519
524
  },
520
525
  centered: true,
521
- width: "50vw"
526
+ width: "50vw",
527
+ footerButton: selfButtons
522
528
  };
523
529
  let drawerProps = {
524
530
  title: label,
525
531
  onOk: this.onSubmit.bind(this),
526
532
  onClose: this.hide.bind(this),
527
- width: "50vw"
533
+ width: "50vw",
534
+ footerButton: selfButtons
528
535
  };
529
536
  if (label == "查看") {
530
537
  modalProps.footer = null;
@@ -554,20 +561,14 @@ class FormPage extends PureComponent {
554
561
  });
555
562
  newFormsObj[item] = groupForms;
556
563
  });
557
- newFormsObj["noGroupName"] = otherGrups;
564
+ if (otherGrups.length > 0) {
565
+ newFormsObj["noGroupName"] = otherGrups;
566
+ }
558
567
  }
559
568
  //自定义按钮
560
- let selfButtons = [];
561
- if (Array.isArray(children)) {
562
- children.map(item => {
563
- typeof item == "object" && selfButtons.push(item);
564
- });
565
- } else if (children) {
566
- typeof children == "object" && selfButtons.push(children);
567
- }
568
569
  return /*#__PURE__*/React.createElement(Form, _extends({
569
570
  ref: this.formRef,
570
- showModel: this.props.formType,
571
+ showModel: this.props.formType == "page" ? null : this.props.formType,
571
572
  modalProps: _objectSpread({}, modalProps),
572
573
  drawerProps: _objectSpread({}, drawerProps)
573
574
  // labelCol={{ flex: "100px" }}
@@ -593,7 +594,7 @@ class FormPage extends PureComponent {
593
594
  }, key), /*#__PURE__*/React.createElement("div", {
594
595
  className: "nsc-form-content"
595
596
  }, this.renderForm(newFormsObj[key], label)));
596
- }), !this.props.formType && footer == true && /*#__PURE__*/React.createElement("div", {
597
+ }), formType === "page" && footer == true && /*#__PURE__*/React.createElement("div", {
597
598
  className: cls("nsc-form-page-footer", [this.state.width ? "nsc-form-page-footer-width" : ""], this.props.footerClassName)
598
599
  }, /*#__PURE__*/React.createElement(Button, _extends({}, this.props.cancelButtonProps, {
599
600
  onClick: () => {
@@ -618,8 +619,8 @@ class FormPage extends PureComponent {
618
619
  className: "nsc-form-page-footer-btn",
619
620
  key: index
620
621
  }, item);
621
- })), !this.props.formType && footer !== true && this.props.footer));
622
+ })), formType === "page" && footer !== true && this.props.footer));
622
623
  }
623
624
  }
624
625
  export default FormPage;
625
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZ2V0TG9jYWxTdG9yZSIsImRheWpzIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwiRm9ybVBhZ2UiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImxvYWRpbmciLCJsYWJlbCIsImVkaXRvckZsYWciLCJ2YWx1ZSIsImRpY3ROYW1lcyIsImZpbGVMaXN0Iiwid2lkdGgiLCJlZGl0SWQiLCJldiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJfdGhpcyIsImV2ZW50VHlwZSIsInBheWxvYWQiLCJjbG9zZSIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkTW91bnQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsInBhcmVudCIsInBvc3RNZXNzYWdlIiwic2VydmljZU5hbWUiLCJsb2NhdGlvbiIsIm9yaWdpbiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNob3ciLCJvcmdWYWx1ZSIsImVkaXRvcmZsYWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJjYWxsQmFjayIsImlkIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50IiwiY29udmVydFZhbHVlIiwiZm9ybVJlZiIsImN1cnJlbnQiLCJzaG93Rm9ybSIsImFmdGVyUmVuZGVyIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MiIsInByb3BzIiwiZGVmYXVsdFZhbHVlIiwiaGlkZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJvbkhpZGVGb3JtIiwiaGlkZUZvcm0iLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ0Iiwic2V0TG9hZGluZyIsInNldEVkaXRUeXBlIiwidHlwZSIsInNldEVkaXRJZCIsImdldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDUiLCJzdGF0ZSIsImZvcm1WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsImZpbGVGb3JtYXQiLCJuZXdGaWxlTGlzdCIsIm1hcCIsIml0ZW0iLCJnZXRGaWxlTGlzdCIsInN1Ym1pdEZsYWciLCJlcnJvciIsImRhdGVWYWx1ZUZvcm1hdCIsImtleSIsIm9sZGRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXQiLCJyYW5nZXJEYXRlIiwiZGF0ZUZvcm1hdCIsImUiLCJ2YWx1ZXMiLCJjbG9uZURlZXAiLCJ2YWx1ZTEiLCJ2YWx1ZTIiLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdE9iamVjdCIsInJlcXVlc3RDb25maWciLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJ1cmwiLCJwYXJhbXMiLCJVdGlscyIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwidGhlbiIsImNhdGNoIiwiZXJyb3JJbmZvIiwidmFsdWVDaGFuZ2UiLCJfcmVmIiwidmFsdWVPcHRpb24iLCJkaWN0TmFtZSIsIm5ld05hbWVzIiwib25DaGFuZ2UiLCJldmVudE9wdGlvbiIsImZ1bmNzIiwicmVmcyIsInJlZkxpc3QiLCJ2YWx1ZVN0ciIsInNlbGZGdW5jIiwicmVuZGVyRm9ybSIsImZvcm1zIiwibmV3VmFsaWQiLCJjcmVhdGVFbGVtZW50IiwiZ3V0dGVyIiwiaW5kZXgiLCJfaXRlbSRwcm9wcyIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsInNwbGl0IiwiYWxsb3dDaGFycyIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwiYmluZCIsImRhdGFUeXBlIiwiZGlzYWJsZWQiLCJydWxlcyIsInJlcXVpcmVkIiwiaXRlbVJlZiIsIl9pdGVtJHByb3BzMiIsInNwYW4iLCJzdHlsZSIsImRpc3BsYXkiLCJJdGVtIiwiY29tcG9uZW50TmFtZSIsIm5vU3R5bGUiLCJmb3JtUmVuZGVyIiwicmVmIiwiX2l0ZW0kcHJvcHMzIiwiX2l0ZW0kcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJjaGlsZHJlbiIsInJlbmRlciIsImZvb3RlciIsIm1vZGFsUHJvcHMiLCJ0aXRsZSIsIm9uT2siLCJvbkNhbmNlbCIsIm9rQnV0dG9uUHJvcHMiLCJjZW50ZXJlZCIsImRyYXdlclByb3BzIiwib25DbG9zZSIsIm5ld0Zvcm1zT2JqIiwiZm9ybUdyb3VwcyIsIm90aGVyR3J1cHMiLCJncm91cE5hbWUiLCJpbmRleE9mIiwiZ3JvdXBGb3JtcyIsImZvcm0iLCJzZWxmQnV0dG9ucyIsInNob3dNb2RlbCIsImZvcm1UeXBlIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiwgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1QYWdlUHJvcHMge1xyXG4gIGZvcm1zPzogQXJyYXk8YW55PjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGZvb3RlckNsYXNzTmFtZT86IGFueTtcclxuICBva0J1dHRvblByb3BzPzogYW55O1xyXG4gIGNhbmNlbEJ1dHRvblByb3BzPzogYW55O1xyXG4gIGZvb3Rlcj86IFJlYWN0Tm9kZSB8IGJvb2xlYW47XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25Gb3JtQ2hhbmdlPzogKHZhbHVlPzogYW55LCBhbGxWYWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBzdWJtaXRQYXJhbXM/OiBhbnk7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHByb3BzPzogSUZvcm1Qcm9wcztcclxuICByZXF1ZXN0T2JqZWN0Pzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nO1xyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nO1xyXG4gICAgYWRkUGFyYW1zPzogYW55O1xyXG4gICAgZWRpdG9yUGFyYW1zPzogYW55O1xyXG4gIH07XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBmb290ZXJXaWR0aD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIEZvcm1QYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxGb3JtUGFnZVByb3BzLCBhbnk+IHtcclxuICBmb3JtUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgbGFiZWw6IFwiXCIsXHJcbiAgICBlZGl0b3JGbGFnOiB0cnVlLFxyXG4gICAgdmFsdWU6IHt9IGFzIGFueSxcclxuICAgIGRpY3ROYW1lczoge30gYXMgYW55LFxyXG4gICAgZmlsZUxpc3Q6IHt9IGFzIGFueSxcclxuICAgIHdpZHRoOiBnZXRMb2NhbFN0b3JlKFwibnNjLWhvbWUtbWVudUNvbGxzYXBlXCIpIHx8IGZhbHNlLFxyXG4gICAgZWRpdElkOiBcIlwiLFxyXG4gIH07XHJcbiAgdmFsaWQ6IGFueSA9IFtdO1xyXG4gIGRhdGVWYWx1ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGZpbGVGb3JtYXQgPSBbXSBhcyBhbnk7XHJcbiAgcmFuZ2VyRGF0ZSA9IHt9IGFzIGFueTtcclxuICByZWZMaXN0ID0ge30gYXMgYW55O1xyXG4gIHN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKFxyXG4gICAgICB7XHJcbiAgICAgICAgZXZlbnRUeXBlOiBcImdldE1lbnVDb2xsc2FwZVwiLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiBcIm1pY3JvLXdlYlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luXHJcbiAgICApO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBsaXN0ZW5NZXNzYWdlID0gKGV2KSA9PiB7XHJcbiAgICBjb25zdCBkYXRhID0gdHlwZW9mIGV2LmRhdGEgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGV2LmRhdGEpIDogZXYuZGF0YTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT0gXCJtZW51Q29sbHNhcGVcIikge1xyXG4gICAgICBjb25zdCB7IHBheWxvYWQgfSA9IGRhdGE7XHJcbiAgICAgIGlmIChwYXlsb2FkLmNsb3NlID09PSB0cnVlIHx8IHBheWxvYWQuY2xvc2UgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB3aWR0aDogcGF5bG9hZC5jbG9zZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XHJcbiAgICBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcclxuICAgIH0gZWxzZSBpZiAob3JnVmFsdWUgJiYgKGVkaXRvcmZsYWcgPT0gXCJkZXRhaWxcIiB8fCBlZGl0b3JmbGFnID09IFwic2VhcmNoXCIpKSB7XHJcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcclxuICAgIH1cclxuICAgIGlmIChvcmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgIHZhbHVlOiBvcmdWYWx1ZSxcclxuICAgICAgICAgIGVkaXRJZDogb3JnVmFsdWUuaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZShvcmdWYWx1ZSwgbGFiZWwpO1xyXG4gICAgICAgICAgLy/lpITnkIbmlofku7bmlbDmja5cclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh2YWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgc2hvd0Zvcm0ob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgdGhpcy5zaG93KG9yZ1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjayk7XHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIHNldEVkaXRUeXBlKHR5cGUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBsYWJlbDogdHlwZSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRFZGl0SWQoaWQpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlZGl0SWQ6IGlkLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldEZvcm1WYWx1ZSgpIHtcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgZGF0YSA9IHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbmV3RmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoZmlsZUxpc3RbaXRlbV0ubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFmb3JtVmFsdWVbaXRlbV0pIHtcclxuICAgICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSB0aGlzLmdldEZpbGVMaXN0KGZpbGVMaXN0W2l0ZW1dIHx8IFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCAuLi5uZXdGaWxlTGlzdCB9O1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnN1Ym1pdEZsYWcpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcIuivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlVmFsdWVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IGRhdGFba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gW1xyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMF0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJhbmdlckRhdGVba2V5XSkge1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzBdXSA9IGRheWpzKG9sZGRhdGFbMF0pLmZvcm1hdChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2tleV1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBkYXRhW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzFdXSA9IGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2tleV1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IGRheWpzKG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGlkOiB2YWx1ZT8uaWQgfHwgdGhpcy5zdGF0ZS5lZGl0SWQgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICBjb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGxldCB2YWx1ZXMgPSBsb2Rhc2guY2xvbmVEZWVwKHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1tpdGVtXTtcclxuICAgICAgICBpZiAob2xkZGF0YSAmJiBBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBmaWxlTGlzdCB9KTtcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMSA9IHZhbHVlc1t0aGlzLnJhbmdlckRhdGVba2V5XVswXV07XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTIgPSB2YWx1ZXNbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUxICYmIHZhbHVlMikge1xyXG4gICAgICAgICAgICAgIHZhbHVlc1trZXldID0gW1xyXG4gICAgICAgICAgICAgICAgZGF5anModmFsdWUxLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgICBkYXlqcyh2YWx1ZTIsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG4gIH1cclxuICBzZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZm9ybWRhdGEsIGxhYmVsKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN1Ym1pdFVybCxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIGNhbGxCYWNrLFxyXG4gICAgICByZXF1ZXN0T2JqZWN0ID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhZGRVcmwsIGVkaXRvclVybCwgYWRkUGFyYW1zLCBlZGl0b3JQYXJhbXMgfSA9IHJlcXVlc3RPYmplY3Q7XHJcbiAgICBsZXQgdXJsID0gc3VibWl0VXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0ge307XHJcbiAgICBpZiAobGFiZWwgPT0gXCLmlrDlop5cIikge1xyXG4gICAgICB1cmwgPSBhZGRVcmwgPyBhZGRVcmwgOiBzdWJtaXRVcmw7XHJcbiAgICAgIGlmIChhZGRQYXJhbXMgJiYgdHlwZW9mIGFkZFBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgYWRkUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgcGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IGFkZFBhcmFtcyA/IGFkZFBhcmFtcyA6IHN1Ym1pdFBhcmFtcztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIHVybCA9IGVkaXRvclVybCA/IGVkaXRvclVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGVkaXRvclBhcmFtcyAmJiB0eXBlb2YgZWRpdG9yUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBlZGl0b3JQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gZWRpdG9yUGFyYW1zID8gZWRpdG9yUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi6YWN572uVXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGRhdGEgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5vblN1Ym1pdChcclxuICAgICAgdXJsLFxyXG4gICAgICB7XHJcbiAgICAgICAgZGF0YTogeyAuLi5mb3JtZGF0YSwgLi4uZGF0YSB9LFxyXG4gICAgICAgIG5vVW5kZWZpbmVkOiBsYWJlbCA9PSBcIue8lui+kVwiLFxyXG4gICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgLi4ub3RoZXJQYXJhbXMsXHJcbiAgICAgIH0sXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MobGFiZWwgKyBcIuaIkOWKn1wiKTtcclxuICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KGRhdGEsIGxhYmVsID0gXCLmlrDlop5cIikge1xyXG4gICAgdGhpcy5zdWJtaXRGbGFnID0gdHJ1ZTtcclxuICAgIGxldCBmaWxlTGlzdCA9IFtdIGFzIGFueTtcclxuICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICBkYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICBmaWxlSWQ6IGl0ZW0uZmlsZUlkLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgIG9iai5zdGF0dXMgPSBcImRvbmVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhYmVsICE9PSBcIuafpeeci1wiICYmIGl0ZW0uc3RhdHVzICE9PSBcImRvbmVcIikge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXRGbGFnID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVMaXN0LnB1c2gob2JqKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsZUxpc3Q7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGNvbnN0IHsgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudFxyXG4gICAgICA/LnZhbGlkYXRlRmllbGRzKClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRGb3JtVmFsdWUoKTtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgIC8vICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7fSk7XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKHsgdHlwZSwgZGljdE5hbWUgfSwgcHJvcHMsIHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSkge1xyXG4gICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgIGlmIChkaWN0TmFtZSkge1xyXG4gICAgICAgIGNvbnN0IHsgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGNvbnN0IG5ld05hbWVzID0geyAuLi5kaWN0TmFtZXMgfSBhcyBhbnk7XHJcbiAgICAgICAgbmV3TmFtZXNbZGljdE5hbWVdID0gdmFsdWVPcHRpb24ubGFiZWw7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkaWN0TmFtZXM6IG5ld05hbWVzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcclxuICAgICAgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7XHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICBmb3JtUmVmOiB0aGlzLmZvcm1SZWYsXHJcbiAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB8fCB7fSxcclxuICAgICAgICAgIHJlZnM6IHRoaXMucmVmTGlzdCxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gXCJTZWxlY3RcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVPcHRpb24gPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcIkRhdGVQaWNrZXJcIiB8fCB0eXBlID09IFwiUmFuZ2VQaWNrZXJcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVTdHIgPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZkZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvblwiLCBcIlV0aWxzXCIsIHByb3BzLm9uQ2hhbmdlKTtcclxuICAgICAgICBzZWxmRnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkge1xyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgICBpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJSYW5nZVBpY2tlclwiICYmIGl0ZW0ubmFtZS5zcGxpdChcIixcIikubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJhbmdlckRhdGVbaXRlbS5uYW1lXSA9IGl0ZW0ubmFtZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBkaWN0TmFtZTogaXRlbS5kaWN0TmFtZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTsgLy9mb3JtLml0ZW0g5L2/55SoaW5wdXTnu4Tku7ZhbGxvd0NoYXJz5b+F6aG76buY6K6kdHJ1ZSzkuI3nhLbovpPlhaXnibnmrorlrZfnrKbmi7/liLDnmoTlgLzkuI3lr7lcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZGF0YVR5cGU7XHJcbiAgICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHx8IGl0ZW0ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGl0ZW1SZWY6IGFueSA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgICAgICAgICB0aGlzLnJlZkxpc3RbaXRlbS5uYW1lXSA9IGl0ZW1SZWY7XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlICE9PSBcIlVwbG9hZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgbm9TdHlsZT17aXRlbS5ub1N0eWxlIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5mb3JtUmVuZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpdGVtLmZvcm1SZW5kZXIocHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IGl0ZW1SZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUZvcm1hdC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdFtpdGVtLm5hbWVdIHx8IFtdfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q6IHsgLi4uZmlsZUxpc3QsIFtpdGVtLm5hbWVdOiBsaXN0IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd1JlbW92ZUljb246IGxhYmVsICE9PSBcIuafpeeci1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtUmVmfVxyXG4gICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgPyBpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiA8QnV0dG9uPuS4iuS8oOaWh+S7tjwvQnV0dG9uPn1cclxuICAgICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9Sb3c+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvcm1zID0gW10sIHByb3BzID0ge30sIGZvb3RlciA9IHRydWUsIGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsb2FkaW5nLCBsYWJlbCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Hcm91cHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtcyA9IFtdIGFzIGFueTtcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW2l0ZW1dID0gZ3JvdXBGb3JtcztcclxuICAgICAgfSk7XHJcbiAgICAgIG5ld0Zvcm1zT2JqW1wibm9Hcm91cE5hbWVcIl0gPSBvdGhlckdydXBzO1xyXG4gICAgfVxyXG4gICAgLy/oh6rlrprkuYnmjInpkq5cclxuICAgIGxldCBzZWxmQnV0dG9ucyA9IFtdIGFzIGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIHR5cGVvZiBpdGVtID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSBcIm9iamVjdFwiICYmIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPEZvcm1cclxuICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICBzaG93TW9kZWw9e3RoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICAvLyBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICAvLyB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IChcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5mb3JtVHlwZSAhPT0gXCJwYWdlXCIgPyAoXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tdGl0bGVcIj57a2V5fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGb3JtKG5ld0Zvcm1zT2JqW2tleV0sIGxhYmVsKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgPT0gdHJ1ZSAmJiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgIFwibnNjLWZvcm0tcGFnZS1mb290ZXJcIixcclxuICAgICAgICAgICAgICAgIFt0aGlzLnN0YXRlLndpZHRoID8gXCJuc2MtZm9ybS1wYWdlLWZvb3Rlci13aWR0aFwiIDogXCJcIl0sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmZvb3RlckNsYXNzTmFtZVxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5jYW5jZWxCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25DYW5jZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMub2tCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e3RoaXMuc3RhdGUubG9hZGluZ31cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICB7c2VsZkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0blwifSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7IXRoaXMucHJvcHMuZm9ybVR5cGUgJiYgZm9vdGVyICE9PSB0cnVlICYmIHRoaXMucHJvcHMuZm9vdGVyfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L0Zvcm0+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRm9ybVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxTQUFrQkMsT0FBTyxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxHQUFHLE1BQU0scUJBQXFCO0FBQ3JDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsU0FBU0MsVUFBVSxFQUFFQyxhQUFhLFFBQVEsbUJBQW1CO0FBQzdELE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU8scUJBQXFCO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQXlCNUIsTUFBTUMsUUFBUSxTQUFTYixhQUFhLENBQXFCO0VBQUFjLFlBQUE7SUFBQSxTQUFBQyxTQUFBO0lBQUFDLGVBQUEsK0JBQzdDakIsS0FBSyxDQUFDa0IsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxnQkFDeEI7TUFDTkUsT0FBTyxFQUFFLEtBQUs7TUFDZEMsS0FBSyxFQUFFLEVBQUU7TUFDVEMsVUFBVSxFQUFFLElBQUk7TUFDaEJDLEtBQUssRUFBRSxDQUFDLENBQVE7TUFDaEJDLFNBQVMs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
626
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZ2V0TG9jYWxTdG9yZSIsImRheWpzIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwiRm9ybVBhZ2UiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImxvYWRpbmciLCJsYWJlbCIsImVkaXRvckZsYWciLCJ2YWx1ZSIsImRpY3ROYW1lcyIsImZpbGVMaXN0Iiwid2lkdGgiLCJlZGl0SWQiLCJldiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJfdGhpcyIsImV2ZW50VHlwZSIsInBheWxvYWQiLCJjbG9zZSIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkTW91bnQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNob3ciLCJvcmdWYWx1ZSIsImVkaXRvcmZsYWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJjYWxsQmFjayIsImlkIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50IiwiY29udmVydFZhbHVlIiwiZm9ybVJlZiIsImN1cnJlbnQiLCJzaG93Rm9ybSIsImFmdGVyUmVuZGVyIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MiIsInByb3BzIiwiZGVmYXVsdFZhbHVlIiwiaGlkZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJvbkhpZGVGb3JtIiwiaGlkZUZvcm0iLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ0Iiwic2V0TG9hZGluZyIsInNldEVkaXRUeXBlIiwidHlwZSIsInNldEVkaXRJZCIsImdldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDUiLCJzdGF0ZSIsImZvcm1WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsImZpbGVGb3JtYXQiLCJuZXdGaWxlTGlzdCIsIm1hcCIsIml0ZW0iLCJnZXRGaWxlTGlzdCIsInN1Ym1pdEZsYWciLCJlcnJvciIsImRhdGVWYWx1ZUZvcm1hdCIsImtleSIsIm9sZGRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXQiLCJyYW5nZXJEYXRlIiwiZGF0ZUZvcm1hdCIsImUiLCJ2YWx1ZXMiLCJjbG9uZURlZXAiLCJ2YWx1ZTEiLCJ2YWx1ZTIiLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdE9iamVjdCIsInJlcXVlc3RDb25maWciLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJ1cmwiLCJwYXJhbXMiLCJVdGlscyIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwidGhlbiIsImNhdGNoIiwiZXJyb3JJbmZvIiwidmFsdWVDaGFuZ2UiLCJfcmVmIiwidmFsdWVPcHRpb24iLCJkaWN0TmFtZSIsIm5ld05hbWVzIiwib25DaGFuZ2UiLCJldmVudE9wdGlvbiIsImZ1bmNzIiwicmVmcyIsInJlZkxpc3QiLCJ2YWx1ZVN0ciIsInNlbGZGdW5jIiwicmVuZGVyRm9ybSIsImZvcm1zIiwibmV3VmFsaWQiLCJjcmVhdGVFbGVtZW50IiwiZ3V0dGVyIiwiaW5kZXgiLCJfaXRlbSRwcm9wcyIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsInNwbGl0IiwiYWxsb3dDaGFycyIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwiYmluZCIsImRhdGFUeXBlIiwiZGlzYWJsZWQiLCJydWxlcyIsInJlcXVpcmVkIiwiaXRlbVJlZiIsIl9pdGVtJHByb3BzMiIsInNwYW4iLCJzdHlsZSIsImRpc3BsYXkiLCJJdGVtIiwiY29tcG9uZW50TmFtZSIsIm5vU3R5bGUiLCJmb3JtUmVuZGVyIiwicmVmIiwiX2l0ZW0kcHJvcHMzIiwiX2l0ZW0kcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJjaGlsZHJlbiIsInJlbmRlciIsImZvb3RlciIsImZvcm1UeXBlIiwic2VsZkJ1dHRvbnMiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJvbk9rIiwib25DYW5jZWwiLCJva0J1dHRvblByb3BzIiwiY2VudGVyZWQiLCJmb290ZXJCdXR0b24iLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJuZXdGb3Jtc09iaiIsImZvcm1Hcm91cHMiLCJvdGhlckdydXBzIiwiZ3JvdXBOYW1lIiwiaW5kZXhPZiIsImdyb3VwRm9ybXMiLCJmb3JtIiwic2hvd01vZGVsIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiwgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1QYWdlUHJvcHMge1xyXG4gIGZvcm1zPzogQXJyYXk8YW55PjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGZvb3RlckNsYXNzTmFtZT86IGFueTtcclxuICBva0J1dHRvblByb3BzPzogYW55O1xyXG4gIGNhbmNlbEJ1dHRvblByb3BzPzogYW55O1xyXG4gIGZvb3Rlcj86IFJlYWN0Tm9kZSB8IGJvb2xlYW47XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25Gb3JtQ2hhbmdlPzogKHZhbHVlPzogYW55LCBhbGxWYWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBzdWJtaXRQYXJhbXM/OiBhbnk7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHByb3BzPzogSUZvcm1Qcm9wcztcclxuICByZXF1ZXN0T2JqZWN0Pzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nO1xyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nO1xyXG4gICAgYWRkUGFyYW1zPzogYW55O1xyXG4gICAgZWRpdG9yUGFyYW1zPzogYW55O1xyXG4gIH07XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBmb290ZXJXaWR0aD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIEZvcm1QYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxGb3JtUGFnZVByb3BzLCBhbnk+IHtcclxuICBmb3JtUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgbGFiZWw6IFwiXCIsXHJcbiAgICBlZGl0b3JGbGFnOiB0cnVlLFxyXG4gICAgdmFsdWU6IHt9IGFzIGFueSxcclxuICAgIGRpY3ROYW1lczoge30gYXMgYW55LFxyXG4gICAgZmlsZUxpc3Q6IHt9IGFzIGFueSxcclxuICAgIHdpZHRoOiBnZXRMb2NhbFN0b3JlKFwibnNjLWhvbWUtbWVudUNvbGxzYXBlXCIpIHx8IGZhbHNlLFxyXG4gICAgZWRpdElkOiBcIlwiLFxyXG4gIH07XHJcbiAgdmFsaWQ6IGFueSA9IFtdO1xyXG4gIGRhdGVWYWx1ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGZpbGVGb3JtYXQgPSBbXSBhcyBhbnk7XHJcbiAgcmFuZ2VyRGF0ZSA9IHt9IGFzIGFueTtcclxuICByZWZMaXN0ID0ge30gYXMgYW55O1xyXG4gIHN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGxpc3Rlbk1lc3NhZ2UgPSAoZXYpID0+IHtcclxuICAgIGNvbnN0IGRhdGEgPSB0eXBlb2YgZXYuZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZXYuZGF0YSkgOiBldi5kYXRhO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmIChkYXRhLmV2ZW50VHlwZSA9PSBcIm1lbnVDb2xsc2FwZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGF0YTtcclxuICAgICAgaWYgKHBheWxvYWQuY2xvc2UgPT09IHRydWUgfHwgcGF5bG9hZC5jbG9zZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHdpZHRoOiBwYXlsb2FkLmNsb3NlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICAvL+ihqOWNleaYvuekulxyXG4gIHNob3cob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgICAgZWRpdElkOiBvcmdWYWx1ZS5pZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGlkZShoaWRlID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgeyBvbkhpZGVGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uSGlkZUZvcm0pIHtcclxuICAgICAgb25IaWRlRm9ybSAmJiBvbkhpZGVGb3JtKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgaGlkZSAmJiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBzaG93Rm9ybShvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICB0aGlzLnNob3cob3JnVmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgc2V0RWRpdFR5cGUodHlwZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGxhYmVsOiB0eXBlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldEVkaXRJZChpZCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVkaXRJZDogaWQsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWxlTGlzdFtpdGVtXS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIWZvcm1WYWx1ZVtpdGVtXSkge1xyXG4gICAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3QoZmlsZUxpc3RbaXRlbV0gfHwgW10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLm5ld0ZpbGVMaXN0IH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKFwi6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGRhdGFbdGhpcy5yYW5nZXJEYXRlW2tleV1bMF1dID0gZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRba2V5XVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRhdGFbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dID0gZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRba2V5XVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB8fCB0aGlzLnN0YXRlLmVkaXRJZCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2l0ZW1dO1xyXG4gICAgICAgIGlmIChvbGRkYXRhICYmIEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChvbGRkYXRhIHx8IFtdLCB0eXBlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IGZpbGVMaXN0IH0pO1xyXG4gICAgfVxyXG4gICAgLy/lpITnkIbml6XmnJ/moLzlvI/mlbDmja5cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1trZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBkYXlqcyhvbGRkYXRhLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLnJhbmdlckRhdGVba2V5XSkge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUxID0gdmFsdWVzW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzBdXTtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMiA9IHZhbHVlc1t0aGlzLnJhbmdlckRhdGVba2V5XVsxXV07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZTEgJiYgdmFsdWUyKSB7XHJcbiAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgICBkYXlqcyh2YWx1ZTEsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgIGRheWpzKHZhbHVlMiwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXM7XHJcbiAgfVxyXG4gIHNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUobmV3VmFsdWUpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChmb3JtZGF0YSwgbGFiZWwpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3VibWl0VXJsLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgY2FsbEJhY2ssXHJcbiAgICAgIHJlcXVlc3RPYmplY3QgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFkZFVybCwgZWRpdG9yVXJsLCBhZGRQYXJhbXMsIGVkaXRvclBhcmFtcyB9ID0gcmVxdWVzdE9iamVjdDtcclxuICAgIGxldCB1cmwgPSBzdWJtaXRVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBhZGRQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gYWRkUGFyYW1zID8gYWRkUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIGVkaXRvclBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBlZGl0b3JQYXJhbXMgPyBlZGl0b3JQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLphY3nva5VcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBkYXRhOiB7IC4uLmZvcm1kYXRhLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSBcIuaWsOWinlwiKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9IFwiZG9uZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFiZWwgIT09IFwi5p+l55yLXCIgJiYgaXRlbS5zdGF0dXMgIT09IFwiZG9uZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3QgeyBvblN1Ym1pdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHZhbGlkID0gdGhpcy52YWxpZDtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XHJcbiAgICAgID8udmFsaWRhdGVGaWVsZHMoKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdldEZvcm1WYWx1ZSgpO1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgICAgLy8gICBtZXNzYWdlLmVycm9yKCfor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIEnKVxyXG4gICAgICAgIC8vICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICBpZiAob25TdWJtaXQpIHtcclxuICAgICAgICAgIG9uU3VibWl0ICYmIG9uU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyb3JJbmZvOiBhbnkpID0+IHt9KTtcclxuICB9XHJcbiAgdmFsdWVDaGFuZ2UoeyB0eXBlLCBkaWN0TmFtZSB9LCBwcm9wcywgdmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKSB7XHJcbiAgICBpZiAodmFsdWVPcHRpb24pIHtcclxuICAgICAgaWYgKGRpY3ROYW1lKSB7XHJcbiAgICAgICAgY29uc3QgeyBkaWN0TmFtZXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgY29uc3QgbmV3TmFtZXMgPSB7IC4uLmRpY3ROYW1lcyB9IGFzIGFueTtcclxuICAgICAgICBuZXdOYW1lc1tkaWN0TmFtZV0gPSB2YWx1ZU9wdGlvbi5sYWJlbDtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRpY3ROYW1lczogbmV3TmFtZXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xyXG4gICAgICBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIGZvcm1SZWY6IHRoaXMuZm9ybVJlZixcclxuICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzIHx8IHt9LFxyXG4gICAgICAgICAgcmVmczogdGhpcy5yZWZMaXN0LFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBpZiAodHlwZSA9PSBcIlNlbGVjdFwiKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZU9wdGlvbiA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24uZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwiRGF0ZVBpY2tlclwiIHx8IHR5cGUgPT0gXCJSYW5nZVBpY2tlclwiKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZVN0ciA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzZWxmRnVuYyA9IG5ldyBGdW5jdGlvbihcImV2ZW50T3B0aW9uXCIsIFwiVXRpbHNcIiwgcHJvcHMub25DaGFuZ2UpO1xyXG4gICAgICAgIHNlbGZGdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKSB7XHJcbiAgICBjb25zdCBuZXdWYWxpZDogYW55W10gPSBbXTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxSb3cgZ3V0dGVyPXsyNH0+XHJcbiAgICAgICAge2Zvcm1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtUHJvcHMgPSBpdGVtLnByb3BzIHx8IHt9O1xyXG4gICAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2l0ZW0ubmFtZV0gPVxyXG4gICAgICAgICAgICAgIGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2l0ZW0ubmFtZV0gPSBpdGVtUHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcIlJhbmdlUGlja2VyXCIgJiYgaXRlbS5uYW1lLnNwbGl0KFwiLFwiKS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmFuZ2VyRGF0ZVtpdGVtLm5hbWVdID0gaXRlbS5uYW1lLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbS5wcm9wcz8uYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YCxcclxuICAgICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudmFsdWVDaGFuZ2UuYmluZChcclxuICAgICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgICAgIGRpY3ROYW1lOiBpdGVtLmRpY3ROYW1lLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgeyAuLi5pdGVtLnByb3BzIH1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICAgIHByb3BzLmFsbG93Q2hhcnMgPSB0cnVlOyAvL2Zvcm0uaXRlbSDkvb/nlKhpbnB1dOe7hOS7tmFsbG93Q2hhcnPlv4Xpobvpu5jorqR0cnVlLOS4jeeEtui+k+WFpeeJueauiuWtl+espuaLv+WIsOeahOWAvOS4jeWvuVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVsZXRlIHByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgZGVsZXRlIHByb3BzLmZvcm1hdDtcclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy5kYXRhVHlwZTtcclxuICAgICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICAgIHByb3BzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgcHJvcHMucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKChpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoID4gMCkgfHwgaXRlbS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBuZXdWYWxpZC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaW5kZXggKyAxID09PSBmb3Jtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZCA9IG5ld1ZhbGlkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaXRlbVJlZjogYW55ID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICAgICAgICAgIHRoaXMucmVmTGlzdFtpdGVtLm5hbWVdID0gaXRlbVJlZjtcclxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgIT09IFwiVXBsb2FkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8Q29sXHJcbiAgICAgICAgICAgICAgICBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gXCJub25lXCIgOiBcImJsb2NrXCIgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICBuYW1lPXtpdGVtLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lPXtpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiBcIklucHV0XCJ9XHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgICB0eXBlPXtpdGVtLnByb3BzPy50eXBlfVxyXG4gICAgICAgICAgICAgICAgICBub1N0eWxlPXtpdGVtLm5vU3R5bGUgfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtLmZvcm1SZW5kZXJcclxuICAgICAgICAgICAgICAgICAgICA/IGl0ZW0uZm9ybVJlbmRlcihwcm9wcylcclxuICAgICAgICAgICAgICAgICAgICA6IGdldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogaXRlbVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlRm9ybWF0LnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8Q29sXHJcbiAgICAgICAgICAgICAgICBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gXCJub25lXCIgOiBcImJsb2NrXCIgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICBuYW1lPXtpdGVtLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgICB0eXBlPXtpdGVtLnByb3BzPy50eXBlfVxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPFVwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0W2l0ZW0ubmFtZV0gfHwgW119XHJcbiAgICAgICAgICAgICAgICAgICAgb25MaXN0Q2hhbmdlPXsobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdDogeyAuLi5maWxlTGlzdCwgW2l0ZW0ubmFtZV06IGxpc3QgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3Q9e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dEb3dubG9hZEljb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaG93UmVtb3ZlSWNvbjogbGFiZWwgIT09IFwi5p+l55yLXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICByZWY9e2l0ZW1SZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ucHJvcHM/LmNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0ucHJvcHM/LmNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsICE9PSBcIuafpeeci1wiICYmIDxCdXR0b24+5LiK5Lyg5paH5Lu2PC9CdXR0b24+fVxyXG4gICAgICAgICAgICAgICAgICA8L1VwbG9hZD5cclxuICAgICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L1Jvdz5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZm9ybXMgPSBbXSxcclxuICAgICAgcHJvcHMgPSB7fSxcclxuICAgICAgZm9vdGVyID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIGZvcm1UeXBlID0gXCJwYWdlXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbG9hZGluZywgbGFiZWwgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgc2VsZkJ1dHRvbnMgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICB0eXBlb2YgaXRlbSA9PSBcIm9iamVjdFwiICYmIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0eXBlb2YgY2hpbGRyZW4gPT0gXCJvYmplY3RcIiAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgICAgZm9vdGVyQnV0dG9uOiBzZWxmQnV0dG9ucyxcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICAgIGZvb3RlckJ1dHRvbjogc2VsZkJ1dHRvbnMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Hcm91cHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtcyA9IFtdIGFzIGFueTtcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW2l0ZW1dID0gZ3JvdXBGb3JtcztcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChvdGhlckdydXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBuZXdGb3Jtc09ialtcIm5vR3JvdXBOYW1lXCJdID0gb3RoZXJHcnVwcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/oh6rlrprkuYnmjInpkq5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlID09IFwicGFnZVwiID8gbnVsbCA6IHRoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICAvLyBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICAvLyB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IChcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5mb3JtVHlwZSAhPT0gXCJwYWdlXCIgPyAoXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tdGl0bGVcIj57a2V5fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGb3JtKG5ld0Zvcm1zT2JqW2tleV0sIGxhYmVsKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHtmb3JtVHlwZSA9PT0gXCJwYWdlXCIgJiYgZm9vdGVyID09IHRydWUgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICBcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyXCIsXHJcbiAgICAgICAgICAgICAgICBbdGhpcy5zdGF0ZS53aWR0aCA/IFwibnNjLWZvcm0tcGFnZS1mb290ZXItd2lkdGhcIiA6IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWVcclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuY2FuY2VsQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2FuY2VsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLm9rQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1wibnNjLWZvcm0tcGFnZS1mb290ZXItYnRuXCJ9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAge3NlbGZCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAge2Zvcm1UeXBlID09PSBcInBhZ2VcIiAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLEVBQUVDLGFBQWEsUUFBUSxtQkFBbUI7QUFDN0QsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxxQkFBcUI7QUFDNUIsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBeUI1QixNQUFNQyxRQUFRLFNBQVNiLGFBQWEsQ0FBcUI7RUFBQWMsWUFBQTtJQUFBLFNBQUFDLFNBQUE7SUFBQUMsZUFBQSwrQkFDN0NqQixLQUFLLENBQUNrQixTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLGdCQUN4QjtNQUNORSxPQUFPLEVBQUUsS0FBSztNQUNkQyxLQUFLLEVBQUUsRUFBRTtNQUNUQyxVQUFVLEVBQUUsSUFBSTtNQUNoQkMsS0FBSyxFQUFFLENBQUMs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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","getLocalStore","dayjs","lodash","Button","Upload","cls","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","width","editId","ev","data","JSON","parse","_this","eventType","payload","close","setState","componentDidMount","window","addEventListener","listenMessage","parent","postMessage","serviceName","location","origin","componentWillUnmount","removeEventListener","show","orgValue","editorflag","length","undefined","callBack","id","_this$formRef$current","convertValue","formRef","current","showForm","afterRender","_this$formRef$current2","props","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","setEditType","type","setEditId","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","rangerDate","dateFormat","e","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","console","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","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, getLocalStore } 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: getLocalStore(\"nsc-home-menuCollsape\") || false,\r\n editId: \"\",\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 componentDidMount(): void {\r\n window.addEventListener(\"message\", this.listenMessage);\r\n window.parent.postMessage(\r\n {\r\n eventType: \"getMenuCollsape\",\r\n serviceName: \"micro-web\",\r\n },\r\n window.location.origin\r\n );\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"menuCollsape\") {\r\n const { payload } = data;\r\n if (payload.close === true || payload.close === false) {\r\n _this.setState({ width: payload.close });\r\n }\r\n }\r\n };\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 editId: orgValue.id,\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 setEditId(id) {\r\n this.setState({\r\n editId: id,\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 || this.state.editId };\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 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 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 !== \"page\" ? (\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","getLocalStore","dayjs","lodash","Button","Upload","cls","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","width","editId","ev","data","JSON","parse","_this","eventType","payload","close","setState","componentDidMount","window","addEventListener","listenMessage","componentWillUnmount","removeEventListener","show","orgValue","editorflag","length","undefined","callBack","id","_this$formRef$current","convertValue","formRef","current","showForm","afterRender","_this$formRef$current2","props","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","setEditType","type","setEditId","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","rangerDate","dateFormat","e","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","console","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","formType","selfButtons","modalProps","title","onOk","onCancel","okButtonProps","centered","footerButton","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","showModel","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, getLocalStore } 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: getLocalStore(\"nsc-home-menuCollsape\") || false,\r\n editId: \"\",\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 componentDidMount(): void {\r\n window.addEventListener(\"message\", this.listenMessage);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"menuCollsape\") {\r\n const { payload } = data;\r\n if (payload.close === true || payload.close === false) {\r\n _this.setState({ width: payload.close });\r\n }\r\n }\r\n };\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 editId: orgValue.id,\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 setEditId(id) {\r\n this.setState({\r\n editId: id,\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 || this.state.editId };\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 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 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 {\r\n forms = [],\r\n props = {},\r\n footer = true,\r\n children,\r\n formType = \"page\",\r\n } = this.props;\r\n const { loading, label } = this.state;\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 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 footerButton: selfButtons,\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 footerButton: selfButtons,\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 if (otherGrups.length > 0) {\r\n newFormsObj[\"noGroupName\"] = otherGrups;\r\n }\r\n }\r\n //自定义按钮\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType == \"page\" ? null : 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 !== \"page\" ? (\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 {formType === \"page\" && 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 {formType === \"page\" && 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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"}