atr-components 0.2.2 → 0.2.6

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.
@@ -91,7 +91,7 @@ export declare interface AtrFormOpt {
91
91
  }
92
92
  export declare interface AtrFormDetail {
93
93
  label: string;
94
- type: 'cascader' | 'radio' | 'text' | 'image' | 'select' | 'date' | 'number' | 'telphone' | 'password' | 'checkbox' | 'editor' | 'textarea' | 'dateTime' | 'title' | 'dateRange' | 'selectc' | 'selectIcon' | 'treeSelect' | 'switch';
94
+ type: 'cascader' | 'radio' | 'text' | 'image' | 'select' | 'date' | 'number' | 'telphone' | 'password' | 'checkbox' | 'editor' | 'textarea' | 'dateTime' | 'title' | 'dateRange' | 'selectc' | 'selectIcon' | 'treeSelect' | 'switch' | 'buttons';
95
95
  key: string;
96
96
  isHidden?: boolean;
97
97
  defaultValue?: any;
@@ -133,6 +133,7 @@ export declare interface AtrFormDetail {
133
133
  nzShowTime?: boolean | {
134
134
  nzFormat: string;
135
135
  };
136
+ buttons?: formButton[];
136
137
  }
137
138
  export declare interface AtrFormValid {
138
139
  type: 'required' | 'email' | 'telphone' | 'maxlength' | 'minlength' | 'pattern' | 'operator';
@@ -145,6 +146,8 @@ export declare interface formButton {
145
146
  name: string;
146
147
  isShow: boolean;
147
148
  code: string;
149
+ btnType?: string;
150
+ operator?: string;
148
151
  }
149
152
  export declare interface colorOperator {
150
153
  color: string;
@@ -39,4 +39,4 @@ export var UserAction;
39
39
  UserAction[UserAction["QUERY"] = 3] = "QUERY";
40
40
  UserAction[UserAction["SUPPERADD"] = 4] = "SUPPERADD";
41
41
  })(UserAction || (UserAction = {}));
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRyLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvYmFzZS9hdHItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxHQUFHO0lBQ1Q7O09BRUc7SUFDSCxPQUFPLEVBQUUsRUFBRTtJQUNYLFVBQVUsRUFBRSxxQkFBcUI7SUFDakMsV0FBVyxFQUFFLEtBQUs7SUFDbEIsUUFBUSxFQUFFLEVBQUU7SUFDWixPQUFPLEVBQUUsV0FBVztJQUNwQjs7T0FFRztJQUNILFlBQVksRUFBRSxVQUFVO0lBQ3hCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsbUJBQW1CO0lBQ25CLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLGVBQWUsRUFBRSxDQUFDLFFBQXFCLEVBQUUsRUFBRTtRQUN6QyxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFxQixFQUFFLEVBQUU7UUFDMUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLDZEQUE2RDtRQUM3RCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sT0FBTyxXQUFXOztBQUNmLG1CQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDNUksaUJBQUssR0FBRyxxOUhBQXE5SCxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQW1Dai9ILE1BQU0sQ0FBTixJQUFZLFVBTVg7QUFORCxXQUFZLFVBQVU7SUFDcEIseUNBQUcsQ0FBQTtJQUNILDJDQUFJLENBQUE7SUFDSix5Q0FBRyxDQUFBO0lBQ0gsNkNBQUssQ0FBQTtJQUNMLHFEQUFTLENBQUE7QUFDWCxDQUFDLEVBTlcsVUFBVSxLQUFWLFVBQVUsUUFNckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2VVdGlsfSBmcm9tIFwiLi4vdXRpbHMvbG9jYWxzdG9yYWdlLnV0aWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhdHJfc3RhdGljX2RhdGFzID0ge1xyXG4gIHRlc3Q6ICcxJyxcclxuICAvKipcclxuICAgKiBvc3PlnLDlnYDliY3nvIBcclxuICAgKi9cclxuICBPU1NfVVJMOiAnJyxcclxuICBPU1NfUE9MSUNZOiAndGhpcmQvb3NzL2dldFBvbGljeScsXHJcbiAgU1RPUkFHRV9QUkU6ICdEUV8nLFxyXG4gIG1lbnVfdXJsOiAnJyxcclxuICBkaWNfdXJsOiAnbWdyL2NvbWJvJyxcclxuICAvKipcclxuICAgKiDnmbvlvZXot6/nlLFcclxuICAgKi9cclxuICBsb2dpbl9yb3V0ZXI6ICcvcC9sb2dpbicsXHJcbiAgU0VSVkVSX1VSTDogJycsXHJcbiAgLy9odHRwIGhlYWTmmK/lkKbpu5jorqRoZWFkXHJcbiAgbmVlZE5vcm1hbEhlYWRlOiBmYWxzZSxcclxuICBnZXROb3JtYWxIZWFkZXI6IChfaGVhZGVyczogSHR0cEhlYWRlcnMpID0+IHtcclxuICAgIHJldHVybiBfaGVhZGVyc1xyXG4gIH0sXHJcbiAgZ2V0RGVmYXVsdEhlYWRlcjogKF9oZWFkZXJzOiBIdHRwSGVhZGVycykgPT4ge1xyXG4gICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJ4LWhlYWRlci1hdHJcIiwgXCJtYW5hZ2VcIik7XHJcbiAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcInRva2VuXCIsIExvY2FsU3RvcmFnZVV0aWwuZ2V0VXNlclRva2VuKCkpO1xyXG4gICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJ1c2VySWRcIiwgTG9jYWxTdG9yYWdlVXRpbC5nZXRVc2VySWQoKSk7XHJcbiAgICAvLyBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIm9yZ0NvZGVcIixUb29sc1V0aWwuZ2V0T3JnQ29kZSgpKTtcclxuICAgIHJldHVybiBfaGVhZGVycztcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgY29tbW9uRGF0YXMge1xyXG4gIHN0YXRpYyBsZXR0ZXJzID0gW1wiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCIsIFwiR1wiLCBcIkhcIiwgXCJJXCIsIFwiSlwiLCBcIktcIiwgXCJMXCIsIFwiTVwiLCBcIk5cIiwgXCJPXCIsIFwiUFwiLCBcIlFcIiwgXCJSXCIsIFwiU1wiLCBcIlRcIiwgXCJVXCIsIFwiVlwiLCBcIldcIiwgXCJYXCIsIFwiWVwiLCBcIlpcIl1cclxuICBzdGF0aWMgaWNvbnMgPSAnc3RlcC1iYWNrd2FyZCxzdGVwLWZvcndhcmQsZmFzdC1iYWNrd2FyZCxmYXN0LWZvcndhcmQsc2hyaW5rLGFycm93cy1hbHQsZG93bix1cCxsZWZ0LHJpZ2h0LGNhcmV0LXVwLGNhcmV0LWRvd24sY2FyZXQtbGVmdCxjYXJldC1yaWdodCx1cC1jaXJjbGUsZG93bi1jaXJjbGUsbGVmdC1jaXJjbGUscmlnaHQtY2lyY2xlLGRvdWJsZS1yaWdodCxkb3VibGUtbGVmdCx2ZXJ0aWNhbC1sZWZ0LHZlcnRpY2FsLXJpZ2h0LHZlcnRpY2FsLWFsaWduLXRvcCx2ZXJ0aWNhbC1hbGlnbi1taWRkbGUsdmVydGljYWwtYWxpZ24tYm90dG9tLGZvcndhcmQsYmFja3dhcmQscm9sbGJhY2ssZW50ZXIscmV0d2VldCxzd2FwLHN3YXAtbGVmdCxzd2FwLXJpZ2h0LGFycm93LXVwLGFycm93LWRvd24sYXJyb3ctbGVmdCxhcnJvdy1yaWdodCxwbGF5LWNpcmNsZSx1cC1zcXVhcmUsZG93bi1zcXVhcmUsbGVmdC1zcXVhcmUscmlnaHQtc3F1YXJlLGxvZ2luLGxvZ291dCxtZW51LWZvbGQsbWVudS11bmZvbGQsYm9yZGVyLWJvdHRvbSxib3JkZXItaG9yaXpvbnRhbCxib3JkZXItaW5uZXIsYm9yZGVyLW91dGVyLGJvcmRlci1sZWZ0LGJvcmRlci1yaWdodCxib3JkZXItdG9wLGJvcmRlci12ZXJ0aWNsZSxwaWMtY2VudGVyLHBpYy1sZWZ0LHBpYy1yaWdodCxyYWRpdXMtYm90dG9tbGVmdCxyYWRpdXMtYm90dG9tcmlnaHQscmFkaXVzLXVwbGVmdCxyYWRpdXMtdXByaWdodCxmdWxsc2NyZWVuLGZ1bGxzY3JlZW4tZXhpdCxxdWVzdGlvbixxdWVzdGlvbi1jaXJjbGUscGx1cyxwbHVzLWNpcmNsZSxwYXVzZSxwYXVzZS1jaXJjbGUsbWludXMsbWludXMtY2lyY2xlLHBsdXMtc3F1YXJlLG1pbnVzLXNxdWFyZSxpbmZvLGluZm8tY2lyY2xlLGV4Y2xhbWF0aW9uLGV4Y2xhbWF0aW9uLWNpcmNsZSxjbG9zZSxjbG9zZS1jaXJjbGUsY2xvc2Utc3F1YXJlLGNoZWNrLGNoZWNrLWNpcmNsZSxjaGVjay1zcXVhcmUsY2xvY2stY2lyY2xlLHdhcm5pbmcsaXNzdWVzLWNsb3NlLHN0b3AsZWRpdCxmb3JtLGNvcHksc2Npc3NvcixkZWxldGUsc25pcHBldHMsZGlmZixoaWdobGlnaHQsYWxpZ24tY2VudGVyLGFsaWduLWxlZnQsYWxpZ24tcmlnaHQsYmctY29sb3JzLGJvbGQsaXRhbGljLHVuZGVybGluZSxzdHJpa2V0aHJvdWdoLHJlZG8sdW5kbyx6b29tLWluLHpvb20tb3V0LGZvbnQtY29sb3JzLGZvbnQtc2l6ZSxsaW5lLWhlaWdodCxkYXNoLHNtYWxsLWRhc2gsc29ydC1hc2NlbmRpbmcsc29ydC1kZXNjZW5kaW5nLGRyYWcsb3JkZXJlZC1saXN0LHVub3JkZXJlZC1saXN0LHJhZGl1cy1zZXR0aW5nLGNvbHVtbi13aWR0aCxjb2x1bW4taGVpZ2h0LGFyZWEtY2hhcnQscGllLWNoYXJ0LGJhci1jaGFydCxkb3QtY2hhcnQsbGluZS1jaGFydCxyYWRhci1jaGFydCxoZWF0LW1hcCxmYWxsLHJpc2Usc3RvY2ssYm94LXBsb3QsZnVuZCxzbGlkZXJzLGFuZHJvaWQsYXBwbGUsd2luZG93cyxpZSxjaHJvbWUsZ2l0aHViLGFsaXdhbmd3YW5nLGRpbmdkaW5nLHdlaWJvLXNxdWFyZSx3ZWliby1jaXJjbGUsdGFvYmFvLWNpcmNsZSxodG1sNSx3ZWlibyx0d2l0dGVyLHdlY2hhdCx5b3V0dWJlLGFsaXBheS1jaXJjbGUsdGFvYmFvLHNreXBlLHFxLG1lZGl1bS13b3JrbWFyayxnaXRsYWIsbWVkaXVtLGxpbmtlZGluLGdvb2dsZS1wbHVzLGRyb3Bib3gsZmFjZWJvb2ssY29kZXBlbixjb2RlLXNhbmRib3gsYW1hem9uLGdvb2dsZSxjb2RlcGVuLWNpcmNsZSxhbGlwYXksYW50LWRlc2lnbixhbnQtY2xvdWQsYWxpeXVuLHpoaWh1LHNsYWNrLHNsYWNrLXNxdWFyZSxiZWhhbmNlLGJlaGFuY2Utc3F1YXJlLGRyaWJiYmxlLGRyaWJiYmxlLXNxdWFyZSxpbnN0YWdyYW0seXVxdWUsYWxpYmFiYSx5YWhvbyxyZWRkaXQsc2tldGNoLGFsZXJ0LGFpbSxhY2NvdW50LWJvb2ssYXBhcnRtZW50LGFwaSxhcHBzdG9yZSxhdWRpby1tdXRlZCxhdWRpdCxiYW5rLGJhcmNvZGUsYmFycyxibG9jayxib29rLGJlbGwsYXBwc3RvcmUtYWRkLGF1ZGlvLGJvcmRlcixib3JkZXJsZXNzLXRhYmxlLGJ1ZyxicmFuY2hlcyxjYW1lcmEsY2FsY3VsYXRvcixjYWxlbmRhcixidWlsZCxjYXJyeS1vdXQsYnVsYixjYXIsY2xlYXIsY2ksY2xvdWQtZG93bmxvYWQsY2xvdWQsY2xvdWQtc3luYyxjbG91ZC1zZXJ2ZXIsY2xvdWQtdXBsb2FkLGNvZGUsY29mZmVlLGNvbXByZXNzLGNvbXBhc3MsY29tbWVudCxjaS1jaXJjbGUsY29udGFpbmVyLGNvbnRyb2wsY29weXJpZ2h0LGNyZWRpdC1jYXJkLGNsdXN0ZXIsY3VzdG9tZXItc2VydmljZSxjb250YWN0cyxjb25zb2xlLXNxbCxkYXNoYm9hcmQsZGF0YWJhc2UsY29weXJpZ2h0LWNpcmNsZSxkZWxldGUtY29sdW1uLGRlc2t0b3AsZGVwbG95bWVudC11bml0LGRlbGl2ZXJlZC1wcm9jZWR1cmUsZGlzY29ubmVjdCxkaW5ndGFsayxkb2xsYXItY2lyY2xlLGRpc2xpa2UsZGVsZXRlLXJvdyxkb2xsYXIsY3Jvd24sZG93bmxvYWQsZWxsaXBzaXMsZW52aXJvbm1lbnQsZXVyby1jaXJjbGUsZXhjZXB0aW9uLGV4cGFuZC1hbHQsZXVybyxleHBlcmltZW50LGV4cG9ydCxleHBhbmQsZXllLWludmlzaWJsZSxleWUsZmlsZS1hZGQsZmllbGQtc3RyaW5nLGZpbGUtZXhjbGFtYXRpb24sZmlsZS1kb25lLGZpZWxkLXRpbWUsZmlsZS1leGNlbCxmaWVsZC1iaW5hcnksZmlsZS1naWYsZmlsZS1pbWFnZSxmaWxlLGZpbGUtbWFya2Rvd24sZmlsZS1wcHQsZmlsZS1wZGYsZmllbGQtbnVtYmVyLGZpbGUtc2VhcmNoLGZpbGUtc3luYyxmaWxlLWpwZyxmaWxlLXRleHQsZmlsdGVyLGZpbGUtemlwLGZsYWcsZm9sZGVyLWFkZCxmaWxlLXVua25vd24sZm9sZGVyLW9wZW4sZmlyZSxmaWxlLXByb3RlY3QsZm9sZGVyLXZpZXcsZm9sZGVyLGZvcmssZm9ybWF0LXBhaW50ZXIsZnJvd24sZnVuZC1wcm9qZWN0aW9uLXNjcmVlbixnaWZ0LGdhdGV3YXksZnVuZC12aWV3LGdpZixmdW5uZWwtcGxvdCxnb2xkLGdsb2JhbCxncm91cCxoZGQsZnVuY3Rpb24saGlzdG9yeSxmaWxlLXdvcmQsaG9tZSxpZGNhcmQsaG91cmdsYXNzLGhlYXJ0LGluc2VydC1yb3ctYmVsb3csaW1wb3J0LGluc2VydC1yb3ctbGVmdCxpbnNlcnQtcm93LWFib3ZlLGluc2VydC1yb3ctcmlnaHQsa2V5LGluYm94LGluc3VyYW5jZSxsYXB0b3AsbGlrZSxsaW5lLGxpbmssbG9hZGluZy0zLXF1YXJ0ZXJzLGxvYWRpbmcsbG9jayxtYW4sbWFpbCxtYWMtY29tbWFuZCxtZWRpY2luZS1ib3gsbGF5b3V0LG1laCxpbnRlcmFjdGlvbixtZXNzYWdlLG1lbnUsbWVyZ2UtY2VsbHMsbW9iaWxlLG1vbmV5LWNvbGxlY3Qsbm9kZS1pbmRleCxtb25pdG9yLG5vZGUtZXhwYW5kLG1vcmUsbnVtYmVyLG5vdGlmaWNhdGlvbixvbmUtdG8tb25lLHBlcmNlbnRhZ2UscGhvbmUscGFwZXItY2xpcCxwYXJ0aXRpb24scGljdHVyZSxub2RlLWNvbGxhcHNlLHBsYXktc3F1YXJlLHBheS1jaXJjbGUscG91bmQscHJvZmlsZSxwcm9qZWN0LHByb3BlcnR5LXNhZmV0eSxwb3dlcm9mZixwdXNocGluLHFyY29kZSxwcmludGVyLHBvdW5kLWNpcmNsZSxwdWxsLXJlcXVlc3QscmVzdCxyZWFkLHJlbG9hZCxyZWNvbmNpbGlhdGlvbixyb2JvdCxyb2NrZXQscm90YXRlLXJpZ2h0LHNhZmV0eS1jZXJ0aWZpY2F0ZSxyZWQtZW52ZWxvcGUscm90YXRlLWxlZnQsc2F2ZSxzYWZldHksc2VhcmNoLHNlY3VyaXR5LXNjYW4sc2NhbixzZW5kLHNldHRpbmcsc2VsZWN0LHNoYWtlLHNob3BwaW5nLWNhcnQsc2lzdGVybm9kZSxzaG9wLHNob3BwaW5nLHNoYXJlLWFsdCxzY2hlZHVsZSxza2luLHNtaWxlLHNvbHV0aW9uLHNvdW5kLHNwbGl0LWNlbGxzLHN0YXIsc3Vibm9kZSx0YWdzLHRhYmxldCx0YWcsdGFibGUsc3dpdGNoZXIsc3luYyx0ZWFtLHRvb2wsdHJhZGVtYXJrLWNpcmNsZSx0aHVuZGVyYm9sdCx0by10b3AsdHJhbnNsYXRpb24sdHJhZGVtYXJrLHRyb3BoeSx1bmdyb3VwLHVubG9jayx1cGxvYWQsdHJhbnNhY3Rpb24sdXNlci1kZWxldGUsdXNiLHVzZXItYWRkLHVzZXJncm91cC1kZWxldGUsdmlkZW8tY2FtZXJhLWFkZCx2ZXJpZmllZCx1c2VyZ3JvdXAtYWRkLHVzZXIsdXNlci1zd2l0Y2gsdmlkZW8tY2FtZXJhLHdpZmksd2FsbGV0LHdoYXRzLWFwcCx3b21hbixhcHBzdG9yZScuc3BsaXQoJywnKVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UganNvbiBleHRlbmRzIE9iamVjdCB7XHJcbiAgW2tleTogc3RyaW5nXTogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZXJ2ZXJQYWdpbmF0aW9uU3RhbmRhcmQge1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XHJcbiAgc2hvd0NvdW50OiBudW1iZXI7XHJcbiAgdG90YWxSZXN1bHQ6IG51bWJlcjtcclxuICB0b3RhbFBhZ2U/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUmVzcG9uc2VEYXRhU3RhbmRhcmQge1xyXG4gIHN0YXRlOiBudW1iZXI7IC8vIOS4ujHmiY3mmK/miJDlip9cclxuICBkYXRhOiBqc29uIHwgW3t9XSB8IG9iamVjdCB8IHN0cmluZyB8IGFueTsgLy/msqHmnInlgLwgZGF0YTogJydcclxuICBtZXNzOiBzdHJpbmc7IC8v6L+U5Zue55qE5raI5oGvXHJcbiAgcGFnZT86IFNlcnZlclBhZ2luYXRpb25TdGFuZGFyZDtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUnNlcG9uc2VUcmFuc2Zvcm1DZWxsIHtcclxuICBba2V5OiBzdHJpbmddOiBqc29uXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwT3B0aW9ucyB7XHJcbiAgaGVhZGVycz86IHt9LFxyXG4gIGlzSnNvbkVuY29kZT86IGJvb2xlYW5cclxuICBpc1VybEVuY29kZT86IGJvb2xlYW5cclxuICBpc0F1dG9TaG93TWVzc2FnZT86IGJvb2xlYW5cclxuICBpc1dpdGhDcmVkZW50aWFscz86IGJvb2xlYW5cclxuICBpc0NvbW1vbkh0dHBIZWFkZXI/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFVzZXJBY3Rpb24ge1xyXG4gIEFERCxcclxuICBFRElULFxyXG4gIERFTCxcclxuICBRVUVSWSxcclxuICBTVVBQRVJBRERcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEVDaGFydHNPcHRpb24ge1xyXG4gIHRpdGxlPzogYW55LFxyXG4gIGxlZ2VuZD86IGFueSxcclxuICBncmlkPzogYW55LFxyXG4gIGJydXNoPzogYW55LFxyXG4gIHRvb2xib3g/OiBhbnksXHJcbiAgdG9vbHRpcD86IGFueSxcclxuICBkYXRhc2V0PzogYW55LFxyXG4gIHhBeGlzPzoge1xyXG4gICAgdHlwZT86ICdjYXRlZ29yeScsXHJcbiAgICBkYXRhPzogc3RyaW5nW10sXHJcbiAgICBib3VuZGFyeUdhcD86IGJvb2xlYW4sXHJcbiAgICBzaG93PzogYm9vbGVhbixcclxuICB9LFxyXG4gIHlBeGlzPzogYW55LC8veyAgICBzaG93OmZhbHNlLCAgICB0eXBlOiAndmFsdWUnLCAgICBtaW5JbnRlcnZhbDogMSx9W11cclxuICBzZXJpZXM/OiB7XHJcbiAgICBuYW1lPzogc3RyaW5nLFxyXG4gICAgZGF0YT86IGFueVtdLFxyXG4gICAgaXRlbVN0eWxlPzogYW55LFxyXG4gICAgc3RhY2s/OiBhbnksXHJcbiAgICBlbXBoYXNpcz86IGFueSxcclxuICAgIGxhYmVsPzogYW55LFxyXG4gICAgcmFkaXVzPzogYW55W10sXHJcbiAgICBzbW9vdGg/OiBib29sZWFuLFxyXG4gICAgc2VyaWVzTGF5b3V0Qnk/OiBzdHJpbmcsXHJcbiAgICB0eXBlPzogJ2JhcicgfCAncGllJyB8ICdsaW5lJyxcclxuICAgIGJhY2tncm91bmRTdHlsZT86IGFueVxyXG4gIH1bXVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybU9wdCB7XHJcbiAgdHlwZTogJ2FkZCcgfCAnZWRpdCcgfCAndmlldycsXHJcbiAgbGF5b3V0PzogXCJmdWxsXCIgfCAnMWwyYycgfCAnMWwxYycsXHJcbiAgaXRlbXM6IEF0ckZvcm1EZXRhaWxbXSwvL+ihqOWNlemhueebrlxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybURldGFpbCB7XHJcbiAgbGFiZWw6IHN0cmluZyxcclxuICB0eXBlOiAnY2FzY2FkZXInIHwgJ3JhZGlvJyB8ICd0ZXh0JyB8ICdpbWFnZScgfCAnc2VsZWN0JyB8ICdkYXRlJyB8ICdudW1iZXInIHwgJ3RlbHBob25lJyB8ICdwYXNzd29yZCcgfCAnY2hlY2tib3gnXHJcbiAgICB8ICdlZGl0b3InIHwgJ3RleHRhcmVhJyB8ICdkYXRlVGltZScgfCAndGl0bGUnIHwgJ2RhdGVSYW5nZScgfCAnc2VsZWN0YycgfCAnc2VsZWN0SWNvbicgfCAndHJlZVNlbGVjdCcgfCAnc3dpdGNoJyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc0hpZGRlbj86IGJvb2xlYW4sXHJcbiAgZGVmYXVsdFZhbHVlPzogYW55LFxyXG4gIHZhbHVlPzogYW55LC8v57yW6L6R5LiL5Y6f5aeL5pWw5YC8XHJcbiAgZGljdENvZGU/OiBzdHJpbmcsLy9zZWxlY3Qg5qih5byP5LiL6YWN572uXHJcbiAgc3Bhbj86IG51bWJlciwvL+aYvuekuuWuveW6plxyXG4gIHZhbGlkYXRvcnM/OiBBdHJGb3JtVmFsaWRbXSwvL+mqjOivgeadoeS7tlxyXG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuIHwgc3RyaW5nLC8v6ZqQ5oCn5p2h5Lu2IOaXoOmcgOWhq+WGmSwgc3RyaW5n57G75Z6L5qC85byP5ZCMb3BlcmF0b3JcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcclxuICBpbWFnZU9wdHM/OiBJbWFnZU9wdHMsXHJcbiAgZWRpdENvbnRlbnQ/OiBzdHJpbmcsXHJcbiAgaGVpZ2h0PzogbnVtYmVyLC8vZWRpdG9y5pyJ5pWIXHJcbiAgZGlzYWJsZT86IGJvb2xlYW4sXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgcm93cz86IG51bWJlciwvL3RleHRhcmVhIOaYvuekuuihjOaVsFxyXG4gIG9wZXJhdG9yPzogc3RyaW5nLC8v5pi+56S65pON5L2c56ymIOagvOW8jyDlpoI6c3RhdHVzfGVxfDBcclxuICBidXR0b24/OiBmb3JtQnV0dG9uLFxyXG4gIHJlYWRvbmx5PzogYm9vbGVhbixcclxuICBkYXRlRm9ybWF0Pzogc3RyaW5nLFxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIG56TW9kZT86ICdtdWx0aXBsZScgfCAndGFncycgfCAnZGVmYXVsdCcsXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydD86IHN0cmluZywgdHlwZT86ICdnZXQnIHwgJ3Bvc3QnLCBob3N0PzogJ29zcycgfCAnc2VydmUnLCBpc011bHRpcGxlPzogYm9vbGVhbiB9LFxyXG4gIHRyZWVMaXN0PzogeyBrZXk6IHN0cmluZywgdGl0bGU6IHN0cmluZyB9W10sXHJcbiAgZW5kcz86IHN0cmluZyxcclxuICBwcm9wb3NhbD86IHN0cmluZyxcclxuICB0ZW1wPzogYW55LFxyXG4gIG1pbk51bWJlcj86IGFueSxcclxuICBub3ROdWxsPzogYm9vbGVhblxyXG4gIG56U2hvd1RpbWU/OiBib29sZWFuIHwgeyBuekZvcm1hdDogc3RyaW5nIH0sXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJGb3JtVmFsaWQge1xyXG4gIHR5cGU6ICdyZXF1aXJlZCcgfCAnZW1haWwnIHwgJ3RlbHBob25lJyB8ICdtYXhsZW5ndGgnIHwgJ21pbmxlbmd0aCcgfCAncGF0dGVybicgfCAnb3BlcmF0b3InLFxyXG4gIGVycm9yTGFiZWw6IHN0cmluZyxcclxuICBtYXhsZW5ndGg/OiBudW1iZXIsXHJcbiAgbWlubGVuZ3RoPzogbnVtYmVyLFxyXG4gIHBhdHRlcm5WYWx1ZT86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgZm9ybUJ1dHRvbiB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGlzU2hvdzogYm9vbGVhbixcclxuICBjb2RlOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGNvbG9yT3BlcmF0b3Ige1xyXG4gIGNvbG9yOiBzdHJpbmcsXHJcbiAgb3BlcmF0b3I6IHN0cmluZywvL+inhOWImVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyUXVleXJPcHQge1xyXG4gIGFjdGlvbnM/OiBUYWJsZUFjdGlvbltdLFxyXG4gIGlzSW5kZXg/OiBib29sZWFuLC8v5piv5ZCm5pi+56S65bqP5Y+3LFxyXG4gIGNvbG9yPzogY29sb3JPcGVyYXRvciwvL+minOiJslxyXG4gIGNoZWNrQm94Pzoge1xyXG4gICAgaXNTaG93Q2hlY2tib3g/OiBib29sZWFuLFxyXG4gICAgaXNSYWRpbz86IGJvb2xlYW4sXHJcbiAgICBpc0ZvcmJpZD86IGJvb2xlYW4sLy90cnVl5pe25Y+q5YWB6K6454K55Ye75aSa6YCJ5qGG6YCJ5oupXHJcbiAgfSxcclxuICAvLyBpc1Nob3dDaGVja2JveD86IGJvb2xlYW4sXHJcbiAgc2hvd051bT86IG51bWJlcixcclxuICB1cmw6IHN0cmluZyxcclxuICBzb3J0Pzogc3RyaW5nLFxyXG4gIGhlYWRlcnM/OiBBdHJRdWVyeUhlYWRlcltdLFxyXG4gIHRhYmxlczogVGFibGVbXSxcclxuICBpc0F1dG9RdWVyeT86IGJvb2xlYW4sLy90cnVl5pe25YCZ6buY6K6k6Kem5Y+R5p+l6K+iXHJcbiAgZGVmYXVsdFBhcmFtcz86IGpzb24sXHJcbiAgaXNIaWRlUXVlcnk/OiBib29sZWFuXHJcbiAgLy8gaXNSYWRpbz86Ym9vbGVhbixcclxuICAvLyBpc0ZvcmJpZD86Ym9vbGVhbiwvL3RydWXml7blj6rlhYHorrjngrnlh7vlpJrpgInmoYbpgInmi6lcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRhYmxlIHtcclxuICBuYW1lOiBzdHJpbmcsLy/ooajlpLTlkI3np7BcclxuICBrZXk/OiBzdHJpbmcsLy/lrp7pmYXmlbDmja7lrZfmrrVcclxuICBkZWZhdWx0VmFsPzogYW55LFxyXG4gIHNvcnRLZXk/OiBzdHJpbmcsLy/mmK/lkKbmjpLluo9cclxuICBzb3J0YWJsZT86IGJvb2xlYW4sXHJcbiAgdHlwZTogJ3RleHRjb2xvcicgfCAnZml4ZWRUZXh0JyB8ICd0ZXh0JyB8ICdsaW5rJyB8ICdhY3Rpb24nIHwgJ2ltYWdlJyB8ICdkYXRlJyB8ICdkYXRlVGltZScgfCAnc0RhdGVUaW1lJyB8ICdkaWN0JywvL+exu+Wei++8miDmloflrZfjgIHpk77mjqXjgIHmk43kvZxcclxuICBkaWN0Q29kZT86IHN0cmluZyxcclxuICBpc1Nob3c/OiBib29sZWFuLFxyXG4gIHdpZHRoPzogc3RyaW5nLC8vMTUwcHhcclxuICBhY3Rpb25zPzogVGFibGVBY3Rpb25bXSxcclxuICBpc1Jvd1NwYW4/OiBib29sZWFuLFxyXG4gIGlzUmlnaHQ/OiBib29sZWFuXHJcbiAgaXNMZWZ0PzogYm9vbGVhbixcclxuICBjb2xvcj86IGNvbG9yT3BlcmF0b3IsLy/popzoibJcclxuICBjb2xvclNob3c/OiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJRdWVyeUhlYWRlciB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIHR5cGU6ICdjYXNjYWRlcicgfCAndGV4dCcgfCAnbnVtYmVyJyB8ICdjaGVja2JveCcgfCAnc2VsZWN0JyB8ICdkYXRlcGlja2VyJyB8ICdzZWxlY3RDdXMnIHwgJ2RhdGVSYW5nZScgfCAnc2RhdGUnIHwgJ3RyZWVTZWxlY3QnLFxyXG4gIGtleTogc3RyaW5nLFxyXG4gIGlzU2hvdz86IGJvb2xlYW4sXHJcbiAgY29kZT86IHN0cmluZyxcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcclxuICBzcGFuPzogbnVtYmVyLFxyXG4gIGRpY3RDb2RlPzogc3RyaW5nLC8v5a2X5YW457yW56CBXHJcbiAgZGljdExpc3Q/OiBDdXNEaWN0W10sXHJcbiAgZGVmYXVsdFZhbD86IGFueSAvLyDpu5jorqTlgLxcclxuICBtYXhUYWdDb3VudD86IG51bWJlcixcclxuICBsc3Bhbj86IG51bWJlcixcclxuICBjc3Bhbj86IG51bWJlcixcclxuICBkaXNhYmxlQ2xlYXI/OiBib29sZWFuLFxyXG4gIHRyZWVMaXN0PzogeyBrZXk6IHN0cmluZywgdGl0bGU6IHN0cmluZyB9W11cclxuICAvKipcclxuICAgKiDmoLzlvI9cclxuICAgKiBjb252ZXJ0OidrZXl8aWQsdGl0bGV8cmVhbE5hbWUnKHRyZWVTZWxlY3QpXHJcbiAgICogICAgdmFsdWV8aWQsbGFiZWx8bmFtZShzZWxlY3RDdXMpXHJcbiAgICovXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydDogc3RyaW5nLCBpc011bHRpcGxlPzogYm9vbGVhbiB9LC8vY29udmVydDogbmV3S2V5fG9sZEtleSxuZXdLZXl8b2xkS2V5KOaOpeWPo+i/lOWbnueahOWAvClcclxuICBpY29uPzogeyBpc1Nob3c6IGJvb2xlYW4sIGNvZGU6IHN0cmluZywgaWNvbjogYW55IH0sXHJcbiAgZGF0ZU1vZGU/OiAnd2VlaycgfCAnbW9udGgnIHwgJ3llYXInLFxyXG4gIG56U2hvd1RpbWU/OiBib29sZWFuIHwgeyBuekZvcm1hdDogc3RyaW5nIH0sXHJcbiAgbnpTaG93Tm93PzogYm9vbGVhbixcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRhYmxlQWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogc3RyaW5nLFxyXG4gIHVybD86IHN0cmluZyxcclxuICBnVHlwZT86ICdub3JtYWwnIHwgJ3VwbG9hZCcsXHJcbiAgZGF0YT86IGFueSxcclxuICBmaXJzdERhdGE/OiBhbnksXHJcbiAgZGF0YXM/OiBhbnlbXSxcclxuICBpY29uPzogc3RyaW5nLFxyXG4gIG51bWJlck9mQ2hlY2tlZD86IG51bWJlcixcclxuICB0eXBlPzogJ3Jvd3MnIHwgJ3JvdycsXHJcbiAgb3BlcmF0b3I/OiBzdHJpbmcsLy/mmL7npLrmk43kvZznrKZcclxuICBidXR0b25UeXBlPzogJ3ByaW1hcnknIHwgJ2Rhc2hlZCcgfCAnZGFuZ2VyJyB8ICdkZWZhdWx0JyB8ICdsaW5rJyxcclxuICB2YWx1ZT86IGFueSxcclxuICB3aXRob3V0Um9sZT86IGJvb2xlYW4vL+S4jemcgOimgeadg+mZkOaOp+WItlxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRm9ybUFjdGlvbiB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGNvZGU6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGljdCB7XHJcbiAgaWQ6IHN0cmluZyxcclxuICB0eXBlTmFtZTogc3RyaW5nLFxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpY3RHcm91cCB7XHJcbiAgZ3JvdXBDb2RlOiBzdHJpbmcsXHJcbiAgZGljdHM6IERpY3RbXVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ3VzRGljdCB7XHJcbiAgbGFiZWw6IHN0cmluZyxcclxuICB2YWx1ZTogc3RyaW5nLFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW1hZ2VPcHRzIHtcclxuICBsaW1pdD86IG51bWJlcixcclxuICB1cGxvYWREaXI6IHN0cmluZyxcclxuICByZW1vdmVBY3Rpb24/OiBzdHJpbmcsXHJcbiAgaW1hZ2VMaXN0PzogYW55W10sXHJcbiAga2V5Pzogc3RyaW5nLFxyXG4gIGxhYmU/OiBzdHJpbmcsXHJcbiAgZmlsZU5hbWU/OiBzdHJpbmcsXHJcbiAgdXBsb2FkVHlwZT86ICdkcmFnJyB8ICcnLFxyXG4gIG56RmlsZVR5cGU/OiBzdHJpbmcsXHJcbiAga2VlcE5hbWU/OmJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGVxdWlwVGVzdERhdGEge1xyXG4gIGNvZGU6IHN0cmluZ1xyXG4gIGl0ZW1OYW1lOiBzdHJpbmdcclxuICB6aG91MTogbnVtYmVyXHJcbiAgemhvdTI6IG51bWJlclxyXG4gIHpob3UzOiBudW1iZXJcclxuICB6aG91NDogbnVtYmVyXHJcbiAgemhvdTU6IG51bWJlclxyXG4gIHpob3U2OiBudW1iZXJcclxuICBpc1dyb25nMT86IGJvb2xlYW5cclxuICBpc1dyb25nMj86IGJvb2xlYW5cclxuICBpc1dyb25nMz86IGJvb2xlYW5cclxuICBpc1dyb25nND86IGJvb2xlYW5cclxuICBpc1dyb25nNT86IGJvb2xlYW5cclxuICBpc1dyb25nNj86IGJvb2xlYW5cclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZWxlY3RBY3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb2RlOiBcIm5nTW9kZWxDaGFuZ2VcIiB8ICduek9wZW5DaGFuZ2UnLFxyXG4gIGRhdGE/OiBhbnksXHJcbiAga2V5Pzogc3RyaW5nLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJY29uIHtcclxuICAvKiogVHlwZSBmb3IgaWNvbiAqL1xyXG4gIHR5cGU6ICdjbGFzcycgfCAnaWNvbicgfCAnaWNvbmZvbnQnIHwgJ2ltZyc7XHJcbiAgLyoqIFZhbHVlIGZvciB0aGUgaWNvbiwgY2FuIGJlIHNldCBDbGFzcyBOYW1lLCBuei1pY29uIG9mIGBuelR5cGVgLCBpbWFnZSAqL1xyXG4gIHZhbHVlPzogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBhbnQgZGVzaWduIGljb24sIGRlZmF1bHQ6IGBvdXRsaW5lYCAqL1xyXG4gIHRoZW1lPzogJ291dGxpbmUnIHwgJ3R3b3RvbmUnIHwgJ2ZpbGwnO1xyXG4gIC8qKiBSb3RhdGUgaWNvbiB3aXRoIGFuaW1hdGlvbiwgZGVmYXVsdDogYGZhbHNlYCAqL1xyXG4gIHNwaW4/OiBib29sZWFuO1xyXG4gIC8qKiBPbmx5IHN1cHBvcnQgdGhlIHR3by10b25lIGljb24uIFNwZWNpZmljIHRoZSBwcmltYXJ5IGNvbG9yICovXHJcbiAgdHdvVG9uZUNvbG9yPzogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBpY29uIGZyb20gaWNvbmZvbnQgKi9cclxuICBpY29uZm9udD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZW51IHtcclxuICB0ZXh0Pzogc3RyaW5nO1xyXG4gIGxpbms/OiBzdHJpbmc7XHJcbiAgcmVhbExpbms/OiBzdHJpbmc7XHJcbiAgaXNTZWxlY3RlZD86IEJvb2xlYW47XHJcbiAgaXNPcGVuPzogQm9vbGVhbjtcclxuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XHJcbiAgLyoqIEljb24gZm9yIHRoZSBtZW51IGl0ZW0sIG9ubHkgdmFsaWQgZm9yIHRoZSBmaXJzdCBsZXZlbCBtZW51ICovXHJcbiAgaWNvbj86IHN0cmluZyB8IE1lbnVJY29uIHwgbnVsbDtcclxuICAvKiogQmFkZ2V0IGZvciB0aGUgbWVudSBpdGVtIHdoZW4gYGdyb3VwYCBpcyBgdHJ1ZWAgKi9cclxuICBvcGVyYXRpb24/OiBzdHJpbmc7XHJcbiAgLyoqIFdoZXRoZXIgc2hvcnRjdXQgbWVudSBpdGVtICovXHJcbiAgc2VxPzogbnVtYmVyO1xyXG4gIGxldmVsPzogbnVtYmVyO1xyXG4gIC8qKiBXaGV0ZXIgc2hvcnRjdXQgbWVudSByb290IG5vZGUgKi9cclxuICBsaW5rVHlwZT86IHN0cmluZztcclxuICAvKiogV2hldGhlciB0byBhbGxvdyByZXVzZSwgbmVlZCB0byBjb29wZXJhdGUgd2l0aCB0aGUgYHJldXNlLXRhYmAgY29tcG9uZW50ICovXHJcbiAgY2hpbGRyZW4/OiBNZW51W107XHJcbiAgaXNWaXNpYmxlPzogJzAnIHwgJzEnXHJcbn1cclxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRyLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvYmFzZS9hdHItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxHQUFHO0lBQ1Q7O09BRUc7SUFDSCxPQUFPLEVBQUUsRUFBRTtJQUNYLFVBQVUsRUFBRSxxQkFBcUI7SUFDakMsV0FBVyxFQUFFLEtBQUs7SUFDbEIsUUFBUSxFQUFFLEVBQUU7SUFDWixPQUFPLEVBQUUsV0FBVztJQUNwQjs7T0FFRztJQUNILFlBQVksRUFBRSxVQUFVO0lBQ3hCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsbUJBQW1CO0lBQ25CLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLGVBQWUsRUFBRSxDQUFDLFFBQXFCLEVBQUUsRUFBRTtRQUN6QyxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFxQixFQUFFLEVBQUU7UUFDMUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLDZEQUE2RDtRQUM3RCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sT0FBTyxXQUFXOztBQUNmLG1CQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDNUksaUJBQUssR0FBRyxxOUhBQXE5SCxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQW1Dai9ILE1BQU0sQ0FBTixJQUFZLFVBTVg7QUFORCxXQUFZLFVBQVU7SUFDcEIseUNBQUcsQ0FBQTtJQUNILDJDQUFJLENBQUE7SUFDSix5Q0FBRyxDQUFBO0lBQ0gsNkNBQUssQ0FBQTtJQUNMLHFEQUFTLENBQUE7QUFDWCxDQUFDLEVBTlcsVUFBVSxLQUFWLFVBQVUsUUFNckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBIZWFkZXJzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2VVdGlsfSBmcm9tIFwiLi4vdXRpbHMvbG9jYWxzdG9yYWdlLnV0aWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhdHJfc3RhdGljX2RhdGFzID0ge1xyXG4gIHRlc3Q6ICcxJyxcclxuICAvKipcclxuICAgKiBvc3PlnLDlnYDliY3nvIBcclxuICAgKi9cclxuICBPU1NfVVJMOiAnJyxcclxuICBPU1NfUE9MSUNZOiAndGhpcmQvb3NzL2dldFBvbGljeScsXHJcbiAgU1RPUkFHRV9QUkU6ICdEUV8nLFxyXG4gIG1lbnVfdXJsOiAnJyxcclxuICBkaWNfdXJsOiAnbWdyL2NvbWJvJyxcclxuICAvKipcclxuICAgKiDnmbvlvZXot6/nlLFcclxuICAgKi9cclxuICBsb2dpbl9yb3V0ZXI6ICcvcC9sb2dpbicsXHJcbiAgU0VSVkVSX1VSTDogJycsXHJcbiAgLy9odHRwIGhlYWTmmK/lkKbpu5jorqRoZWFkXHJcbiAgbmVlZE5vcm1hbEhlYWRlOiBmYWxzZSxcclxuICBnZXROb3JtYWxIZWFkZXI6IChfaGVhZGVyczogSHR0cEhlYWRlcnMpID0+IHtcclxuICAgIHJldHVybiBfaGVhZGVyc1xyXG4gIH0sXHJcbiAgZ2V0RGVmYXVsdEhlYWRlcjogKF9oZWFkZXJzOiBIdHRwSGVhZGVycykgPT4ge1xyXG4gICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJ4LWhlYWRlci1hdHJcIiwgXCJtYW5hZ2VcIik7XHJcbiAgICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcInRva2VuXCIsIExvY2FsU3RvcmFnZVV0aWwuZ2V0VXNlclRva2VuKCkpO1xyXG4gICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJ1c2VySWRcIiwgTG9jYWxTdG9yYWdlVXRpbC5nZXRVc2VySWQoKSk7XHJcbiAgICAvLyBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIm9yZ0NvZGVcIixUb29sc1V0aWwuZ2V0T3JnQ29kZSgpKTtcclxuICAgIHJldHVybiBfaGVhZGVycztcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgY29tbW9uRGF0YXMge1xyXG4gIHN0YXRpYyBsZXR0ZXJzID0gW1wiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCIsIFwiR1wiLCBcIkhcIiwgXCJJXCIsIFwiSlwiLCBcIktcIiwgXCJMXCIsIFwiTVwiLCBcIk5cIiwgXCJPXCIsIFwiUFwiLCBcIlFcIiwgXCJSXCIsIFwiU1wiLCBcIlRcIiwgXCJVXCIsIFwiVlwiLCBcIldcIiwgXCJYXCIsIFwiWVwiLCBcIlpcIl1cclxuICBzdGF0aWMgaWNvbnMgPSAnc3RlcC1iYWNrd2FyZCxzdGVwLWZvcndhcmQsZmFzdC1iYWNrd2FyZCxmYXN0LWZvcndhcmQsc2hyaW5rLGFycm93cy1hbHQsZG93bix1cCxsZWZ0LHJpZ2h0LGNhcmV0LXVwLGNhcmV0LWRvd24sY2FyZXQtbGVmdCxjYXJldC1yaWdodCx1cC1jaXJjbGUsZG93bi1jaXJjbGUsbGVmdC1jaXJjbGUscmlnaHQtY2lyY2xlLGRvdWJsZS1yaWdodCxkb3VibGUtbGVmdCx2ZXJ0aWNhbC1sZWZ0LHZlcnRpY2FsLXJpZ2h0LHZlcnRpY2FsLWFsaWduLXRvcCx2ZXJ0aWNhbC1hbGlnbi1taWRkbGUsdmVydGljYWwtYWxpZ24tYm90dG9tLGZvcndhcmQsYmFja3dhcmQscm9sbGJhY2ssZW50ZXIscmV0d2VldCxzd2FwLHN3YXAtbGVmdCxzd2FwLXJpZ2h0LGFycm93LXVwLGFycm93LWRvd24sYXJyb3ctbGVmdCxhcnJvdy1yaWdodCxwbGF5LWNpcmNsZSx1cC1zcXVhcmUsZG93bi1zcXVhcmUsbGVmdC1zcXVhcmUscmlnaHQtc3F1YXJlLGxvZ2luLGxvZ291dCxtZW51LWZvbGQsbWVudS11bmZvbGQsYm9yZGVyLWJvdHRvbSxib3JkZXItaG9yaXpvbnRhbCxib3JkZXItaW5uZXIsYm9yZGVyLW91dGVyLGJvcmRlci1sZWZ0LGJvcmRlci1yaWdodCxib3JkZXItdG9wLGJvcmRlci12ZXJ0aWNsZSxwaWMtY2VudGVyLHBpYy1sZWZ0LHBpYy1yaWdodCxyYWRpdXMtYm90dG9tbGVmdCxyYWRpdXMtYm90dG9tcmlnaHQscmFkaXVzLXVwbGVmdCxyYWRpdXMtdXByaWdodCxmdWxsc2NyZWVuLGZ1bGxzY3JlZW4tZXhpdCxxdWVzdGlvbixxdWVzdGlvbi1jaXJjbGUscGx1cyxwbHVzLWNpcmNsZSxwYXVzZSxwYXVzZS1jaXJjbGUsbWludXMsbWludXMtY2lyY2xlLHBsdXMtc3F1YXJlLG1pbnVzLXNxdWFyZSxpbmZvLGluZm8tY2lyY2xlLGV4Y2xhbWF0aW9uLGV4Y2xhbWF0aW9uLWNpcmNsZSxjbG9zZSxjbG9zZS1jaXJjbGUsY2xvc2Utc3F1YXJlLGNoZWNrLGNoZWNrLWNpcmNsZSxjaGVjay1zcXVhcmUsY2xvY2stY2lyY2xlLHdhcm5pbmcsaXNzdWVzLWNsb3NlLHN0b3AsZWRpdCxmb3JtLGNvcHksc2Npc3NvcixkZWxldGUsc25pcHBldHMsZGlmZixoaWdobGlnaHQsYWxpZ24tY2VudGVyLGFsaWduLWxlZnQsYWxpZ24tcmlnaHQsYmctY29sb3JzLGJvbGQsaXRhbGljLHVuZGVybGluZSxzdHJpa2V0aHJvdWdoLHJlZG8sdW5kbyx6b29tLWluLHpvb20tb3V0LGZvbnQtY29sb3JzLGZvbnQtc2l6ZSxsaW5lLWhlaWdodCxkYXNoLHNtYWxsLWRhc2gsc29ydC1hc2NlbmRpbmcsc29ydC1kZXNjZW5kaW5nLGRyYWcsb3JkZXJlZC1saXN0LHVub3JkZXJlZC1saXN0LHJhZGl1cy1zZXR0aW5nLGNvbHVtbi13aWR0aCxjb2x1bW4taGVpZ2h0LGFyZWEtY2hhcnQscGllLWNoYXJ0LGJhci1jaGFydCxkb3QtY2hhcnQsbGluZS1jaGFydCxyYWRhci1jaGFydCxoZWF0LW1hcCxmYWxsLHJpc2Usc3RvY2ssYm94LXBsb3QsZnVuZCxzbGlkZXJzLGFuZHJvaWQsYXBwbGUsd2luZG93cyxpZSxjaHJvbWUsZ2l0aHViLGFsaXdhbmd3YW5nLGRpbmdkaW5nLHdlaWJvLXNxdWFyZSx3ZWliby1jaXJjbGUsdGFvYmFvLWNpcmNsZSxodG1sNSx3ZWlibyx0d2l0dGVyLHdlY2hhdCx5b3V0dWJlLGFsaXBheS1jaXJjbGUsdGFvYmFvLHNreXBlLHFxLG1lZGl1bS13b3JrbWFyayxnaXRsYWIsbWVkaXVtLGxpbmtlZGluLGdvb2dsZS1wbHVzLGRyb3Bib3gsZmFjZWJvb2ssY29kZXBlbixjb2RlLXNhbmRib3gsYW1hem9uLGdvb2dsZSxjb2RlcGVuLWNpcmNsZSxhbGlwYXksYW50LWRlc2lnbixhbnQtY2xvdWQsYWxpeXVuLHpoaWh1LHNsYWNrLHNsYWNrLXNxdWFyZSxiZWhhbmNlLGJlaGFuY2Utc3F1YXJlLGRyaWJiYmxlLGRyaWJiYmxlLXNxdWFyZSxpbnN0YWdyYW0seXVxdWUsYWxpYmFiYSx5YWhvbyxyZWRkaXQsc2tldGNoLGFsZXJ0LGFpbSxhY2NvdW50LWJvb2ssYXBhcnRtZW50LGFwaSxhcHBzdG9yZSxhdWRpby1tdXRlZCxhdWRpdCxiYW5rLGJhcmNvZGUsYmFycyxibG9jayxib29rLGJlbGwsYXBwc3RvcmUtYWRkLGF1ZGlvLGJvcmRlcixib3JkZXJsZXNzLXRhYmxlLGJ1ZyxicmFuY2hlcyxjYW1lcmEsY2FsY3VsYXRvcixjYWxlbmRhcixidWlsZCxjYXJyeS1vdXQsYnVsYixjYXIsY2xlYXIsY2ksY2xvdWQtZG93bmxvYWQsY2xvdWQsY2xvdWQtc3luYyxjbG91ZC1zZXJ2ZXIsY2xvdWQtdXBsb2FkLGNvZGUsY29mZmVlLGNvbXByZXNzLGNvbXBhc3MsY29tbWVudCxjaS1jaXJjbGUsY29udGFpbmVyLGNvbnRyb2wsY29weXJpZ2h0LGNyZWRpdC1jYXJkLGNsdXN0ZXIsY3VzdG9tZXItc2VydmljZSxjb250YWN0cyxjb25zb2xlLXNxbCxkYXNoYm9hcmQsZGF0YWJhc2UsY29weXJpZ2h0LWNpcmNsZSxkZWxldGUtY29sdW1uLGRlc2t0b3AsZGVwbG95bWVudC11bml0LGRlbGl2ZXJlZC1wcm9jZWR1cmUsZGlzY29ubmVjdCxkaW5ndGFsayxkb2xsYXItY2lyY2xlLGRpc2xpa2UsZGVsZXRlLXJvdyxkb2xsYXIsY3Jvd24sZG93bmxvYWQsZWxsaXBzaXMsZW52aXJvbm1lbnQsZXVyby1jaXJjbGUsZXhjZXB0aW9uLGV4cGFuZC1hbHQsZXVybyxleHBlcmltZW50LGV4cG9ydCxleHBhbmQsZXllLWludmlzaWJsZSxleWUsZmlsZS1hZGQsZmllbGQtc3RyaW5nLGZpbGUtZXhjbGFtYXRpb24sZmlsZS1kb25lLGZpZWxkLXRpbWUsZmlsZS1leGNlbCxmaWVsZC1iaW5hcnksZmlsZS1naWYsZmlsZS1pbWFnZSxmaWxlLGZpbGUtbWFya2Rvd24sZmlsZS1wcHQsZmlsZS1wZGYsZmllbGQtbnVtYmVyLGZpbGUtc2VhcmNoLGZpbGUtc3luYyxmaWxlLWpwZyxmaWxlLXRleHQsZmlsdGVyLGZpbGUtemlwLGZsYWcsZm9sZGVyLWFkZCxmaWxlLXVua25vd24sZm9sZGVyLW9wZW4sZmlyZSxmaWxlLXByb3RlY3QsZm9sZGVyLXZpZXcsZm9sZGVyLGZvcmssZm9ybWF0LXBhaW50ZXIsZnJvd24sZnVuZC1wcm9qZWN0aW9uLXNjcmVlbixnaWZ0LGdhdGV3YXksZnVuZC12aWV3LGdpZixmdW5uZWwtcGxvdCxnb2xkLGdsb2JhbCxncm91cCxoZGQsZnVuY3Rpb24saGlzdG9yeSxmaWxlLXdvcmQsaG9tZSxpZGNhcmQsaG91cmdsYXNzLGhlYXJ0LGluc2VydC1yb3ctYmVsb3csaW1wb3J0LGluc2VydC1yb3ctbGVmdCxpbnNlcnQtcm93LWFib3ZlLGluc2VydC1yb3ctcmlnaHQsa2V5LGluYm94LGluc3VyYW5jZSxsYXB0b3AsbGlrZSxsaW5lLGxpbmssbG9hZGluZy0zLXF1YXJ0ZXJzLGxvYWRpbmcsbG9jayxtYW4sbWFpbCxtYWMtY29tbWFuZCxtZWRpY2luZS1ib3gsbGF5b3V0LG1laCxpbnRlcmFjdGlvbixtZXNzYWdlLG1lbnUsbWVyZ2UtY2VsbHMsbW9iaWxlLG1vbmV5LWNvbGxlY3Qsbm9kZS1pbmRleCxtb25pdG9yLG5vZGUtZXhwYW5kLG1vcmUsbnVtYmVyLG5vdGlmaWNhdGlvbixvbmUtdG8tb25lLHBlcmNlbnRhZ2UscGhvbmUscGFwZXItY2xpcCxwYXJ0aXRpb24scGljdHVyZSxub2RlLWNvbGxhcHNlLHBsYXktc3F1YXJlLHBheS1jaXJjbGUscG91bmQscHJvZmlsZSxwcm9qZWN0LHByb3BlcnR5LXNhZmV0eSxwb3dlcm9mZixwdXNocGluLHFyY29kZSxwcmludGVyLHBvdW5kLWNpcmNsZSxwdWxsLXJlcXVlc3QscmVzdCxyZWFkLHJlbG9hZCxyZWNvbmNpbGlhdGlvbixyb2JvdCxyb2NrZXQscm90YXRlLXJpZ2h0LHNhZmV0eS1jZXJ0aWZpY2F0ZSxyZWQtZW52ZWxvcGUscm90YXRlLWxlZnQsc2F2ZSxzYWZldHksc2VhcmNoLHNlY3VyaXR5LXNjYW4sc2NhbixzZW5kLHNldHRpbmcsc2VsZWN0LHNoYWtlLHNob3BwaW5nLWNhcnQsc2lzdGVybm9kZSxzaG9wLHNob3BwaW5nLHNoYXJlLWFsdCxzY2hlZHVsZSxza2luLHNtaWxlLHNvbHV0aW9uLHNvdW5kLHNwbGl0LWNlbGxzLHN0YXIsc3Vibm9kZSx0YWdzLHRhYmxldCx0YWcsdGFibGUsc3dpdGNoZXIsc3luYyx0ZWFtLHRvb2wsdHJhZGVtYXJrLWNpcmNsZSx0aHVuZGVyYm9sdCx0by10b3AsdHJhbnNsYXRpb24sdHJhZGVtYXJrLHRyb3BoeSx1bmdyb3VwLHVubG9jayx1cGxvYWQsdHJhbnNhY3Rpb24sdXNlci1kZWxldGUsdXNiLHVzZXItYWRkLHVzZXJncm91cC1kZWxldGUsdmlkZW8tY2FtZXJhLWFkZCx2ZXJpZmllZCx1c2VyZ3JvdXAtYWRkLHVzZXIsdXNlci1zd2l0Y2gsdmlkZW8tY2FtZXJhLHdpZmksd2FsbGV0LHdoYXRzLWFwcCx3b21hbixhcHBzdG9yZScuc3BsaXQoJywnKVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UganNvbiBleHRlbmRzIE9iamVjdCB7XHJcbiAgW2tleTogc3RyaW5nXTogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZXJ2ZXJQYWdpbmF0aW9uU3RhbmRhcmQge1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XHJcbiAgc2hvd0NvdW50OiBudW1iZXI7XHJcbiAgdG90YWxSZXN1bHQ6IG51bWJlcjtcclxuICB0b3RhbFBhZ2U/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUmVzcG9uc2VEYXRhU3RhbmRhcmQge1xyXG4gIHN0YXRlOiBudW1iZXI7IC8vIOS4ujHmiY3mmK/miJDlip9cclxuICBkYXRhOiBqc29uIHwgW3t9XSB8IG9iamVjdCB8IHN0cmluZyB8IGFueTsgLy/msqHmnInlgLwgZGF0YTogJydcclxuICBtZXNzOiBzdHJpbmc7IC8v6L+U5Zue55qE5raI5oGvXHJcbiAgcGFnZT86IFNlcnZlclBhZ2luYXRpb25TdGFuZGFyZDtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUnNlcG9uc2VUcmFuc2Zvcm1DZWxsIHtcclxuICBba2V5OiBzdHJpbmddOiBqc29uXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwT3B0aW9ucyB7XHJcbiAgaGVhZGVycz86IHt9LFxyXG4gIGlzSnNvbkVuY29kZT86IGJvb2xlYW5cclxuICBpc1VybEVuY29kZT86IGJvb2xlYW5cclxuICBpc0F1dG9TaG93TWVzc2FnZT86IGJvb2xlYW5cclxuICBpc1dpdGhDcmVkZW50aWFscz86IGJvb2xlYW5cclxuICBpc0NvbW1vbkh0dHBIZWFkZXI/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFVzZXJBY3Rpb24ge1xyXG4gIEFERCxcclxuICBFRElULFxyXG4gIERFTCxcclxuICBRVUVSWSxcclxuICBTVVBQRVJBRERcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEVDaGFydHNPcHRpb24ge1xyXG4gIHRpdGxlPzogYW55LFxyXG4gIGxlZ2VuZD86IGFueSxcclxuICBncmlkPzogYW55LFxyXG4gIGJydXNoPzogYW55LFxyXG4gIHRvb2xib3g/OiBhbnksXHJcbiAgdG9vbHRpcD86IGFueSxcclxuICBkYXRhc2V0PzogYW55LFxyXG4gIHhBeGlzPzoge1xyXG4gICAgdHlwZT86ICdjYXRlZ29yeScsXHJcbiAgICBkYXRhPzogc3RyaW5nW10sXHJcbiAgICBib3VuZGFyeUdhcD86IGJvb2xlYW4sXHJcbiAgICBzaG93PzogYm9vbGVhbixcclxuICB9LFxyXG4gIHlBeGlzPzogYW55LC8veyAgICBzaG93OmZhbHNlLCAgICB0eXBlOiAndmFsdWUnLCAgICBtaW5JbnRlcnZhbDogMSx9W11cclxuICBzZXJpZXM/OiB7XHJcbiAgICBuYW1lPzogc3RyaW5nLFxyXG4gICAgZGF0YT86IGFueVtdLFxyXG4gICAgaXRlbVN0eWxlPzogYW55LFxyXG4gICAgc3RhY2s/OiBhbnksXHJcbiAgICBlbXBoYXNpcz86IGFueSxcclxuICAgIGxhYmVsPzogYW55LFxyXG4gICAgcmFkaXVzPzogYW55W10sXHJcbiAgICBzbW9vdGg/OiBib29sZWFuLFxyXG4gICAgc2VyaWVzTGF5b3V0Qnk/OiBzdHJpbmcsXHJcbiAgICB0eXBlPzogJ2JhcicgfCAncGllJyB8ICdsaW5lJyxcclxuICAgIGJhY2tncm91bmRTdHlsZT86IGFueVxyXG4gIH1bXVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybU9wdCB7XHJcbiAgdHlwZTogJ2FkZCcgfCAnZWRpdCcgfCAndmlldycsXHJcbiAgbGF5b3V0PzogXCJmdWxsXCIgfCAnMWwyYycgfCAnMWwxYycsXHJcbiAgaXRlbXM6IEF0ckZvcm1EZXRhaWxbXSwvL+ihqOWNlemhueebrlxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybURldGFpbCB7XHJcbiAgbGFiZWw6IHN0cmluZyxcclxuICB0eXBlOiAnY2FzY2FkZXInIHwgJ3JhZGlvJyB8ICd0ZXh0JyB8ICdpbWFnZScgfCAnc2VsZWN0JyB8ICdkYXRlJyB8ICdudW1iZXInIHwgJ3RlbHBob25lJyB8ICdwYXNzd29yZCcgfCAnY2hlY2tib3gnXHJcbiAgICB8ICdlZGl0b3InIHwgJ3RleHRhcmVhJyB8ICdkYXRlVGltZScgfCAndGl0bGUnIHwgJ2RhdGVSYW5nZScgfCAnc2VsZWN0YycgfCAnc2VsZWN0SWNvbicgfCAndHJlZVNlbGVjdCcgfCAnc3dpdGNoJyB8ICdidXR0b25zJyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc0hpZGRlbj86IGJvb2xlYW4sXHJcbiAgZGVmYXVsdFZhbHVlPzogYW55LFxyXG4gIHZhbHVlPzogYW55LC8v57yW6L6R5LiL5Y6f5aeL5pWw5YC8XHJcbiAgZGljdENvZGU/OiBzdHJpbmcsLy9zZWxlY3Qg5qih5byP5LiL6YWN572uXHJcbiAgc3Bhbj86IG51bWJlciwvL+aYvuekuuWuveW6plxyXG4gIHZhbGlkYXRvcnM/OiBBdHJGb3JtVmFsaWRbXSwvL+mqjOivgeadoeS7tlxyXG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuIHwgc3RyaW5nLC8v6ZqQ5oCn5p2h5Lu2IOaXoOmcgOWhq+WGmSwgc3RyaW5n57G75Z6L5qC85byP5ZCMb3BlcmF0b3JcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcclxuICBpbWFnZU9wdHM/OiBJbWFnZU9wdHMsXHJcbiAgZWRpdENvbnRlbnQ/OiBzdHJpbmcsXHJcbiAgaGVpZ2h0PzogbnVtYmVyLC8vZWRpdG9y5pyJ5pWIXHJcbiAgZGlzYWJsZT86IGJvb2xlYW4sXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgcm93cz86IG51bWJlciwvL3RleHRhcmVhIOaYvuekuuihjOaVsFxyXG4gIG9wZXJhdG9yPzogc3RyaW5nLC8v5pi+56S65pON5L2c56ymIOagvOW8jyDlpoI6c3RhdHVzfGVxfDBcclxuICBidXR0b24/OiBmb3JtQnV0dG9uLFxyXG4gIHJlYWRvbmx5PzogYm9vbGVhbixcclxuICBkYXRlRm9ybWF0Pzogc3RyaW5nLFxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIG56TW9kZT86ICdtdWx0aXBsZScgfCAndGFncycgfCAnZGVmYXVsdCcsXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydD86IHN0cmluZywgdHlwZT86ICdnZXQnIHwgJ3Bvc3QnLCBob3N0PzogJ29zcycgfCAnc2VydmUnLCBpc011bHRpcGxlPzogYm9vbGVhbiB9LFxyXG4gIHRyZWVMaXN0PzogeyBrZXk6IHN0cmluZywgdGl0bGU6IHN0cmluZyB9W10sXHJcbiAgZW5kcz86IHN0cmluZyxcclxuICBwcm9wb3NhbD86IHN0cmluZyxcclxuICB0ZW1wPzogYW55LFxyXG4gIG1pbk51bWJlcj86IGFueSxcclxuICBub3ROdWxsPzogYm9vbGVhblxyXG4gIG56U2hvd1RpbWU/OiBib29sZWFuIHwgeyBuekZvcm1hdDogc3RyaW5nIH0sXHJcbiAgYnV0dG9ucz86IGZvcm1CdXR0b25bXVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybVZhbGlkIHtcclxuICB0eXBlOiAncmVxdWlyZWQnIHwgJ2VtYWlsJyB8ICd0ZWxwaG9uZScgfCAnbWF4bGVuZ3RoJyB8ICdtaW5sZW5ndGgnIHwgJ3BhdHRlcm4nIHwgJ29wZXJhdG9yJyxcclxuICBlcnJvckxhYmVsOiBzdHJpbmcsXHJcbiAgbWF4bGVuZ3RoPzogbnVtYmVyLFxyXG4gIG1pbmxlbmd0aD86IG51bWJlcixcclxuICBwYXR0ZXJuVmFsdWU/OiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGZvcm1CdXR0b24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBpc1Nob3c6IGJvb2xlYW4sXHJcbiAgY29kZTogc3RyaW5nLFxyXG4gIGJ0blR5cGU/OnN0cmluZyxcclxuICBvcGVyYXRvcj86c3RyaW5nLC8vLy/mmL7npLrmk43kvZznrKYg5qC85byPIOWmgjpzdGF0dXN8ZXF8MFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgY29sb3JPcGVyYXRvciB7XHJcbiAgY29sb3I6IHN0cmluZyxcclxuICBvcGVyYXRvcjogc3RyaW5nLC8v6KeE5YiZXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJRdWV5ck9wdCB7XHJcbiAgYWN0aW9ucz86IFRhYmxlQWN0aW9uW10sXHJcbiAgaXNJbmRleD86IGJvb2xlYW4sLy/mmK/lkKbmmL7npLrluo/lj7csXHJcbiAgY29sb3I/OiBjb2xvck9wZXJhdG9yLC8v6aKc6ImyXHJcbiAgY2hlY2tCb3g/OiB7XHJcbiAgICBpc1Nob3dDaGVja2JveD86IGJvb2xlYW4sXHJcbiAgICBpc1JhZGlvPzogYm9vbGVhbixcclxuICAgIGlzRm9yYmlkPzogYm9vbGVhbiwvL3RydWXml7blj6rlhYHorrjngrnlh7vlpJrpgInmoYbpgInmi6lcclxuICB9LFxyXG4gIC8vIGlzU2hvd0NoZWNrYm94PzogYm9vbGVhbixcclxuICBzaG93TnVtPzogbnVtYmVyLFxyXG4gIHVybDogc3RyaW5nLFxyXG4gIHNvcnQ/OiBzdHJpbmcsXHJcbiAgaGVhZGVycz86IEF0clF1ZXJ5SGVhZGVyW10sXHJcbiAgdGFibGVzOiBUYWJsZVtdLFxyXG4gIGlzQXV0b1F1ZXJ5PzogYm9vbGVhbiwvL3RydWXml7blgJnpu5jorqTop6blj5Hmn6Xor6JcclxuICBkZWZhdWx0UGFyYW1zPzoganNvbixcclxuICBpc0hpZGVRdWVyeT86IGJvb2xlYW5cclxuICAvLyBpc1JhZGlvPzpib29sZWFuLFxyXG4gIC8vIGlzRm9yYmlkPzpib29sZWFuLC8vdHJ1ZeaXtuWPquWFgeiuuOeCueWHu+WkmumAieahhumAieaLqVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVGFibGUge1xyXG4gIG5hbWU6IHN0cmluZywvL+ihqOWktOWQjeensFxyXG4gIGtleT86IHN0cmluZywvL+WunumZheaVsOaNruWtl+autVxyXG4gIGRlZmF1bHRWYWw/OiBhbnksXHJcbiAgc29ydEtleT86IHN0cmluZywvL+aYr+WQpuaOkuW6j1xyXG4gIHNvcnRhYmxlPzogYm9vbGVhbixcclxuICB0eXBlOiAndGV4dGNvbG9yJyB8ICdmaXhlZFRleHQnIHwgJ3RleHQnIHwgJ2xpbmsnIHwgJ2FjdGlvbicgfCAnaW1hZ2UnIHwgJ2RhdGUnIHwgJ2RhdGVUaW1lJyB8ICdzRGF0ZVRpbWUnIHwgJ2RpY3QnLC8v57G75Z6L77yaIOaWh+Wtl+OAgemTvuaOpeOAgeaTjeS9nFxyXG4gIGRpY3RDb2RlPzogc3RyaW5nLFxyXG4gIGlzU2hvdz86IGJvb2xlYW4sXHJcbiAgd2lkdGg/OiBzdHJpbmcsLy8xNTBweFxyXG4gIGFjdGlvbnM/OiBUYWJsZUFjdGlvbltdLFxyXG4gIGlzUm93U3Bhbj86IGJvb2xlYW4sXHJcbiAgaXNSaWdodD86IGJvb2xlYW5cclxuICBpc0xlZnQ/OiBib29sZWFuLFxyXG4gIGNvbG9yPzogY29sb3JPcGVyYXRvciwvL+minOiJslxyXG4gIGNvbG9yU2hvdz86IHN0cmluZyxcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0clF1ZXJ5SGVhZGVyIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgdHlwZTogJ2Nhc2NhZGVyJyB8ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2NoZWNrYm94JyB8ICdzZWxlY3QnIHwgJ2RhdGVwaWNrZXInIHwgJ3NlbGVjdEN1cycgfCAnZGF0ZVJhbmdlJyB8ICdzZGF0ZScgfCAndHJlZVNlbGVjdCcsXHJcbiAga2V5OiBzdHJpbmcsXHJcbiAgaXNTaG93PzogYm9vbGVhbixcclxuICBjb2RlPzogc3RyaW5nLFxyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxyXG4gIHNwYW4/OiBudW1iZXIsXHJcbiAgZGljdENvZGU/OiBzdHJpbmcsLy/lrZflhbjnvJbnoIFcclxuICBkaWN0TGlzdD86IEN1c0RpY3RbXSxcclxuICBkZWZhdWx0VmFsPzogYW55IC8vIOm7mOiupOWAvFxyXG4gIG1heFRhZ0NvdW50PzogbnVtYmVyLFxyXG4gIGxzcGFuPzogbnVtYmVyLFxyXG4gIGNzcGFuPzogbnVtYmVyLFxyXG4gIGRpc2FibGVDbGVhcj86IGJvb2xlYW4sXHJcbiAgdHJlZUxpc3Q/OiB7IGtleTogc3RyaW5nLCB0aXRsZTogc3RyaW5nIH1bXVxyXG4gIC8qKlxyXG4gICAqIOagvOW8j1xyXG4gICAqIGNvbnZlcnQ6J2tleXxpZCx0aXRsZXxyZWFsTmFtZScodHJlZVNlbGVjdClcclxuICAgKiAgICB2YWx1ZXxpZCxsYWJlbHxuYW1lKHNlbGVjdEN1cylcclxuICAgKi9cclxuICBzZWxlY3RVcmw/OiB7IHVybDogc3RyaW5nLCBjb252ZXJ0OiBzdHJpbmcsIGlzTXVsdGlwbGU/OiBib29sZWFuIH0sLy9jb252ZXJ0OiBuZXdLZXl8b2xkS2V5LG5ld0tleXxvbGRLZXko5o6l5Y+j6L+U5Zue55qE5YC8KVxyXG4gIGljb24/OiB7IGlzU2hvdzogYm9vbGVhbiwgY29kZTogc3RyaW5nLCBpY29uOiBhbnkgfSxcclxuICBkYXRlTW9kZT86ICd3ZWVrJyB8ICdtb250aCcgfCAneWVhcicsXHJcbiAgbnpTaG93VGltZT86IGJvb2xlYW4gfCB7IG56Rm9ybWF0OiBzdHJpbmcgfSxcclxuICBuelNob3dOb3c/OiBib29sZWFuLFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVGFibGVBY3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb2RlOiBzdHJpbmcsXHJcbiAgdXJsPzogc3RyaW5nLFxyXG4gIGdUeXBlPzogJ25vcm1hbCcgfCAndXBsb2FkJyxcclxuICBkYXRhPzogYW55LFxyXG4gIGZpcnN0RGF0YT86IGFueSxcclxuICBkYXRhcz86IGFueVtdLFxyXG4gIGljb24/OiBzdHJpbmcsXHJcbiAgbnVtYmVyT2ZDaGVja2VkPzogbnVtYmVyLFxyXG4gIHR5cGU/OiAncm93cycgfCAncm93JyxcclxuICBvcGVyYXRvcj86IHN0cmluZywvL+aYvuekuuaTjeS9nOesplxyXG4gIGJ1dHRvblR5cGU/OiAncHJpbWFyeScgfCAnZGFzaGVkJyB8ICdkYW5nZXInIHwgJ2RlZmF1bHQnIHwgJ2xpbmsnLFxyXG4gIHZhbHVlPzogYW55LFxyXG4gIHdpdGhvdXRSb2xlPzogYm9vbGVhbi8v5LiN6ZyA6KaB5p2D6ZmQ5o6n5Yi2XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBGb3JtQWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWN0IHtcclxuICBpZDogc3RyaW5nLFxyXG4gIHR5cGVOYW1lOiBzdHJpbmcsXHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGljdEdyb3VwIHtcclxuICBncm91cENvZGU6IHN0cmluZyxcclxuICBkaWN0czogRGljdFtdXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDdXNEaWN0IHtcclxuICBsYWJlbDogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJbWFnZU9wdHMge1xyXG4gIGxpbWl0PzogbnVtYmVyLFxyXG4gIHVwbG9hZERpcjogc3RyaW5nLFxyXG4gIHJlbW92ZUFjdGlvbj86IHN0cmluZyxcclxuICBpbWFnZUxpc3Q/OiBhbnlbXSxcclxuICBrZXk/OiBzdHJpbmcsXHJcbiAgbGFiZT86IHN0cmluZyxcclxuICBmaWxlTmFtZT86IHN0cmluZyxcclxuICB1cGxvYWRUeXBlPzogJ2RyYWcnIHwgJycsXHJcbiAgbnpGaWxlVHlwZT86IHN0cmluZyxcclxuICBrZWVwTmFtZT86IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGVxdWlwVGVzdERhdGEge1xyXG4gIGNvZGU6IHN0cmluZ1xyXG4gIGl0ZW1OYW1lOiBzdHJpbmdcclxuICB6aG91MTogbnVtYmVyXHJcbiAgemhvdTI6IG51bWJlclxyXG4gIHpob3UzOiBudW1iZXJcclxuICB6aG91NDogbnVtYmVyXHJcbiAgemhvdTU6IG51bWJlclxyXG4gIHpob3U2OiBudW1iZXJcclxuICBpc1dyb25nMT86IGJvb2xlYW5cclxuICBpc1dyb25nMj86IGJvb2xlYW5cclxuICBpc1dyb25nMz86IGJvb2xlYW5cclxuICBpc1dyb25nND86IGJvb2xlYW5cclxuICBpc1dyb25nNT86IGJvb2xlYW5cclxuICBpc1dyb25nNj86IGJvb2xlYW5cclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZWxlY3RBY3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb2RlOiBcIm5nTW9kZWxDaGFuZ2VcIiB8ICduek9wZW5DaGFuZ2UnLFxyXG4gIGRhdGE/OiBhbnksXHJcbiAga2V5Pzogc3RyaW5nLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJY29uIHtcclxuICAvKiogVHlwZSBmb3IgaWNvbiAqL1xyXG4gIHR5cGU6ICdjbGFzcycgfCAnaWNvbicgfCAnaWNvbmZvbnQnIHwgJ2ltZyc7XHJcbiAgLyoqIFZhbHVlIGZvciB0aGUgaWNvbiwgY2FuIGJlIHNldCBDbGFzcyBOYW1lLCBuei1pY29uIG9mIGBuelR5cGVgLCBpbWFnZSAqL1xyXG4gIHZhbHVlPzogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBhbnQgZGVzaWduIGljb24sIGRlZmF1bHQ6IGBvdXRsaW5lYCAqL1xyXG4gIHRoZW1lPzogJ291dGxpbmUnIHwgJ3R3b3RvbmUnIHwgJ2ZpbGwnO1xyXG4gIC8qKiBSb3RhdGUgaWNvbiB3aXRoIGFuaW1hdGlvbiwgZGVmYXVsdDogYGZhbHNlYCAqL1xyXG4gIHNwaW4/OiBib29sZWFuO1xyXG4gIC8qKiBPbmx5IHN1cHBvcnQgdGhlIHR3by10b25lIGljb24uIFNwZWNpZmljIHRoZSBwcmltYXJ5IGNvbG9yICovXHJcbiAgdHdvVG9uZUNvbG9yPzogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBpY29uIGZyb20gaWNvbmZvbnQgKi9cclxuICBpY29uZm9udD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZW51IHtcclxuICB0ZXh0Pzogc3RyaW5nO1xyXG4gIGxpbms/OiBzdHJpbmc7XHJcbiAgcmVhbExpbms/OiBzdHJpbmc7XHJcbiAgaXNTZWxlY3RlZD86IEJvb2xlYW47XHJcbiAgaXNPcGVuPzogQm9vbGVhbjtcclxuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XHJcbiAgLyoqIEljb24gZm9yIHRoZSBtZW51IGl0ZW0sIG9ubHkgdmFsaWQgZm9yIHRoZSBmaXJzdCBsZXZlbCBtZW51ICovXHJcbiAgaWNvbj86IHN0cmluZyB8IE1lbnVJY29uIHwgbnVsbDtcclxuICAvKiogQmFkZ2V0IGZvciB0aGUgbWVudSBpdGVtIHdoZW4gYGdyb3VwYCBpcyBgdHJ1ZWAgKi9cclxuICBvcGVyYXRpb24/OiBzdHJpbmc7XHJcbiAgLyoqIFdoZXRoZXIgc2hvcnRjdXQgbWVudSBpdGVtICovXHJcbiAgc2VxPzogbnVtYmVyO1xyXG4gIGxldmVsPzogbnVtYmVyO1xyXG4gIC8qKiBXaGV0ZXIgc2hvcnRjdXQgbWVudSByb290IG5vZGUgKi9cclxuICBsaW5rVHlwZT86IHN0cmluZztcclxuICAvKiogV2hldGhlciB0byBhbGxvdyByZXVzZSwgbmVlZCB0byBjb29wZXJhdGUgd2l0aCB0aGUgYHJldXNlLXRhYmAgY29tcG9uZW50ICovXHJcbiAgY2hpbGRyZW4/OiBNZW51W107XHJcbiAgaXNWaXNpYmxlPzogJzAnIHwgJzEnXHJcbn1cclxuIl19
@@ -373,13 +373,13 @@ export class AtrFormComponent {
373
373
  continue;
374
374
  }
375
375
  if (item.dateFormat) {
376
- obj.value[key] = formatDate(value[key], item.dateFormat, this.locale);
376
+ obj.value[key] = formatDate(new Date(Number(value[key])), item.dateFormat, this.locale);
377
377
  }
378
378
  else if (item.type == 'date') {
379
- obj.value[key] = formatDate(value[key], 'yyyy-MM-dd 00:00:00', this.locale);
379
+ obj.value[key] = formatDate(new Date(Number(value[key])), 'yyyy-MM-dd 00:00:00', this.locale);
380
380
  }
381
381
  else if (item.type == 'dateTime') {
382
- obj.value[key] = formatDate(value[key], 'yyyy-MM-dd HH:mm:ss', this.locale);
382
+ obj.value[key] = formatDate(new Date(Number(value[key])), 'yyyy-MM-dd HH:mm:ss', this.locale);
383
383
  }
384
384
  }
385
385
  }
@@ -442,13 +442,13 @@ export class AtrFormComponent {
442
442
  continue;
443
443
  }
444
444
  if (item.dateFormat) {
445
- obj.value[key] = formatDate(value[key], item.dateFormat, this.locale);
445
+ obj.value[key] = formatDate(new Date(Number(value[key])), item.dateFormat, this.locale);
446
446
  }
447
447
  else if (item.type == 'date') {
448
- obj.value[key] = formatDate(value[key], 'yyyy-MM-dd 00:00:00', this.locale);
448
+ obj.value[key] = formatDate(new Date(Number(value[key])), 'yyyy-MM-dd 00:00:00', this.locale);
449
449
  }
450
450
  else if (item.type == 'dateTime') {
451
- obj.value[key] = formatDate(value[key], 'yyyy-MM-dd HH:mm:ss', this.locale);
451
+ obj.value[key] = formatDate(new Date(Number(value[key])), 'yyyy-MM-dd HH:mm:ss', this.locale);
452
452
  }
453
453
  }
454
454
  }
@@ -501,10 +501,10 @@ export class AtrFormComponent {
501
501
  }
502
502
  }
503
503
  AtrFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AtrFormComponent, deps: [{ token: i1.ShareService }, { token: i2.HttpService }, { token: i3.FormBuilder }, { token: i4.DictService }, { token: i0.Injector }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
504
- AtrFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AtrFormComponent, selector: "atr-form", inputs: { formOpts: "formOpts" }, outputs: { formAction: "formAction" }, ngImport: i0, template: "<atr-view-form *ngIf=\"formOpts.type == 'view'\" [dicts]=\"dicts\" [atrForm]=\"atrForm\"\r\n [formOpts]=\"formOpts\"></atr-view-form>\r\n<form nz-form [formGroup]=\"atrForm\" *ngIf=\"formOpts.type != 'view'\">\r\n <div nz-row nzGutter=\"8\" nzType=\"flex\" nzAlign=\"top\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <div nz-col nzSpan=\"24\" class=\"form-title\" *ngIf=\"item.type == 'title'\">\r\n {{item.label}}\r\n </div>\r\n <div nz-col [nzSpan]=\"item.span\" *ngIf=\"isShow(item.isHidden,item.operator)\">\r\n\r\n <nz-form-item *ngIf=\"item.type != 'title'\">\r\n <nz-form-label [nzSm]=\"item.lspan\" [nzXs]=\"24\" [nzRequired]=\"isRequired(item)\">{{item.label}}</nz-form-label>\r\n <nz-form-control [nzSm]=\"item.cspan\" [nzXs]=\"24\">\r\n <div style=\"display: flex;width: 100%\">\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\"\r\n style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\" style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <app-select-icons *ngIf=\"item.type == 'selectIcon'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly \"\r\n style=\"flex: 1\"\r\n [formControlName]=\"item.key\">\r\n </app-select-icons>\r\n <input *ngIf=\"item.type == 'text'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly || formOpts.type == 'view'\"\r\n [formControlName]=\"item.key\"/>\r\n <textarea *ngIf=\"item.type == 'textarea'\" nz-input [rows]=\"item.rows\" placeholder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\" [readonly]=\"item.readonly|| formOpts.type == 'view'\"></textarea>\r\n <nz-input-number *ngIf=\"item.type == 'number'\" nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzMin]=\"item.minNumber\"\r\n [formControlName]=\"item.key\"></nz-input-number>\r\n <nz-radio-group *ngIf=\"item.type == 'radio'\" [formControlName]=\"item.key\">\r\n <label nz-radio *ngFor=\"let o of item.dictList\" [nzValue]=\"o.value\">{{o.label}}</label>\r\n </nz-radio-group>\r\n <nz-select\r\n *ngIf=\"item.type == 'select'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n [nzMode]=\"item.nzMode || 'default'\"\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of dicts[item.dictCode]\" [nzLabel]=\"o.typeName\" [nzValue]=\"o.id\"></nz-option>\r\n </nz-select>\r\n <nz-select\r\n *ngIf=\"item.type == 'selectc'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n [nzMode]=\"item.nzMode || 'default'\"\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\" [nzValue]=\"o.value\"></nz-option>\r\n </nz-select>\r\n <nz-cascader [nzDisabled]=\"item.readonly\" style=\"flex: 1\" [nzAllowClear]=\"!item.notNull\"\r\n [nzValueProperty]=\"'nzValueProperty'\"\r\n [nzShowSearch]=\"true\" *ngIf=\"item.type == 'cascader'\"\r\n [nzOptions]=\"item.dictList\" [formControlName]=\"item.key\"></nz-cascader>\r\n <nz-date-picker *ngIf=\"item.type == 'date'\" [nzFormat]=\"item.dateFormat ? item.dateFormat : 'yyyy-MM-dd'\"\r\n [nzShowTime]=\"showTime(item)\"\r\n [nzDisabled]=\"formOpts.type == 'view' || item.readonly \"\r\n [formControlName]=\"item.key\"></nz-date-picker>\r\n <nz-range-picker *ngIf=\"item.type == 'dateRange'\"\r\n [nzShowTime]=\"item.nzShowTime? item.nzShowTime : false\"\r\n [formControlName]=\"item.key\"\r\n [nzFormat]=\"item.nzShowTime && item.nzShowTime.nzFormat ? ('yyyy-MM-dd '+ item.nzShowTime.nzFormat) : 'yyyy-MM-dd'\"\r\n [nzPlaceHolder]=\"['\u5F00\u59CB\u65F6\u95F4', '\u7ED3\u675F\u65F6\u95F4']\"></nz-range-picker>\r\n\r\n <input *ngIf=\"item.type == 'image'\" nz-input [formControlName]=\"item.key\" [hidden]=\"true\"/>\r\n <atr-img-upload *ngIf=\"item.type == 'image'\" [(opts)]=\"item.imageOpts\"\r\n (afterChange)=\"imageUploadChange($event)\"></atr-img-upload>\r\n\r\n <!-- <editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\" [config]=\"{initialFrameHeight:item.height}\" ></editor>-->\r\n <app-quill-editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor>\r\n <div *ngIf=\"item.type == 'word'\" [innerHTML]=\"item.value |defVal:item.defaultValue |safeHtml\">\r\n </div>\r\n <ng-container *ngFor=\"let valid of item.validators\">\r\n <ng-container *ngIf=\"atrForm.get(item.key).hasError(valid.type) && (atrForm.get(item.key).dirty )\">\r\n <div style=\"color:red; height: 15px;margin: 0;line-height: 15px;\">{{valid.errorLabel}}</div>\r\n </ng-container>\r\n </ng-container>\r\n <button nz-button nzType=\"default\" style=\"cursor: default;background-color: #fafafa;color: black\"\r\n *ngIf=\"item.ends\" disabled>\r\n {{item.ends}}\r\n </button>\r\n <button *ngIf=\"item.button?.isShow\" type=\"button\" class=\"ant-btn ant-btn-primary\"\r\n (click)=\"doAction(item.button,$event)\">\r\n <span>{{item.button.name}}</span></button>\r\n </div>\r\n <div *ngIf=\"item.proposal\" style=\"color: red;width: 100%\">{{item.proposal}}</div>\r\n\r\n </nz-form-control>\r\n <ng-container *ngTemplateOutlet=\"item.temp\"></ng-container>\r\n </nz-form-item>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n", styles: [":host ::ng-deep .ant-form-item{margin:0 0 10px}:host ::ng-deep .ant-form-item-label{text-align:left}:host ::ng-deep nz-input-number{width:100%}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}\n"], components: [{ type: i5.ViewFormComponent, selector: "atr-view-form", inputs: ["formOpts", "atrForm", "dicts", "items"] }, { type: i6.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { type: i6.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon"], exportAs: ["nzFormLabel"] }, { type: i6.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }, { type: i7.NzTreeSelectComponent, selector: "nz-tree-select", inputs: ["nzId", "nzAllowClear", "nzShowExpand", "nzShowLine", "nzDropdownMatchSelectWidth", "nzCheckable", "nzHideUnMatched", "nzShowIcon", "nzShowSearch", "nzDisabled", "nzAsyncData", "nzMultiple", "nzDefaultExpandAll", "nzCheckStrictly", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzExpandedIcon", "nzNotFoundContent", "nzNodes", "nzOpen", "nzSize", "nzPlaceHolder", "nzDropdownStyle", "nzDropdownClassName", "nzBackdrop", "nzStatus", "nzExpandedKeys", "nzDisplayWith", "nzMaxTagCount", "nzMaxTagPlaceholder", "nzTreeTemplate"], outputs: ["nzOpenChange", "nzCleared", "nzRemoved", "nzExpandChange", "nzTreeClick", "nzTreeCheckBoxChange"], exportAs: ["nzTreeSelect"] }, { type: i8.SelectIconsComponent, selector: "app-select-icons", inputs: ["readonly", "placeholder"] }, { type: i9.NzInputNumberComponent, selector: "nz-input-number", inputs: ["nzSize", "nzMin", "nzMax", "nzParser", "nzPrecision", "nzPrecisionMode", "nzPlaceHolder", "nzStatus", "nzStep", "nzInputMode", "nzId", "nzDisabled", "nzReadOnly", "nzAutoFocus", "nzBorderless", "nzFormatter"], outputs: ["nzBlur", "nzFocus"], exportAs: ["nzInputNumber"] }, { type: i10.NzRadioGroupComponent, selector: "nz-radio-group", inputs: ["nzDisabled", "nzButtonStyle", "nzSize", "nzName"], exportAs: ["nzRadioGroup"] }, { type: i10.NzRadioComponent, selector: "[nz-radio],[nz-radio-button]", inputs: ["nzValue", "nzDisabled", "nzAutoFocus"], exportAs: ["nzRadio"] }, { type: i11.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { type: i11.NzOptionComponent, selector: "nz-option", inputs: ["nzLabel", "nzValue", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { type: i12.NzCascaderComponent, selector: "nz-cascader, [nz-cascader]", inputs: ["nzOptionRender", "nzShowInput", "nzShowArrow", "nzAllowClear", "nzAutoFocus", "nzChangeOnSelect", "nzDisabled", "nzColumnClassName", "nzExpandTrigger", "nzValueProperty", "nzLabelRender", "nzLabelProperty", "nzNotFoundContent", "nzSize", "nzBackdrop", "nzShowSearch", "nzPlaceHolder", "nzMenuClassName", "nzMenuStyle", "nzMouseEnterDelay", "nzMouseLeaveDelay", "nzStatus", "nzTriggerAction", "nzChangeOn", "nzLoadData", "nzSuffixIcon", "nzExpandIcon", "nzOptions"], outputs: ["nzVisibleChange", "nzSelectionChange", "nzSelect", "nzClear"], exportAs: ["nzCascader"] }, { type: i13.NzDatePickerComponent, selector: "nz-date-picker,nz-week-picker,nz-month-picker,nz-year-picker,nz-range-picker", inputs: ["nzAllowClear", "nzAutoFocus", "nzDisabled", "nzBorderless", "nzInputReadOnly", "nzInline", "nzOpen", "nzDisabledDate", "nzLocale", "nzPlaceHolder", "nzPopupStyle", "nzDropdownClassName", "nzSize", "nzStatus", "nzFormat", "nzDateRender", "nzDisabledTime", "nzRenderExtraFooter", "nzShowToday", "nzMode", "nzShowNow", "nzRanges", "nzDefaultPickerValue", "nzSeparator", "nzSuffixIcon", "nzBackdrop", "nzId", "nzPlacement", "nzShowTime"], outputs: ["nzOnPanelChange", "nzOnCalendarChange", "nzOnOk", "nzOnOpenChange"], exportAs: ["nzDatePicker"] }, { type: i14.UploadComponent, selector: "atr-img-upload", inputs: ["opts", "isEdit", "allowChangSeq"], outputs: ["afterChange", "optsChange"] }, { type: i15.QuillEditorComponent, selector: "app-quill-editor", inputs: ["placeholder", "styles", "value", "readOnly", "needImgSeq"] }, { type: i16.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }], directives: [{ type: i17.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon"], exportAs: ["nzForm"] }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i18.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { type: i17.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i18.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i19.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i13.NzRangePickerComponent, selector: "nz-range-picker", exportAs: ["nzRangePicker"] }, { type: i20.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { type: i21.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { type: i17.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "safeHtml": i22.SafeHtmlPipe, "defVal": i23.DefaultValPipe } });
504
+ AtrFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AtrFormComponent, selector: "atr-form", inputs: { formOpts: "formOpts" }, outputs: { formAction: "formAction" }, ngImport: i0, template: "<atr-view-form *ngIf=\"formOpts.type == 'view'\" [dicts]=\"dicts\" [atrForm]=\"atrForm\"\r\n [formOpts]=\"formOpts\"></atr-view-form>\r\n<form nz-form [formGroup]=\"atrForm\" *ngIf=\"formOpts.type != 'view'\">\r\n <div nz-row nzGutter=\"8\" nzType=\"flex\" nzAlign=\"top\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <div nz-col nzSpan=\"24\" class=\"form-title\" *ngIf=\"item.type == 'title'\">\r\n {{item.label}}\r\n </div>\r\n <div nz-col [nzSpan]=\"item.span\" *ngIf=\"isShow(item.isHidden,item.operator)\">\r\n\r\n <nz-form-item *ngIf=\"item.type != 'title'\">\r\n <nz-form-label [nzSm]=\"item.lspan\" [nzXs]=\"24\" [nzRequired]=\"isRequired(item)\">{{item.label}}</nz-form-label>\r\n <nz-form-control [nzSm]=\"item.cspan\" [nzXs]=\"24\">\r\n <div style=\"display: flex;width: 100%\">\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\"\r\n style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\" style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <app-select-icons *ngIf=\"item.type == 'selectIcon'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly \"\r\n style=\"flex: 1\"\r\n [formControlName]=\"item.key\">\r\n </app-select-icons>\r\n <input *ngIf=\"item.type == 'text'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly || formOpts.type == 'view'\"\r\n [formControlName]=\"item.key\"/>\r\n <textarea *ngIf=\"item.type == 'textarea'\" nz-input [rows]=\"item.rows\" placeholder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\" [readonly]=\"item.readonly|| formOpts.type == 'view'\"></textarea>\r\n <nz-input-number *ngIf=\"item.type == 'number'\" nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzMin]=\"item.minNumber\"\r\n [formControlName]=\"item.key\"></nz-input-number>\r\n <nz-radio-group *ngIf=\"item.type == 'radio'\" [formControlName]=\"item.key\">\r\n <label nz-radio *ngFor=\"let o of item.dictList\" [nzValue]=\"o.value\">{{o.label}}</label>\r\n </nz-radio-group>\r\n <nz-select\r\n *ngIf=\"item.type == 'select'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n [nzMode]=\"item.nzMode || 'default'\"\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of dicts[item.dictCode]\" [nzLabel]=\"o.typeName\" [nzValue]=\"o.id\"></nz-option>\r\n </nz-select>\r\n <nz-select\r\n *ngIf=\"item.type == 'selectc'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n [nzMode]=\"item.nzMode || 'default'\"\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\" [nzValue]=\"o.value\"></nz-option>\r\n </nz-select>\r\n <nz-cascader [nzDisabled]=\"item.readonly\" style=\"flex: 1\" [nzAllowClear]=\"!item.notNull\"\r\n [nzValueProperty]=\"'nzValueProperty'\"\r\n [nzShowSearch]=\"true\" *ngIf=\"item.type == 'cascader'\"\r\n [nzOptions]=\"item.dictList\" [formControlName]=\"item.key\"></nz-cascader>\r\n <nz-date-picker *ngIf=\"item.type == 'date'\" [nzFormat]=\"item.dateFormat ? item.dateFormat : 'yyyy-MM-dd'\"\r\n [nzShowTime]=\"showTime(item)\"\r\n [nzDisabled]=\"formOpts.type == 'view' || item.readonly \"\r\n [formControlName]=\"item.key\"></nz-date-picker>\r\n <nz-range-picker *ngIf=\"item.type == 'dateRange'\"\r\n [nzShowTime]=\"item.nzShowTime? item.nzShowTime : false\"\r\n [formControlName]=\"item.key\"\r\n [nzFormat]=\"item.nzShowTime && item.nzShowTime.nzFormat ? ('yyyy-MM-dd '+ item.nzShowTime.nzFormat) : 'yyyy-MM-dd'\"\r\n [nzPlaceHolder]=\"['\u5F00\u59CB\u65F6\u95F4', '\u7ED3\u675F\u65F6\u95F4']\"></nz-range-picker>\r\n\r\n <input *ngIf=\"item.type == 'image'\" nz-input [formControlName]=\"item.key\" [hidden]=\"true\"/>\r\n <atr-img-upload *ngIf=\"item.type == 'image'\" [(opts)]=\"item.imageOpts\"\r\n (afterChange)=\"imageUploadChange($event)\"></atr-img-upload>\r\n\r\n <!-- <editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\" [config]=\"{initialFrameHeight:item.height}\" ></editor>-->\r\n <app-quill-editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor>\r\n <div *ngIf=\"item.type == 'word'\" [innerHTML]=\"item.value |defVal:item.defaultValue |safeHtml\">\r\n </div>\r\n <div *ngIf=\"item.type == 'buttons'\">\r\n <ng-container *ngFor=\"let btn of item.buttons\">\r\n <button nz-button type=\"button\" [nzType]=\"btn.btnType |defVal: 'default'\" class=\"ant-btn ant-btn-primary\"\r\n style=\"margin-right: 5px\" *ngIf=\"btn.isShow || isShow(false,btn.operator)\"\r\n (click)=\"doAction(btn,$event)\">\r\n <span>{{btn.name}}</span></button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngFor=\"let valid of item.validators\">\r\n <ng-container *ngIf=\"atrForm.get(item.key).hasError(valid.type) && (atrForm.get(item.key).dirty )\">\r\n <div style=\"color:red; height: 15px;margin: 0;line-height: 15px;\">{{valid.errorLabel}}</div>\r\n </ng-container>\r\n </ng-container>\r\n <button nz-button nzType=\"default\" style=\"cursor: default;background-color: #fafafa;color: black\"\r\n *ngIf=\"item.ends\" disabled>\r\n {{item.ends}}\r\n </button>\r\n <button *ngIf=\"item.button?.isShow\" type=\"button\" class=\"ant-btn ant-btn-primary\"\r\n (click)=\"doAction(item.button,$event)\">\r\n <span>{{item.button.name}}</span></button>\r\n </div>\r\n <div *ngIf=\"item.proposal\" style=\"color: red;width: 100%\">{{item.proposal}}</div>\r\n\r\n </nz-form-control>\r\n <ng-container *ngTemplateOutlet=\"item.temp\"></ng-container>\r\n </nz-form-item>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n", styles: [":host ::ng-deep .ant-form-item{margin:0 0 10px}:host ::ng-deep .ant-form-item-label{text-align:left}:host ::ng-deep nz-input-number{width:100%}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}\n"], components: [{ type: i5.ViewFormComponent, selector: "atr-view-form", inputs: ["formOpts", "atrForm", "dicts", "items"] }, { type: i6.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { type: i6.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon"], exportAs: ["nzFormLabel"] }, { type: i6.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }, { type: i7.NzTreeSelectComponent, selector: "nz-tree-select", inputs: ["nzId", "nzAllowClear", "nzShowExpand", "nzShowLine", "nzDropdownMatchSelectWidth", "nzCheckable", "nzHideUnMatched", "nzShowIcon", "nzShowSearch", "nzDisabled", "nzAsyncData", "nzMultiple", "nzDefaultExpandAll", "nzCheckStrictly", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzExpandedIcon", "nzNotFoundContent", "nzNodes", "nzOpen", "nzSize", "nzPlaceHolder", "nzDropdownStyle", "nzDropdownClassName", "nzBackdrop", "nzStatus", "nzExpandedKeys", "nzDisplayWith", "nzMaxTagCount", "nzMaxTagPlaceholder", "nzTreeTemplate"], outputs: ["nzOpenChange", "nzCleared", "nzRemoved", "nzExpandChange", "nzTreeClick", "nzTreeCheckBoxChange"], exportAs: ["nzTreeSelect"] }, { type: i8.SelectIconsComponent, selector: "app-select-icons", inputs: ["readonly", "placeholder"] }, { type: i9.NzInputNumberComponent, selector: "nz-input-number", inputs: ["nzSize", "nzMin", "nzMax", "nzParser", "nzPrecision", "nzPrecisionMode", "nzPlaceHolder", "nzStatus", "nzStep", "nzInputMode", "nzId", "nzDisabled", "nzReadOnly", "nzAutoFocus", "nzBorderless", "nzFormatter"], outputs: ["nzBlur", "nzFocus"], exportAs: ["nzInputNumber"] }, { type: i10.NzRadioGroupComponent, selector: "nz-radio-group", inputs: ["nzDisabled", "nzButtonStyle", "nzSize", "nzName"], exportAs: ["nzRadioGroup"] }, { type: i10.NzRadioComponent, selector: "[nz-radio],[nz-radio-button]", inputs: ["nzValue", "nzDisabled", "nzAutoFocus"], exportAs: ["nzRadio"] }, { type: i11.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { type: i11.NzOptionComponent, selector: "nz-option", inputs: ["nzLabel", "nzValue", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { type: i12.NzCascaderComponent, selector: "nz-cascader, [nz-cascader]", inputs: ["nzOptionRender", "nzShowInput", "nzShowArrow", "nzAllowClear", "nzAutoFocus", "nzChangeOnSelect", "nzDisabled", "nzColumnClassName", "nzExpandTrigger", "nzValueProperty", "nzLabelRender", "nzLabelProperty", "nzNotFoundContent", "nzSize", "nzBackdrop", "nzShowSearch", "nzPlaceHolder", "nzMenuClassName", "nzMenuStyle", "nzMouseEnterDelay", "nzMouseLeaveDelay", "nzStatus", "nzTriggerAction", "nzChangeOn", "nzLoadData", "nzSuffixIcon", "nzExpandIcon", "nzOptions"], outputs: ["nzVisibleChange", "nzSelectionChange", "nzSelect", "nzClear"], exportAs: ["nzCascader"] }, { type: i13.NzDatePickerComponent, selector: "nz-date-picker,nz-week-picker,nz-month-picker,nz-year-picker,nz-range-picker", inputs: ["nzAllowClear", "nzAutoFocus", "nzDisabled", "nzBorderless", "nzInputReadOnly", "nzInline", "nzOpen", "nzDisabledDate", "nzLocale", "nzPlaceHolder", "nzPopupStyle", "nzDropdownClassName", "nzSize", "nzStatus", "nzFormat", "nzDateRender", "nzDisabledTime", "nzRenderExtraFooter", "nzShowToday", "nzMode", "nzShowNow", "nzRanges", "nzDefaultPickerValue", "nzSeparator", "nzSuffixIcon", "nzBackdrop", "nzId", "nzPlacement", "nzShowTime"], outputs: ["nzOnPanelChange", "nzOnCalendarChange", "nzOnOk", "nzOnOpenChange"], exportAs: ["nzDatePicker"] }, { type: i14.UploadComponent, selector: "atr-img-upload", inputs: ["opts", "isEdit", "allowChangSeq"], outputs: ["afterChange", "optsChange"] }, { type: i15.QuillEditorComponent, selector: "app-quill-editor", inputs: ["placeholder", "styles", "value", "readOnly", "needImgSeq"] }, { type: i16.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }], directives: [{ type: i17.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon"], exportAs: ["nzForm"] }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i18.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { type: i17.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i18.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i19.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i13.NzRangePickerComponent, selector: "nz-range-picker", exportAs: ["nzRangePicker"] }, { type: i20.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { type: i21.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { type: i17.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "safeHtml": i22.SafeHtmlPipe, "defVal": i23.DefaultValPipe } });
505
505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AtrFormComponent, decorators: [{
506
506
  type: Component,
507
- args: [{ selector: 'atr-form', template: "<atr-view-form *ngIf=\"formOpts.type == 'view'\" [dicts]=\"dicts\" [atrForm]=\"atrForm\"\r\n [formOpts]=\"formOpts\"></atr-view-form>\r\n<form nz-form [formGroup]=\"atrForm\" *ngIf=\"formOpts.type != 'view'\">\r\n <div nz-row nzGutter=\"8\" nzType=\"flex\" nzAlign=\"top\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <div nz-col nzSpan=\"24\" class=\"form-title\" *ngIf=\"item.type == 'title'\">\r\n {{item.label}}\r\n </div>\r\n <div nz-col [nzSpan]=\"item.span\" *ngIf=\"isShow(item.isHidden,item.operator)\">\r\n\r\n <nz-form-item *ngIf=\"item.type != 'title'\">\r\n <nz-form-label [nzSm]=\"item.lspan\" [nzXs]=\"24\" [nzRequired]=\"isRequired(item)\">{{item.label}}</nz-form-label>\r\n <nz-form-control [nzSm]=\"item.cspan\" [nzXs]=\"24\">\r\n <div style=\"display: flex;width: 100%\">\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\"\r\n style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\" style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <app-select-icons *ngIf=\"item.type == 'selectIcon'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly \"\r\n style=\"flex: 1\"\r\n [formControlName]=\"item.key\">\r\n </app-select-icons>\r\n <input *ngIf=\"item.type == 'text'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly || formOpts.type == 'view'\"\r\n [formControlName]=\"item.key\"/>\r\n <textarea *ngIf=\"item.type == 'textarea'\" nz-input [rows]=\"item.rows\" placeholder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\" [readonly]=\"item.readonly|| formOpts.type == 'view'\"></textarea>\r\n <nz-input-number *ngIf=\"item.type == 'number'\" nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzMin]=\"item.minNumber\"\r\n [formControlName]=\"item.key\"></nz-input-number>\r\n <nz-radio-group *ngIf=\"item.type == 'radio'\" [formControlName]=\"item.key\">\r\n <label nz-radio *ngFor=\"let o of item.dictList\" [nzValue]=\"o.value\">{{o.label}}</label>\r\n </nz-radio-group>\r\n <nz-select\r\n *ngIf=\"item.type == 'select'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n [nzMode]=\"item.nzMode || 'default'\"\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of dicts[item.dictCode]\" [nzLabel]=\"o.typeName\" [nzValue]=\"o.id\"></nz-option>\r\n </nz-select>\r\n <nz-select\r\n *ngIf=\"item.type == 'selectc'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n [nzMode]=\"item.nzMode || 'default'\"\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\" [nzValue]=\"o.value\"></nz-option>\r\n </nz-select>\r\n <nz-cascader [nzDisabled]=\"item.readonly\" style=\"flex: 1\" [nzAllowClear]=\"!item.notNull\"\r\n [nzValueProperty]=\"'nzValueProperty'\"\r\n [nzShowSearch]=\"true\" *ngIf=\"item.type == 'cascader'\"\r\n [nzOptions]=\"item.dictList\" [formControlName]=\"item.key\"></nz-cascader>\r\n <nz-date-picker *ngIf=\"item.type == 'date'\" [nzFormat]=\"item.dateFormat ? item.dateFormat : 'yyyy-MM-dd'\"\r\n [nzShowTime]=\"showTime(item)\"\r\n [nzDisabled]=\"formOpts.type == 'view' || item.readonly \"\r\n [formControlName]=\"item.key\"></nz-date-picker>\r\n <nz-range-picker *ngIf=\"item.type == 'dateRange'\"\r\n [nzShowTime]=\"item.nzShowTime? item.nzShowTime : false\"\r\n [formControlName]=\"item.key\"\r\n [nzFormat]=\"item.nzShowTime && item.nzShowTime.nzFormat ? ('yyyy-MM-dd '+ item.nzShowTime.nzFormat) : 'yyyy-MM-dd'\"\r\n [nzPlaceHolder]=\"['\u5F00\u59CB\u65F6\u95F4', '\u7ED3\u675F\u65F6\u95F4']\"></nz-range-picker>\r\n\r\n <input *ngIf=\"item.type == 'image'\" nz-input [formControlName]=\"item.key\" [hidden]=\"true\"/>\r\n <atr-img-upload *ngIf=\"item.type == 'image'\" [(opts)]=\"item.imageOpts\"\r\n (afterChange)=\"imageUploadChange($event)\"></atr-img-upload>\r\n\r\n <!-- <editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\" [config]=\"{initialFrameHeight:item.height}\" ></editor>-->\r\n <app-quill-editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor>\r\n <div *ngIf=\"item.type == 'word'\" [innerHTML]=\"item.value |defVal:item.defaultValue |safeHtml\">\r\n </div>\r\n <ng-container *ngFor=\"let valid of item.validators\">\r\n <ng-container *ngIf=\"atrForm.get(item.key).hasError(valid.type) && (atrForm.get(item.key).dirty )\">\r\n <div style=\"color:red; height: 15px;margin: 0;line-height: 15px;\">{{valid.errorLabel}}</div>\r\n </ng-container>\r\n </ng-container>\r\n <button nz-button nzType=\"default\" style=\"cursor: default;background-color: #fafafa;color: black\"\r\n *ngIf=\"item.ends\" disabled>\r\n {{item.ends}}\r\n </button>\r\n <button *ngIf=\"item.button?.isShow\" type=\"button\" class=\"ant-btn ant-btn-primary\"\r\n (click)=\"doAction(item.button,$event)\">\r\n <span>{{item.button.name}}</span></button>\r\n </div>\r\n <div *ngIf=\"item.proposal\" style=\"color: red;width: 100%\">{{item.proposal}}</div>\r\n\r\n </nz-form-control>\r\n <ng-container *ngTemplateOutlet=\"item.temp\"></ng-container>\r\n </nz-form-item>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n", styles: [":host ::ng-deep .ant-form-item{margin:0 0 10px}:host ::ng-deep .ant-form-item-label{text-align:left}:host ::ng-deep nz-input-number{width:100%}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}\n"] }]
507
+ args: [{ selector: 'atr-form', template: "<atr-view-form *ngIf=\"formOpts.type == 'view'\" [dicts]=\"dicts\" [atrForm]=\"atrForm\"\r\n [formOpts]=\"formOpts\"></atr-view-form>\r\n<form nz-form [formGroup]=\"atrForm\" *ngIf=\"formOpts.type != 'view'\">\r\n <div nz-row nzGutter=\"8\" nzType=\"flex\" nzAlign=\"top\">\r\n <ng-container *ngFor=\"let item of formOpts.items\">\r\n <div nz-col nzSpan=\"24\" class=\"form-title\" *ngIf=\"item.type == 'title'\">\r\n {{item.label}}\r\n </div>\r\n <div nz-col [nzSpan]=\"item.span\" *ngIf=\"isShow(item.isHidden,item.operator)\">\r\n\r\n <nz-form-item *ngIf=\"item.type != 'title'\">\r\n <nz-form-label [nzSm]=\"item.lspan\" [nzXs]=\"24\" [nzRequired]=\"isRequired(item)\">{{item.label}}</nz-form-label>\r\n <nz-form-control [nzSm]=\"item.cspan\" [nzXs]=\"24\">\r\n <div style=\"display: flex;width: 100%\">\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\"\r\n style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <nz-tree-select *ngIf=\"item.type == 'treeSelect'\"\r\n [nzAllowClear]=\"!item.notNull\"\r\n [nzNodes]=\"item.treeList\"\r\n nzShowSearch=\"true\"\r\n nzHideUnMatched=\"true\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzShowSearch]=\"true\"\r\n [formControlName]=\"item.key\"\r\n [nzMultiple]=\"item.selectUrl.isMultiple\"\r\n [nzDisabled]=\"item.readonly\" style=\"flex: 1\"\r\n >\r\n </nz-tree-select>\r\n <app-select-icons *ngIf=\"item.type == 'selectIcon'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly \"\r\n style=\"flex: 1\"\r\n [formControlName]=\"item.key\">\r\n </app-select-icons>\r\n <input *ngIf=\"item.type == 'text'\" nz-input placeholder=\"{{item.placeholder}}\"\r\n [readonly]=\"item.readonly || formOpts.type == 'view'\"\r\n [formControlName]=\"item.key\"/>\r\n <textarea *ngIf=\"item.type == 'textarea'\" nz-input [rows]=\"item.rows\" placeholder=\"{{item.placeholder}}\"\r\n [formControlName]=\"item.key\" [readonly]=\"item.readonly|| formOpts.type == 'view'\"></textarea>\r\n <nz-input-number *ngIf=\"item.type == 'number'\" nzPlaceHolder=\"{{item.placeholder}}\"\r\n [nzMin]=\"item.minNumber\"\r\n [formControlName]=\"item.key\"></nz-input-number>\r\n <nz-radio-group *ngIf=\"item.type == 'radio'\" [formControlName]=\"item.key\">\r\n <label nz-radio *ngFor=\"let o of item.dictList\" [nzValue]=\"o.value\">{{o.label}}</label>\r\n </nz-radio-group>\r\n <nz-select\r\n *ngIf=\"item.type == 'select'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n [nzMode]=\"item.nzMode || 'default'\"\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of dicts[item.dictCode]\" [nzLabel]=\"o.typeName\" [nzValue]=\"o.id\"></nz-option>\r\n </nz-select>\r\n <nz-select\r\n *ngIf=\"item.type == 'selectc'\"\r\n nzPlaceHolder=\"{{item.placeholder}}\"\r\n nzAllowClear=\"true\"\r\n [formControlName]=\"item.key\"\r\n nzServerSearch\r\n [nzMode]=\"item.nzMode || 'default'\"\r\n nzDisabled=\"{{item.readonly|| formOpts.type == 'view'}}\"\r\n >\r\n <nz-option *ngFor=\"let o of item.dictList\" [nzLabel]=\"o.label\" [nzValue]=\"o.value\"></nz-option>\r\n </nz-select>\r\n <nz-cascader [nzDisabled]=\"item.readonly\" style=\"flex: 1\" [nzAllowClear]=\"!item.notNull\"\r\n [nzValueProperty]=\"'nzValueProperty'\"\r\n [nzShowSearch]=\"true\" *ngIf=\"item.type == 'cascader'\"\r\n [nzOptions]=\"item.dictList\" [formControlName]=\"item.key\"></nz-cascader>\r\n <nz-date-picker *ngIf=\"item.type == 'date'\" [nzFormat]=\"item.dateFormat ? item.dateFormat : 'yyyy-MM-dd'\"\r\n [nzShowTime]=\"showTime(item)\"\r\n [nzDisabled]=\"formOpts.type == 'view' || item.readonly \"\r\n [formControlName]=\"item.key\"></nz-date-picker>\r\n <nz-range-picker *ngIf=\"item.type == 'dateRange'\"\r\n [nzShowTime]=\"item.nzShowTime? item.nzShowTime : false\"\r\n [formControlName]=\"item.key\"\r\n [nzFormat]=\"item.nzShowTime && item.nzShowTime.nzFormat ? ('yyyy-MM-dd '+ item.nzShowTime.nzFormat) : 'yyyy-MM-dd'\"\r\n [nzPlaceHolder]=\"['\u5F00\u59CB\u65F6\u95F4', '\u7ED3\u675F\u65F6\u95F4']\"></nz-range-picker>\r\n\r\n <input *ngIf=\"item.type == 'image'\" nz-input [formControlName]=\"item.key\" [hidden]=\"true\"/>\r\n <atr-img-upload *ngIf=\"item.type == 'image'\" [(opts)]=\"item.imageOpts\"\r\n (afterChange)=\"imageUploadChange($event)\"></atr-img-upload>\r\n\r\n <!-- <editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\" [config]=\"{initialFrameHeight:item.height}\" ></editor>-->\r\n <app-quill-editor *ngIf=\"item.type == 'editor'\" [formControlName]=\"item.key\"\r\n [styles]=\"{height:item.height > 0 ? item.height + 'px' : '250px'}\"></app-quill-editor>\r\n <div *ngIf=\"item.type == 'word'\" [innerHTML]=\"item.value |defVal:item.defaultValue |safeHtml\">\r\n </div>\r\n <div *ngIf=\"item.type == 'buttons'\">\r\n <ng-container *ngFor=\"let btn of item.buttons\">\r\n <button nz-button type=\"button\" [nzType]=\"btn.btnType |defVal: 'default'\" class=\"ant-btn ant-btn-primary\"\r\n style=\"margin-right: 5px\" *ngIf=\"btn.isShow || isShow(false,btn.operator)\"\r\n (click)=\"doAction(btn,$event)\">\r\n <span>{{btn.name}}</span></button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngFor=\"let valid of item.validators\">\r\n <ng-container *ngIf=\"atrForm.get(item.key).hasError(valid.type) && (atrForm.get(item.key).dirty )\">\r\n <div style=\"color:red; height: 15px;margin: 0;line-height: 15px;\">{{valid.errorLabel}}</div>\r\n </ng-container>\r\n </ng-container>\r\n <button nz-button nzType=\"default\" style=\"cursor: default;background-color: #fafafa;color: black\"\r\n *ngIf=\"item.ends\" disabled>\r\n {{item.ends}}\r\n </button>\r\n <button *ngIf=\"item.button?.isShow\" type=\"button\" class=\"ant-btn ant-btn-primary\"\r\n (click)=\"doAction(item.button,$event)\">\r\n <span>{{item.button.name}}</span></button>\r\n </div>\r\n <div *ngIf=\"item.proposal\" style=\"color: red;width: 100%\">{{item.proposal}}</div>\r\n\r\n </nz-form-control>\r\n <ng-container *ngTemplateOutlet=\"item.temp\"></ng-container>\r\n </nz-form-item>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n</form>\r\n", styles: [":host ::ng-deep .ant-form-item{margin:0 0 10px}:host ::ng-deep .ant-form-item-label{text-align:left}:host ::ng-deep nz-input-number{width:100%}:host .form-title{height:50px;line-height:50px;font-weight:500;font-size:20px;border-bottom:1px solid #e8e8e8;border-radius:4px 4px 0 0;margin-bottom:14px;margin-top:11px}\n"] }]
508
508
  }], ctorParameters: function () { return [{ type: i1.ShareService }, { type: i2.HttpService }, { type: i3.FormBuilder }, { type: i4.DictService }, { type: i0.Injector }, { type: undefined, decorators: [{
509
509
  type: Inject,
510
510
  args: [LOCALE_ID]
@@ -513,4 +513,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
513
513
  }], formAction: [{
514
514
  type: Output
515
515
  }] } });
516
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0vZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBWSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUF5QixXQUFXLEVBQUUsVUFBVSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBb0QsTUFBTSwrQkFBK0IsQ0FBQztBQUVsSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFReEQsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQiwyQ0FBMkM7SUFDM0MsWUFBb0IsWUFBMEIsRUFBVSxXQUF3QixFQUM1RCxFQUFlLEVBQVUsV0FBd0IsRUFBVSxRQUFrQixFQUE2QixNQUFjO1FBRHhILGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDNUQsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUE2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUDVJLFVBQUssR0FBUSxFQUFFLENBQUM7UUFHTixlQUFVLEdBQUcs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QVUsQ0FBQztRQUM3QixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzhHQW5kVSxnQkFBZ0IsdUpBU2dGLFNBQVM7a0dBVHpHLGdCQUFnQix5SENoQjdCLHU1UEEySEE7NEZEM0dhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxVQUFVOzswQkFhZ0YsTUFBTTsyQkFBQyxTQUFTOzRDQUwzRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgSW5qZWN0b3IsIEluamVjdCwgTE9DQUxFX0lELCBPdXRwdXQsIEV2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7dGVscGhvbmVWYWxpZGF0b3J9IGZyb20gJy4uL3ZhbGlkYXRvcnMvYXRyLXZhbGlkdG9ycyc7XHJcbmltcG9ydCB7Zm9ybWF0RGF0ZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtTaGFyZVNlcnZpY2V9IGZyb20gJy4uL3NoYXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tIFwibmctem9ycm8tYW50ZC9jb3JlL2Vudmlyb25tZW50c1wiO1xyXG5pbXBvcnQge2F0cl9zdGF0aWNfZGF0YXMsIEF0ckZvcm1EZXRhaWwsIEF0ckZvcm1PcHQsIEZvcm1BY3Rpb24sIGZvcm1CdXR0b259IGZyb20gXCIuLi8uLi8uLi9jb3JlL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5pbXBvcnQge0RpY3RTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9kaWN0L2RpY3Quc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcbmltcG9ydCB7SHR0cFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdHItZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXRyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGRpY3RzOiBhbnkgPSB7fTtcclxuICBhdHJGb3JtOiBGb3JtR3JvdXAgfCBhbnk7XHJcbiAgQElucHV0KCkgZm9ybU9wdHM6IEF0ckZvcm1PcHQgfCBhbnk7XHJcbiAgQE91dHB1dCgpIGZvcm1BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1BY3Rpb24+KCk7XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNoYXJlU2VydmljZTogU2hhcmVTZXJ2aWNlLCBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBkaWN0U2VydmljZTogRGljdFNlcnZpY2UsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5hdHJGb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgfVxyXG5cclxuICByZXNldExheW91dChpdGVtOiBhbnkpIHtcclxuICAgIGlmICghaXRlbS5sc3Bhbikge1xyXG4gICAgICBpdGVtLmxzcGFuID0gMjQ7XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0uY3NwYW4pIHtcclxuICAgICAgaXRlbS5jc3BhbiA9IDI0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb24oaXRlbTogZm9ybUJ1dHRvbiwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICB9XHJcbiAgICBsZXQgYWN0aW9uOiBGb3JtQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgIGNvZGU6IGl0ZW0uY29kZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZvcm1BY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuYXRyRm9ybS5nZXQoa2V5KT8uc2V0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERpY0xpc3QoaXRlbTogYW55KSB7XHJcbiAgICB0aGlzLnNoYXJlU2VydmljZS5nZXREaWNMaXN0KGl0ZW0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDAgJiYgcmVzLml0ZW0pIHtcclxuICAgICAgICBpdGVtID0gcmVzLml0ZW1cclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIGNvbnYoZGF0YXM6IGFueSwga2V5czogYW55KTogYW55IHtcclxuICAgIHJldHVybiBkYXRhcy5tYXAoKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGl0ZW06IGFueSA9IHt9O1xyXG4gICAgICBpZiAoa2V5cykge1xyXG4gICAgICAgIGtleXMuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgdnMgPSB2LnNwbGl0KFwifFwiKTtcclxuICAgICAgICAgIGNoaWxkW3ZzWzBdXSA9IGNoaWxkW3ZzWzFdXTtcclxuICAgICAgICAgIGl0ZW1bdnNbMF1dID0gY2hpbGRbdnNbMV1dO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0gPSBjaGlsZDtcclxuICAgICAgfVxyXG4gICAgICBjaGlsZC5uelZhbHVlUHJvcGVydHkgPSBpdGVtO1xyXG4gICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIHtcclxuICAgICAgICBjaGlsZC5jaGlsZHJlbiA9IHRoaXMuY29udihjaGlsZC5jaGlsZHJlbiwga2V5cylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjaGlsZC5pc0xlYWYgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldENhc2NhZGVyRGVmYXVsdFZhbHVlKGxpc3Q6IGFueSwgaW5kZXg6IGFueSwgdmFsdWU6IGFueSkge1xyXG4gICAgbGlzdC5mb3JFYWNoKChkaWM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGljLnZhbHVlID09IHZhbHVlW2luZGV4XSkge1xyXG4gICAgICAgIHZhbHVlW2luZGV4XSA9IGRpYy5uelZhbHVlUHJvcGVydHlcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0Q2FzY2FkZXJEZWZhdWx0VmFsdWUoZGljLmNoaWxkcmVuLCBpbmRleCArIDEsIHZhbHVlKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIHZhbHVlXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1PcHRzICYmIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgLy8gdGhpcy5hdHJGb3JtLmFkZENvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtQ29udHJvbCgpKTtcclxuICAgICAgICB0aGlzLnJlc2V0TGF5b3V0KGl0ZW0pXHJcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtT3B0cy50eXBlID09ICdhZGQnID8gaXRlbS5kZWZhdWx0VmFsdWUgOiBpdGVtLnZhbHVlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICAgICAgICBpZiAoaXRlbS50eXBlID09ICd0cmVlU2VsZWN0JyAmJiBpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgICAgIGxldCBrZXlzID0gaXRlbS5zZWxlY3RVcmwuY29udmVydC5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgdGhpcy5odHRwU2VydmljZS5wb3N0KGl0ZW0uc2VsZWN0VXJsLnVybCwge30sIFRvb2xzVXRpbC5nZXRIdHRwT3B0aW9ucygpKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgaXRlbS50cmVlTGlzdCA9IHJlcy5kYXRhLmZpbHRlcigoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGtleXMuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdnMgPSB2LnNwbGl0KFwifFwiKTtcclxuICAgICAgICAgICAgICAgIGNoaWxkW3ZzWzBdXSA9IGNoaWxkW3ZzWzFdXTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2Nhc2NhZGVyJyAmJiBpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgICAgIGxldCBrZXlzOiBhbnkgPSBudWxsXHJcbiAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RVcmwuY29udmVydCkge1xyXG4gICAgICAgICAgICBrZXlzID0gaXRlbS5zZWxlY3RVcmwuY29udmVydC5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaHR0cFNlcnZpY2UucG9zdChpdGVtLnNlbGVjdFVybC51cmwsIHt9LCBUb29sc1V0aWwuZ2V0SHR0cE9wdGlvbnMoKSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uZGljdExpc3QgPSB0aGlzLmNvbnYocmVzLmRhdGEsIGtleXMpXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldENhc2NhZGVyRGVmYXVsdFZhbHVlKGl0ZW0uZGljdExpc3QsIDAsIHZhbHVlKVxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoaXRlbS5rZXksIHZhbHVlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS50eXBlID09IFwic2VsZWN0XCIpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0RGljdFZhbHVlKGl0ZW0uZGljdENvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS50eXBlID09ICdzZWxlY3RjJykge1xyXG4gICAgICAgICAgaWYgKCFpdGVtLmRpY3RMaXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGljTGlzdChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcInRleHRhcmVhXCIgJiYgIWl0ZW0ucm93cylcclxuICAgICAgICAgIGl0ZW0ucm93cyA9IDU7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcImltYWdlXCIpIHtcclxuICAgICAgICAgIGl0ZW0uaW1hZ2VPcHRzLmtleSA9IGl0ZW0ua2V5XHJcbiAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgbGV0IGltYWdlczogYW55ID0gW107XHJcbiAgICAgICAgICAgIGxldCBsaXN0ID0gdmFsdWUuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgbGlzdCkge1xyXG4gICAgICAgICAgICAgIGltYWdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgdWlkOiBcIi0xXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGF0cl9zdGF0aWNfZGF0YXMuT1NTX1VSTCArIGtleVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbS5pbWFnZU9wdHMuaW1hZ2VMaXN0ID0gaW1hZ2VzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS50eXBlID09ICdlZGl0b3InKSB7XHJcbiAgICAgICAgICBpZiAoIXZhbHVlKSB2YWx1ZSA9IFwiXCJcclxuICAgICAgICAgIGlmICghaXRlbS5oZWlnaHQpXHJcbiAgICAgICAgICAgIGl0ZW0uaGVpZ2h0ID0gMzAwXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWl0ZW0uc3BhbilcclxuICAgICAgICAgIGl0ZW0uc3BhbiA9IDhcclxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0uaXNSZXF1aXJlZCAhPSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgaXRlbS5pc1JlcXVpcmVkID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRlbXBWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIGl0ZW0udmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT0gXCJyZXF1aXJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcImVtYWlsXCIpIHtcclxuICAgICAgICAgICAgICB0ZW1wVmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdG9yLnR5cGUgPT0gXCJtYXhsZW5ndGhcIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdG9yLm1heGxlbmd0aCA/IHZhbGlkYXRvci5tYXhsZW5ndGggOiAxKSlcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcIm1pbmxlbmd0aFwiKSB7XHJcbiAgICAgICAgICAgICAgdGVtcFZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0b3IubWlubGVuZ3RoID8gdmFsaWRhdG9yLm1pbmxlbmd0aCA6IDEpKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRvci50eXBlID09IFwidGVscGhvbmVcIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2godGVscGhvbmVWYWxpZGF0b3IoKSlcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcInBhdHRlcm5cIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRvci5wYXR0ZXJuVmFsdWUpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB7dmFsdWU6IHZhbHVlICE9IHVuZGVmaW5lZCA/IHZhbHVlIDogbnVsbCwgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZSA/IGl0ZW0uZGlzYWJsZSA6IGZhbHNlfVxyXG4gICAgICAgIGlmICh0ZW1wVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF0ckZvcm0uYWRkQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSwgdGVtcFZhbGlkYXRvcnMpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hdHJGb3JtLmFkZENvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXCIgdGhpcy5hdHJGb3JtXCIsIHRoaXMuYXRyRm9ybSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBhcmUodmFsdWU6IGFueSwgb3BlcmF0b3I6IGFueSwgdGFyZ2V0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2VxJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdnaCcgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA+PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbm90RW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc1JpZ2h0O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJc1Nob3dCYXNlKG9wOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmIChvcC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMuYXRyRm9ybS5nZXQob3BbMF0pLnZhbHVlO1xyXG4gICAgICBpc1Nob3cgPSB0aGlzLmNvbXBhcmUodmFsdWUsIG9wWzFdLCBvcFsyXSlcclxuICAgIH0gZWxzZVxyXG4gICAgICBpc1Nob3cgPSBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgaXNSZXF1aXJlZChpdGVtOiBBdHJGb3JtRGV0YWlsKSB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICBsZXQgaXNSZXF1aXJlZCA9IGl0ZW0uaXNSZXF1aXJlZDtcclxuICAgIGxldCB0eXBlID0gdHlwZW9mIGlzUmVxdWlyZWQ7XHJcbiAgICBpZiAodHlwZSA9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICByZXR1cm4gaXNSZXF1aXJlZFxyXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwic3RyaW5nXCIpIHtcclxuXHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuaXNTaG93KGZhbHNlLCBpc1JlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwiaXNSZXF1aXJlZFwiLCByZXN1bHQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGlzU2hvdyhpc0hpZGRlbjogYW55LCBvcGVyYXRvcjogYW55KSB7XHJcbiAgICBpZiAoaXNIaWRkZW4pIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaWYgKCFvcGVyYXRvciB8fCBvcGVyYXRvciA9PSBudWxsIHx8IG9wZXJhdG9yID09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJyYmJykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8YiAmJmN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrSXNTaG93QmFzZShvcHNbaV0uc3BsaXQoJ3wnKSkpIHtcclxuICAgICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChvcGVyYXRvci5pbmRleE9mKCd8fCcpID4gMCkge1xyXG4gICAgICAvLyBhfGVxfGJ8fGN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvcCA9IG9wZXJhdG9yLnNwbGl0KFwifFwiKTtcclxuICAgICAgaXNTaG93ID0gdGhpcy5jaGVja0lzU2hvd0Jhc2Uob3ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGdldERpY3RWYWx1ZShjb2RlOiBzdHJpbmcpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiOTk5OVwiKTtcclxuICAgIHRoaXMuZGljdFNlcnZpY2UuZ2V0RGljdEJ5Y29kZShjb2RlKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlc3VsdCA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQgIT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuZGljdHNbY29kZV0gPSByZXN1bHQuZGljdHM7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmRpY3RzW2NvZGVdID0gW107XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIGltYWdlVXBsb2FkQ2hhbmdlKGU6IGFueSkge1xyXG4gICAgaWYgKGUua2V5KSB7XHJcbiAgICAgIHRoaXMuYXRyRm9ybS5nZXQoZS5rZXkpLnNldFZhbHVlKGUudmFsdWVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSgpIHtcclxuICAgIC8vIHRoaXMuYXRyRm9ybS5yZXNldCgpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJlZGl0b3IgcmVzZXRcIilcclxuICAgIGlmICh0aGlzLmZvcm1PcHRzICYmIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtT3B0cy50eXBlID09ICdhZGQnID8gaXRlbS5kZWZhdWx0VmFsdWUgOiBpdGVtLnZhbHVlO1xyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJpbWFnZVwiKSB7XHJcbiAgICAgICAgICBpdGVtLmltYWdlT3B0cy5rZXkgPSBpdGVtLmtleVxyXG4gICAgICAgICAgbGV0IGltYWdlczogYW55ID0gW107XHJcbiAgICAgICAgICBpZiAoIXZhbHVlKSB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICBsZXQgbGlzdCA9IHZhbHVlLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIGZvciAobGV0IGtleSBvZiBsaXN0KSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgIGltYWdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgdWlkOiBcIi0xXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGF0cl9zdGF0aWNfZGF0YXMuT1NTX1VSTCArIGtleVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGl0ZW0uaW1hZ2VPcHRzLmltYWdlTGlzdCA9IGltYWdlcztcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGltYWdlcylcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImVkaXRvclwiKVxyXG4gICAgICAgICAgaWYgKCF2YWx1ZSkgdmFsdWUgPSBcIlwiXHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gXCJzZWxlY3RcIiAmJiB2YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmF0ckZvcm0uZ2V0KGl0ZW0ua2V5KS5zZXRWYWx1ZSh2YWx1ZSAhPSB1bmRlZmluZWQgPyB2YWx1ZSA6IG51bGwpXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBpIGluIHRoaXMuYXRyRm9ybS5jb250cm9scykge1xyXG4gICAgICAgIHRoaXMuYXRyRm9ybS5jb250cm9sc1tpXS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLmF0ckZvcm0uY29udHJvbHNbaV0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICB0aGlzLmF0ckZvcm0uY29udHJvbHNbaV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgbGV0IG9iajogYW55ID0ge1xyXG4gICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgbW9kZTogdGhpcy5mb3JtT3B0cy50eXBlLFxyXG4gICAgICB2YWx1ZToge31cclxuICAgIH07XHJcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmF0ckZvcm0udmFsdWU7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcclxuICAgICAgLy8gLy9jb25zb2xlLmxvZyhrZXkpO1xyXG4gICAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiB2YWx1ZVtrZXldICE9IG51bGwgJiYgdmFsdWVba2V5XSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAodmFsdWVba2V5XSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5mb3JtT3B0cy5pdGVtcykge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT0ga2V5KSB7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGl0ZW0uZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgIG9iai52YWx1ZVtrZXldID0gZm9ybWF0RGF0ZSgodmFsdWVba2V5XSBhcyBEYXRlKSwgaXRlbS5kYXRlRm9ybWF0LCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgIG9iai52YWx1ZVtrZXldID0gZm9ybWF0RGF0ZSgodmFsdWVba2V5XSBhcyBEYXRlKSwgJ3l5eXktTU0tZGQgMDA6MDA6MDAnLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdkYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IGZvcm1hdERhdGUoKHZhbHVlW2tleV0gYXMgRGF0ZSksICd5eXl5LU1NLWRkIEhIOm1tOnNzJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVba2V5XSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ICE9IGtleSkge1xyXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBkYXRlRm9ybWF0ID0gaXRlbS5kYXRlRm9ybWF0ID8gaXRlbS5kYXRlRm9ybWF0IDogJ3l5eXktTU0tZGQgMDA6MDA6MDAnO1xyXG4gICAgICAgICAgICBpZiAoaXRlbS50eXBlID09ICdkYXRlUmFuZ2UnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGVBcnI6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgIGxldCBuelNob3dUaW1lID0gaXRlbS5uelNob3dUaW1lXHJcbiAgICAgICAgICAgICAgaWYgKG56U2hvd1RpbWUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbTpzcydcclxuICAgICAgICAgICAgICAgIGlmIChuelNob3dUaW1lLm56Rm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgPSAneXl5eS1NTS1kZCAnICsgbnpTaG93VGltZS5uekZvcm1hdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgZCBvZiB2YWx1ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlQXJyLnB1c2goZm9ybWF0RGF0ZSgoZCBhcyBEYXRlKSwgZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBkYXRlQXJyO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnY2FzY2FkZXInKSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSB2YWx1ZVtrZXldXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdzZWxlY3QnICYmIGl0ZW0ubnpNb2RlID09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IHZhbHVlW2tleV0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IHZhbHVlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSB2YWx1ZVtrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVZhaWxkKCk6IGFueSB7XHJcbiAgICBsZXQgb2JqOiBhbnkgPSB7XHJcbiAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICBtb2RlOiB0aGlzLmZvcm1PcHRzLnR5cGUsXHJcbiAgICAgIHZhbHVlOiB7fVxyXG4gICAgfTtcclxuICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmF0ckZvcm0uY29udHJvbHMpIHtcclxuICAgICAgdGhpcy5hdHJGb3JtLmNvbnRyb2xzW2ldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHRoaXMuYXRyRm9ybS5jb250cm9sc1tpXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBvYmouaXNWYWxpZCA9IHRoaXMuYXRyRm9ybS52YWxpZFxyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLnZhbHVlO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGtleSk7XHJcbiAgICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHZhbHVlW2tleV0gIT0gbnVsbCAmJiB2YWx1ZVtrZXldICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmICh2YWx1ZVtrZXldIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmtleSAhPSBrZXkpIHtcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXRlbS5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBmb3JtYXREYXRlKCh2YWx1ZVtrZXldIGFzIERhdGUpLCBpdGVtLmRhdGVGb3JtYXQsIHRoaXMubG9jYWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBmb3JtYXREYXRlKCh2YWx1ZVtrZXldIGFzIERhdGUpLCAneXl5eS1NTS1kZCAwMDowMDowMCcsIHRoaXMubG9jYWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGVUaW1lJykge1xyXG4gICAgICAgICAgICAgIG9iai52YWx1ZVtrZXldID0gZm9ybWF0RGF0ZSgodmFsdWVba2V5XSBhcyBEYXRlKSwgJ3l5eXktTU0tZGQgSEg6bW06c3MnLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVtrZXldIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5mb3JtT3B0cy5pdGVtcykge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT0ga2V5KSB7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGRhdGVGb3JtYXQgPSBpdGVtLmRhdGVGb3JtYXQgPyBpdGVtLmRhdGVGb3JtYXQgOiAneXl5eS1NTS1kZCAwMDowMDowMCc7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGVSYW5nZScpIHtcclxuICAgICAgICAgICAgICBsZXQgZGF0ZUFycjogYW55ID0gW107XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgZCBvZiB2YWx1ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlQXJyLnB1c2goZm9ybWF0RGF0ZSgoZCBhcyBEYXRlKSwgZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBkYXRlQXJyO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnY2FzY2FkZXInKSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSB2YWx1ZVtrZXldXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdzZWxlY3QnICYmIGl0ZW0ubnpNb2RlID09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IHZhbHVlW2tleV0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IHZhbHVlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSB2YWx1ZVtrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RpbWUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0uZGF0ZUZvcm1hdCB8fCBpdGVtLmRhdGVGb3JtYXQgPT0gXCJ5eXl5LU1NLWRkXCIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICBsZXQgZm9ybWF0ID0gaXRlbS5kYXRlRm9ybWF0O1xyXG4gICAgaWYgKGZvcm1hdC5pbmRleE9mKFwiSEhcIikpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZm9ybWF0LmluZGV4T2YoXCJtbVwiKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChmb3JtYXQuaW5kZXhPZihcInNzXCIpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8YXRyLXZpZXctZm9ybSAqbmdJZj1cImZvcm1PcHRzLnR5cGUgPT0gJ3ZpZXcnXCIgW2RpY3RzXT1cImRpY3RzXCIgW2F0ckZvcm1dPVwiYXRyRm9ybVwiXHJcbiAgICAgICAgICAgICAgIFtmb3JtT3B0c109XCJmb3JtT3B0c1wiPjwvYXRyLXZpZXctZm9ybT5cclxuPGZvcm0gbnotZm9ybSBbZm9ybUdyb3VwXT1cImF0ckZvcm1cIiAqbmdJZj1cImZvcm1PcHRzLnR5cGUgIT0gJ3ZpZXcnXCI+XHJcbiAgPGRpdiBuei1yb3cgbnpHdXR0ZXI9XCI4XCIgbnpUeXBlPVwiZmxleFwiIG56QWxpZ249XCJ0b3BcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZm9ybU9wdHMuaXRlbXNcIj5cclxuICAgICAgPGRpdiBuei1jb2wgbnpTcGFuPVwiMjRcIiBjbGFzcz1cImZvcm0tdGl0bGVcIiAqbmdJZj1cIml0ZW0udHlwZSA9PSAndGl0bGUnXCI+XHJcbiAgICAgICAge3tpdGVtLmxhYmVsfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgbnotY29sIFtuelNwYW5dPVwiaXRlbS5zcGFuXCIgKm5nSWY9XCJpc1Nob3coaXRlbS5pc0hpZGRlbixpdGVtLm9wZXJhdG9yKVwiPlxyXG5cclxuICAgICAgICA8bnotZm9ybS1pdGVtICpuZ0lmPVwiaXRlbS50eXBlICE9ICd0aXRsZSdcIj5cclxuICAgICAgICAgIDxuei1mb3JtLWxhYmVsIFtuelNtXT1cIml0ZW0ubHNwYW5cIiBbbnpYc109XCIyNFwiIFtuelJlcXVpcmVkXT1cImlzUmVxdWlyZWQoaXRlbSlcIj57e2l0ZW0ubGFiZWx9fTwvbnotZm9ybS1sYWJlbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgW256U21dPVwiaXRlbS5jc3BhblwiIFtuelhzXT1cIjI0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O3dpZHRoOiAxMDAlXCI+XHJcbiAgICAgICAgICAgICAgPG56LXRyZWUtc2VsZWN0ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0cmVlU2VsZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuek5vZGVzXT1cIml0ZW0udHJlZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuelNob3dTZWFyY2g9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnpIaWRlVW5NYXRjaGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG56UGxhY2VIb2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuelNob3dTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpBbGxvd0NsZWFyXT1cIiFpdGVtLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpNdWx0aXBsZV09XCJpdGVtLnNlbGVjdFVybC5pc011bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiaXRlbS5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZmxleDogMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbnotdHJlZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPG56LXRyZWUtc2VsZWN0ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0cmVlU2VsZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuekFsbG93Q2xlYXJdPVwiIWl0ZW0ubm90TnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuek5vZGVzXT1cIml0ZW0udHJlZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuelNob3dTZWFyY2g9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnpIaWRlVW5NYXRjaGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG56UGxhY2VIb2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuelNob3dTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpNdWx0aXBsZV09XCJpdGVtLnNlbGVjdFVybC5pc011bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiaXRlbS5yZWFkb25seVwiIHN0eWxlPVwiZmxleDogMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbnotdHJlZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPGFwcC1zZWxlY3QtaWNvbnMgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3NlbGVjdEljb24nXCIgbnotaW5wdXQgcGxhY2Vob2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZsZXg6IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj5cclxuICAgICAgICAgICAgICA8L2FwcC1zZWxlY3QtaWNvbnM+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0ZXh0J1wiIG56LWlucHV0IHBsYWNlaG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXRlbS5yZWFkb25seSB8fCBmb3JtT3B0cy50eXBlID09ICd2aWV3J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIi8+XHJcbiAgICAgICAgICAgICAgPHRleHRhcmVhICpuZ0lmPVwiaXRlbS50eXBlID09ICd0ZXh0YXJlYSdcIiBuei1pbnB1dCBbcm93c109XCJpdGVtLnJvd3NcIiBwbGFjZWhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5fHwgZm9ybU9wdHMudHlwZSA9PSAndmlldydcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgIDxuei1pbnB1dC1udW1iZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ251bWJlcidcIiBuelBsYWNlSG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256TWluXT1cIml0ZW0ubWluTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWlucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgICA8bnotcmFkaW8tZ3JvdXAgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3JhZGlvJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBuei1yYWRpbyAqbmdGb3I9XCJsZXQgbyBvZiBpdGVtLmRpY3RMaXN0XCIgW256VmFsdWVdPVwiby52YWx1ZVwiPnt7by5sYWJlbH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L256LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgIDxuei1zZWxlY3RcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS50eXBlID09ICdzZWxlY3QnXCJcclxuICAgICAgICAgICAgICAgIG56UGxhY2VIb2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICBuekFsbG93Q2xlYXI9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgbnpTZXJ2ZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgIFtuek1vZGVdPVwiaXRlbS5uek1vZGUgfHwgJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgICAgIG56RGlzYWJsZWQ9XCJ7e2l0ZW0ucmVhZG9ubHl8fCBmb3JtT3B0cy50eXBlID09ICd2aWV3J319XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bnotb3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIGRpY3RzW2l0ZW0uZGljdENvZGVdXCIgW256TGFiZWxdPVwiby50eXBlTmFtZVwiIFtuelZhbHVlXT1cIm8uaWRcIj48L256LW9wdGlvbj5cclxuICAgICAgICAgICAgICA8L256LXNlbGVjdD5cclxuICAgICAgICAgICAgICA8bnotc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0udHlwZSA9PSAnc2VsZWN0YydcIlxyXG4gICAgICAgICAgICAgICAgbnpQbGFjZUhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgIG56QWxsb3dDbGVhcj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiXHJcbiAgICAgICAgICAgICAgICBuelNlcnZlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgW256TW9kZV09XCJpdGVtLm56TW9kZSB8fCAnZGVmYXVsdCdcIlxyXG4gICAgICAgICAgICAgICAgbnpEaXNhYmxlZD1cInt7aXRlbS5yZWFkb25seXx8IGZvcm1PcHRzLnR5cGUgPT0gJ3ZpZXcnfX1cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuei1vcHRpb24gKm5nRm9yPVwibGV0IG8gb2YgaXRlbS5kaWN0TGlzdFwiIFtuekxhYmVsXT1cIm8ubGFiZWxcIiBbbnpWYWx1ZV09XCJvLnZhbHVlXCI+PC9uei1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uei1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPG56LWNhc2NhZGVyIFtuekRpc2FibGVkXT1cIml0ZW0ucmVhZG9ubHlcIiBzdHlsZT1cImZsZXg6IDFcIiBbbnpBbGxvd0NsZWFyXT1cIiFpdGVtLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpWYWx1ZVByb3BlcnR5XT1cIiduelZhbHVlUHJvcGVydHknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1NlYXJjaF09XCJ0cnVlXCIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2Nhc2NhZGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuek9wdGlvbnNdPVwiaXRlbS5kaWN0TGlzdFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWNhc2NhZGVyPlxyXG4gICAgICAgICAgICAgIDxuei1kYXRlLXBpY2tlciAqbmdJZj1cIml0ZW0udHlwZSA9PSAnZGF0ZSdcIiBbbnpGb3JtYXRdPVwiaXRlbS5kYXRlRm9ybWF0ID8gaXRlbS5kYXRlRm9ybWF0IDogJ3l5eXktTU0tZGQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1RpbWVdPVwic2hvd1RpbWUoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJmb3JtT3B0cy50eXBlID09ICd2aWV3JyB8fCBpdGVtLnJlYWRvbmx5IFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgIDxuei1yYW5nZS1waWNrZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2RhdGVSYW5nZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1RpbWVdPVwiaXRlbS5uelNob3dUaW1lPyBpdGVtLm56U2hvd1RpbWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuekZvcm1hdF09XCJpdGVtLm56U2hvd1RpbWUgJiYgaXRlbS5uelNob3dUaW1lLm56Rm9ybWF0ID8gKCd5eXl5LU1NLWRkICcrIGl0ZW0ubnpTaG93VGltZS5uekZvcm1hdCkgOiAneXl5eS1NTS1kZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256UGxhY2VIb2xkZXJdPVwiWyflvIDlp4vml7bpl7QnLCAn57uT5p2f5pe26Ze0J11cIj48L256LXJhbmdlLXBpY2tlcj5cclxuXHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXRlbS50eXBlID09ICdpbWFnZSdcIiBuei1pbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2hpZGRlbl09XCJ0cnVlXCIvPlxyXG4gICAgICAgICAgICAgIDxhdHItaW1nLXVwbG9hZCAqbmdJZj1cIml0ZW0udHlwZSA9PSAnaW1hZ2UnXCIgWyhvcHRzKV09XCJpdGVtLmltYWdlT3B0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZnRlckNoYW5nZSk9XCJpbWFnZVVwbG9hZENoYW5nZSgkZXZlbnQpXCI+PC9hdHItaW1nLXVwbG9hZD5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICA8ZWRpdG9yICpuZ0lmPVwiaXRlbS50eXBlID09ICdlZGl0b3InXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwie2luaXRpYWxGcmFtZUhlaWdodDppdGVtLmhlaWdodH1cIiA+PC9lZGl0b3I+LS0+XHJcbiAgICAgICAgICAgICAgPGFwcC1xdWlsbC1lZGl0b3IgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2VkaXRvcidcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIntoZWlnaHQ6aXRlbS5oZWlnaHQgPiAwID8gaXRlbS5oZWlnaHQgKyAncHgnIDogJzI1MHB4J31cIj48L2FwcC1xdWlsbC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnd29yZCdcIiBbaW5uZXJIVE1MXT1cIml0ZW0udmFsdWUgfGRlZlZhbDppdGVtLmRlZmF1bHRWYWx1ZSB8c2FmZUh0bWxcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZCBvZiBpdGVtLnZhbGlkYXRvcnNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHJGb3JtLmdldChpdGVtLmtleSkuaGFzRXJyb3IodmFsaWQudHlwZSkgJiYgKGF0ckZvcm0uZ2V0KGl0ZW0ua2V5KS5kaXJ0eSApXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJjb2xvcjpyZWQ7ICAgIGhlaWdodDogMTVweDttYXJnaW46IDA7bGluZS1oZWlnaHQ6IDE1cHg7XCI+e3t2YWxpZC5lcnJvckxhYmVsfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cImRlZmF1bHRcIiBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO2NvbG9yOiBibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZW5kc1wiIGRpc2FibGVkPlxyXG4gICAgICAgICAgICAgICAge3tpdGVtLmVuZHN9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpdGVtLmJ1dHRvbj8uaXNTaG93XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYW50LWJ0biBhbnQtYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvQWN0aW9uKGl0ZW0uYnV0dG9uLCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5idXR0b24ubmFtZX19PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ucHJvcG9zYWxcIiBzdHlsZT1cImNvbG9yOiByZWQ7d2lkdGg6IDEwMCVcIj57e2l0ZW0ucHJvcG9zYWx9fTwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvbnotZm9ybS1jb250cm9sPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW0udGVtcFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbnotZm9ybS1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9mb3JtPlxyXG4iXX0=
516
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0vZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBWSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUF5QixXQUFXLEVBQUUsVUFBVSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBb0QsTUFBTSwrQkFBK0IsQ0FBQztBQUVsSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFReEQsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQiwyQ0FBMkM7SUFDM0MsWUFBb0IsWUFBMEIsRUFBVSxXQUF3QixFQUM1RCxFQUFlLEVBQVUsV0FBd0IsRUFBVSxRQUFrQixFQUE2QixNQUFjO1FBRHhILGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDNUQsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUE2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUDVJLFVBQUssR0FBUSxFQUFFLENBQUM7UUFHTixlQUFVLEdBQUcs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QUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUM1QjthQUNGO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBUztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLFlBQVksRUFBRTtZQUN2RCxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM3QixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzhHQW5kVSxnQkFBZ0IsdUpBU2dGLFNBQVM7a0dBVHpHLGdCQUFnQix5SENoQjdCLHk3UUFtSUE7NEZEbkhhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxVQUFVOzswQkFhZ0YsTUFBTTsyQkFBQyxTQUFTOzRDQUwzRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgSW5qZWN0b3IsIEluamVjdCwgTE9DQUxFX0lELCBPdXRwdXQsIEV2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7dGVscGhvbmVWYWxpZGF0b3J9IGZyb20gJy4uL3ZhbGlkYXRvcnMvYXRyLXZhbGlkdG9ycyc7XHJcbmltcG9ydCB7Zm9ybWF0RGF0ZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtTaGFyZVNlcnZpY2V9IGZyb20gJy4uL3NoYXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tIFwibmctem9ycm8tYW50ZC9jb3JlL2Vudmlyb25tZW50c1wiO1xyXG5pbXBvcnQge2F0cl9zdGF0aWNfZGF0YXMsIEF0ckZvcm1EZXRhaWwsIEF0ckZvcm1PcHQsIEZvcm1BY3Rpb24sIGZvcm1CdXR0b259IGZyb20gXCIuLi8uLi8uLi9jb3JlL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5pbXBvcnQge0RpY3RTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9kaWN0L2RpY3Quc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcbmltcG9ydCB7SHR0cFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdHItZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXRyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGRpY3RzOiBhbnkgPSB7fTtcclxuICBhdHJGb3JtOiBGb3JtR3JvdXAgfCBhbnk7XHJcbiAgQElucHV0KCkgZm9ybU9wdHM6IEF0ckZvcm1PcHQgfCBhbnk7XHJcbiAgQE91dHB1dCgpIGZvcm1BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1BY3Rpb24+KCk7XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNoYXJlU2VydmljZTogU2hhcmVTZXJ2aWNlLCBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBkaWN0U2VydmljZTogRGljdFNlcnZpY2UsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5hdHJGb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgfVxyXG5cclxuICByZXNldExheW91dChpdGVtOiBhbnkpIHtcclxuICAgIGlmICghaXRlbS5sc3Bhbikge1xyXG4gICAgICBpdGVtLmxzcGFuID0gMjQ7XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0uY3NwYW4pIHtcclxuICAgICAgaXRlbS5jc3BhbiA9IDI0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb24oaXRlbTogZm9ybUJ1dHRvbiwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICB9XHJcbiAgICBsZXQgYWN0aW9uOiBGb3JtQWN0aW9uID0ge1xyXG4gICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgIGNvZGU6IGl0ZW0uY29kZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZvcm1BY3Rpb24uZW1pdChhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuYXRyRm9ybS5nZXQoa2V5KT8uc2V0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERpY0xpc3QoaXRlbTogYW55KSB7XHJcbiAgICB0aGlzLnNoYXJlU2VydmljZS5nZXREaWNMaXN0KGl0ZW0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDAgJiYgcmVzLml0ZW0pIHtcclxuICAgICAgICBpdGVtID0gcmVzLml0ZW1cclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIGNvbnYoZGF0YXM6IGFueSwga2V5czogYW55KTogYW55IHtcclxuICAgIHJldHVybiBkYXRhcy5tYXAoKGNoaWxkOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGl0ZW06IGFueSA9IHt9O1xyXG4gICAgICBpZiAoa2V5cykge1xyXG4gICAgICAgIGtleXMuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgdnMgPSB2LnNwbGl0KFwifFwiKTtcclxuICAgICAgICAgIGNoaWxkW3ZzWzBdXSA9IGNoaWxkW3ZzWzFdXTtcclxuICAgICAgICAgIGl0ZW1bdnNbMF1dID0gY2hpbGRbdnNbMV1dO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0gPSBjaGlsZDtcclxuICAgICAgfVxyXG4gICAgICBjaGlsZC5uelZhbHVlUHJvcGVydHkgPSBpdGVtO1xyXG4gICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIHtcclxuICAgICAgICBjaGlsZC5jaGlsZHJlbiA9IHRoaXMuY29udihjaGlsZC5jaGlsZHJlbiwga2V5cylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjaGlsZC5pc0xlYWYgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNoaWxkO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldENhc2NhZGVyRGVmYXVsdFZhbHVlKGxpc3Q6IGFueSwgaW5kZXg6IGFueSwgdmFsdWU6IGFueSkge1xyXG4gICAgbGlzdC5mb3JFYWNoKChkaWM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGljLnZhbHVlID09IHZhbHVlW2luZGV4XSkge1xyXG4gICAgICAgIHZhbHVlW2luZGV4XSA9IGRpYy5uelZhbHVlUHJvcGVydHlcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0Q2FzY2FkZXJEZWZhdWx0VmFsdWUoZGljLmNoaWxkcmVuLCBpbmRleCArIDEsIHZhbHVlKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIHZhbHVlXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1PcHRzICYmIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgLy8gdGhpcy5hdHJGb3JtLmFkZENvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtQ29udHJvbCgpKTtcclxuICAgICAgICB0aGlzLnJlc2V0TGF5b3V0KGl0ZW0pXHJcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtT3B0cy50eXBlID09ICdhZGQnID8gaXRlbS5kZWZhdWx0VmFsdWUgOiBpdGVtLnZhbHVlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICAgICAgICBpZiAoaXRlbS50eXBlID09ICd0cmVlU2VsZWN0JyAmJiBpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgICAgIGxldCBrZXlzID0gaXRlbS5zZWxlY3RVcmwuY29udmVydC5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgdGhpcy5odHRwU2VydmljZS5wb3N0KGl0ZW0uc2VsZWN0VXJsLnVybCwge30sIFRvb2xzVXRpbC5nZXRIdHRwT3B0aW9ucygpKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgaXRlbS50cmVlTGlzdCA9IHJlcy5kYXRhLmZpbHRlcigoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGtleXMuZm9yRWFjaCgodjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdnMgPSB2LnNwbGl0KFwifFwiKTtcclxuICAgICAgICAgICAgICAgIGNoaWxkW3ZzWzBdXSA9IGNoaWxkW3ZzWzFdXTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2Nhc2NhZGVyJyAmJiBpdGVtLnNlbGVjdFVybC51cmwpIHtcclxuICAgICAgICAgIGxldCBrZXlzOiBhbnkgPSBudWxsXHJcbiAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RVcmwuY29udmVydCkge1xyXG4gICAgICAgICAgICBrZXlzID0gaXRlbS5zZWxlY3RVcmwuY29udmVydC5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaHR0cFNlcnZpY2UucG9zdChpdGVtLnNlbGVjdFVybC51cmwsIHt9LCBUb29sc1V0aWwuZ2V0SHR0cE9wdGlvbnMoKSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uZGljdExpc3QgPSB0aGlzLmNvbnYocmVzLmRhdGEsIGtleXMpXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldENhc2NhZGVyRGVmYXVsdFZhbHVlKGl0ZW0uZGljdExpc3QsIDAsIHZhbHVlKVxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoaXRlbS5rZXksIHZhbHVlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS50eXBlID09IFwic2VsZWN0XCIpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0RGljdFZhbHVlKGl0ZW0uZGljdENvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS50eXBlID09ICdzZWxlY3RjJykge1xyXG4gICAgICAgICAgaWYgKCFpdGVtLmRpY3RMaXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGljTGlzdChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcInRleHRhcmVhXCIgJiYgIWl0ZW0ucm93cylcclxuICAgICAgICAgIGl0ZW0ucm93cyA9IDU7XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcImltYWdlXCIpIHtcclxuICAgICAgICAgIGl0ZW0uaW1hZ2VPcHRzLmtleSA9IGl0ZW0ua2V5XHJcbiAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgbGV0IGltYWdlczogYW55ID0gW107XHJcbiAgICAgICAgICAgIGxldCBsaXN0ID0gdmFsdWUuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgbGlzdCkge1xyXG4gICAgICAgICAgICAgIGltYWdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgdWlkOiBcIi0xXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGF0cl9zdGF0aWNfZGF0YXMuT1NTX1VSTCArIGtleVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbS5pbWFnZU9wdHMuaW1hZ2VMaXN0ID0gaW1hZ2VzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS50eXBlID09ICdlZGl0b3InKSB7XHJcbiAgICAgICAgICBpZiAoIXZhbHVlKSB2YWx1ZSA9IFwiXCJcclxuICAgICAgICAgIGlmICghaXRlbS5oZWlnaHQpXHJcbiAgICAgICAgICAgIGl0ZW0uaGVpZ2h0ID0gMzAwXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWl0ZW0uc3BhbilcclxuICAgICAgICAgIGl0ZW0uc3BhbiA9IDhcclxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0uaXNSZXF1aXJlZCAhPSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgaXRlbS5pc1JlcXVpcmVkID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRlbXBWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIGl0ZW0udmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT0gXCJyZXF1aXJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS5pc1JlcXVpcmVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcImVtYWlsXCIpIHtcclxuICAgICAgICAgICAgICB0ZW1wVmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsaWRhdG9yLnR5cGUgPT0gXCJtYXhsZW5ndGhcIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdG9yLm1heGxlbmd0aCA/IHZhbGlkYXRvci5tYXhsZW5ndGggOiAxKSlcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcIm1pbmxlbmd0aFwiKSB7XHJcbiAgICAgICAgICAgICAgdGVtcFZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0b3IubWlubGVuZ3RoID8gdmFsaWRhdG9yLm1pbmxlbmd0aCA6IDEpKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRvci50eXBlID09IFwidGVscGhvbmVcIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2godGVscGhvbmVWYWxpZGF0b3IoKSlcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0b3IudHlwZSA9PSBcInBhdHRlcm5cIikge1xyXG4gICAgICAgICAgICAgIHRlbXBWYWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRvci5wYXR0ZXJuVmFsdWUpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB7dmFsdWU6IHZhbHVlICE9IHVuZGVmaW5lZCA/IHZhbHVlIDogbnVsbCwgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZSA/IGl0ZW0uZGlzYWJsZSA6IGZhbHNlfVxyXG4gICAgICAgIGlmICh0ZW1wVmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF0ckZvcm0uYWRkQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1Db250cm9sKGRlZmF1bHRWYWx1ZSwgdGVtcFZhbGlkYXRvcnMpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hdHJGb3JtLmFkZENvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtQ29udHJvbChkZWZhdWx0VmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXCIgdGhpcy5hdHJGb3JtXCIsIHRoaXMuYXRyRm9ybSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBhcmUodmFsdWU6IGFueSwgb3BlcmF0b3I6IGFueSwgdGFyZ2V0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1JpZ2h0ID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2VxJyA6XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRhcmdldCkge1xyXG4gICAgICAgICAgaXNSaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdnaCcgOlxyXG4gICAgICAgIGlmICh2YWx1ZSA+PSB0YXJnZXQpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbm90RW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlzUmlnaHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZW1wdHknOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICBpc1JpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgIGlzUmlnaHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc1JpZ2h0O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJc1Nob3dCYXNlKG9wOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcclxuICAgIGlmIChvcC5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMuYXRyRm9ybS5nZXQob3BbMF0pLnZhbHVlO1xyXG4gICAgICBpc1Nob3cgPSB0aGlzLmNvbXBhcmUodmFsdWUsIG9wWzFdLCBvcFsyXSlcclxuICAgIH0gZWxzZVxyXG4gICAgICBpc1Nob3cgPSBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gaXNTaG93O1xyXG4gIH1cclxuXHJcbiAgaXNSZXF1aXJlZChpdGVtOiBBdHJGb3JtRGV0YWlsKSB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICBsZXQgaXNSZXF1aXJlZCA9IGl0ZW0uaXNSZXF1aXJlZDtcclxuICAgIGxldCB0eXBlID0gdHlwZW9mIGlzUmVxdWlyZWQ7XHJcbiAgICBpZiAodHlwZSA9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICByZXR1cm4gaXNSZXF1aXJlZFxyXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwic3RyaW5nXCIpIHtcclxuXHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuaXNTaG93KGZhbHNlLCBpc1JlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwiaXNSZXF1aXJlZFwiLCByZXN1bHQpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGlzU2hvdyhpc0hpZGRlbjogYW55LCBvcGVyYXRvcjogYW55KSB7XHJcbiAgICBpZiAoaXNIaWRkZW4pIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgbGV0IGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgaWYgKCFvcGVyYXRvciB8fCBvcGVyYXRvciA9PSBudWxsIHx8IG9wZXJhdG9yID09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yLmluZGV4T2YoJyYmJykgPiAwKSB7XHJcbiAgICAgIC8vIGF8ZXF8YiAmJmN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaXNTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKCF0aGlzLmNoZWNrSXNTaG93QmFzZShvcHNbaV0uc3BsaXQoJ3wnKSkpIHtcclxuICAgICAgICAgICAgaXNTaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChvcGVyYXRvci5pbmRleE9mKCd8fCcpID4gMCkge1xyXG4gICAgICAvLyBhfGVxfGJ8fGN8ZXF8ZFxyXG4gICAgICBjb25zdCBvcHMgPSBvcGVyYXRvci5zcGxpdCgnJiYnKTtcclxuICAgICAgaWYgKG9wcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlzU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tJc1Nob3dCYXNlKG9wc1tpXS5zcGxpdCgnfCcpKSkge1xyXG4gICAgICAgICAgICBpc1Nob3cgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvcCA9IG9wZXJhdG9yLnNwbGl0KFwifFwiKTtcclxuICAgICAgaXNTaG93ID0gdGhpcy5jaGVja0lzU2hvd0Jhc2Uob3ApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzU2hvdztcclxuICB9XHJcblxyXG4gIGdldERpY3RWYWx1ZShjb2RlOiBzdHJpbmcpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiOTk5OVwiKTtcclxuICAgIHRoaXMuZGljdFNlcnZpY2UuZ2V0RGljdEJ5Y29kZShjb2RlKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlc3VsdCA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQgIT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuZGljdHNbY29kZV0gPSByZXN1bHQuZGljdHM7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmRpY3RzW2NvZGVdID0gW107XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIGltYWdlVXBsb2FkQ2hhbmdlKGU6IGFueSkge1xyXG4gICAgaWYgKGUua2V5KSB7XHJcbiAgICAgIHRoaXMuYXRyRm9ybS5nZXQoZS5rZXkpLnNldFZhbHVlKGUudmFsdWVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSgpIHtcclxuICAgIC8vIHRoaXMuYXRyRm9ybS5yZXNldCgpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJlZGl0b3IgcmVzZXRcIilcclxuICAgIGlmICh0aGlzLmZvcm1PcHRzICYmIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtT3B0cy50eXBlID09ICdhZGQnID8gaXRlbS5kZWZhdWx0VmFsdWUgOiBpdGVtLnZhbHVlO1xyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJpbWFnZVwiKSB7XHJcbiAgICAgICAgICBpdGVtLmltYWdlT3B0cy5rZXkgPSBpdGVtLmtleVxyXG4gICAgICAgICAgbGV0IGltYWdlczogYW55ID0gW107XHJcbiAgICAgICAgICBpZiAoIXZhbHVlKSB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICBsZXQgbGlzdCA9IHZhbHVlLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIGZvciAobGV0IGtleSBvZiBsaXN0KSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgIGltYWdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgdWlkOiBcIi0xXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGF0cl9zdGF0aWNfZGF0YXMuT1NTX1VSTCArIGtleVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGl0ZW0uaW1hZ2VPcHRzLmltYWdlTGlzdCA9IGltYWdlcztcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGltYWdlcylcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImVkaXRvclwiKVxyXG4gICAgICAgICAgaWYgKCF2YWx1ZSkgdmFsdWUgPSBcIlwiXHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gXCJzZWxlY3RcIiAmJiB2YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmF0ckZvcm0uZ2V0KGl0ZW0ua2V5KS5zZXRWYWx1ZSh2YWx1ZSAhPSB1bmRlZmluZWQgPyB2YWx1ZSA6IG51bGwpXHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBpIGluIHRoaXMuYXRyRm9ybS5jb250cm9scykge1xyXG4gICAgICAgIHRoaXMuYXRyRm9ybS5jb250cm9sc1tpXS5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLmF0ckZvcm0uY29udHJvbHNbaV0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICB0aGlzLmF0ckZvcm0uY29udHJvbHNbaV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgbGV0IG9iajogYW55ID0ge1xyXG4gICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgbW9kZTogdGhpcy5mb3JtT3B0cy50eXBlLFxyXG4gICAgICB2YWx1ZToge31cclxuICAgIH07XHJcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmF0ckZvcm0udmFsdWU7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcclxuICAgICAgLy8gLy9jb25zb2xlLmxvZyhrZXkpO1xyXG4gICAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiB2YWx1ZVtrZXldICE9IG51bGwgJiYgdmFsdWVba2V5XSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAodmFsdWVba2V5XSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5mb3JtT3B0cy5pdGVtcykge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT0ga2V5KSB7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGl0ZW0uZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgIG9iai52YWx1ZVtrZXldID0gZm9ybWF0RGF0ZShuZXcgRGF0ZShOdW1iZXIodmFsdWVba2V5XSkpLCBpdGVtLmRhdGVGb3JtYXQsIHRoaXMubG9jYWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBmb3JtYXREYXRlKG5ldyBEYXRlKE51bWJlcih2YWx1ZVtrZXldKSksICd5eXl5LU1NLWRkIDAwOjAwOjAwJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZVRpbWUnKSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBmb3JtYXREYXRlKG5ldyBEYXRlKE51bWJlcih2YWx1ZVtrZXldKSksICd5eXl5LU1NLWRkIEhIOm1tOnNzJywgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVba2V5XSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuZm9ybU9wdHMuaXRlbXMpIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ICE9IGtleSkge1xyXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBkYXRlRm9ybWF0ID0gaXRlbS5kYXRlRm9ybWF0ID8gaXRlbS5kYXRlRm9ybWF0IDogJ3l5eXktTU0tZGQgMDA6MDA6MDAnO1xyXG4gICAgICAgICAgICBpZiAoaXRlbS50eXBlID09ICdkYXRlUmFuZ2UnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGVBcnI6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgIGxldCBuelNob3dUaW1lID0gaXRlbS5uelNob3dUaW1lXHJcbiAgICAgICAgICAgICAgaWYgKG56U2hvd1RpbWUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbTpzcydcclxuICAgICAgICAgICAgICAgIGlmIChuelNob3dUaW1lLm56Rm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQgPSAneXl5eS1NTS1kZCAnICsgbnpTaG93VGltZS5uekZvcm1hdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgZCBvZiB2YWx1ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlQXJyLnB1c2goZm9ybWF0RGF0ZSgoZCBhcyBEYXRlKSwgZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBkYXRlQXJyO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnY2FzY2FkZXInKSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSB2YWx1ZVtrZXldXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdzZWxlY3QnICYmIGl0ZW0ubnpNb2RlID09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IHZhbHVlW2tleV0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IHZhbHVlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSB2YWx1ZVtrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVZhaWxkKCk6IGFueSB7XHJcbiAgICBsZXQgb2JqOiBhbnkgPSB7XHJcbiAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICBtb2RlOiB0aGlzLmZvcm1PcHRzLnR5cGUsXHJcbiAgICAgIHZhbHVlOiB7fVxyXG4gICAgfTtcclxuICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmF0ckZvcm0uY29udHJvbHMpIHtcclxuICAgICAgdGhpcy5hdHJGb3JtLmNvbnRyb2xzW2ldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHRoaXMuYXRyRm9ybS5jb250cm9sc1tpXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBvYmouaXNWYWxpZCA9IHRoaXMuYXRyRm9ybS52YWxpZFxyXG4gICAgbGV0IHZhbHVlID0gdGhpcy5hdHJGb3JtLnZhbHVlO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGtleSk7XHJcbiAgICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHZhbHVlW2tleV0gIT0gbnVsbCAmJiB2YWx1ZVtrZXldICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmICh2YWx1ZVtrZXldIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLmZvcm1PcHRzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmtleSAhPSBrZXkpIHtcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXRlbS5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBmb3JtYXREYXRlKG5ldyBEYXRlKE51bWJlcih2YWx1ZVtrZXldKSksIGl0ZW0uZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnZGF0ZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IGZvcm1hdERhdGUobmV3IERhdGUoTnVtYmVyKHZhbHVlW2tleV0pKSwgJ3l5eXktTU0tZGQgMDA6MDA6MDAnLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdkYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IGZvcm1hdERhdGUobmV3IERhdGUoTnVtYmVyKHZhbHVlW2tleV0pKSwgJ3l5eXktTU0tZGQgSEg6bW06c3MnLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVtrZXldIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5mb3JtT3B0cy5pdGVtcykge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT0ga2V5KSB7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGRhdGVGb3JtYXQgPSBpdGVtLmRhdGVGb3JtYXQgPyBpdGVtLmRhdGVGb3JtYXQgOiAneXl5eS1NTS1kZCAwMDowMDowMCc7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGVSYW5nZScpIHtcclxuICAgICAgICAgICAgICBsZXQgZGF0ZUFycjogYW55ID0gW107XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgZCBvZiB2YWx1ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlQXJyLnB1c2goZm9ybWF0RGF0ZSgoZCBhcyBEYXRlKSwgZGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSBkYXRlQXJyO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnY2FzY2FkZXInKSB7XHJcbiAgICAgICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSB2YWx1ZVtrZXldXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09ICdzZWxlY3QnICYmIGl0ZW0ubnpNb2RlID09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IHZhbHVlW2tleV0udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBvYmoudmFsdWVba2V5XSA9IHZhbHVlW2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb2JqLnZhbHVlW2tleV0gPSB2YWx1ZVtrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RpbWUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0uZGF0ZUZvcm1hdCB8fCBpdGVtLmRhdGVGb3JtYXQgPT0gXCJ5eXl5LU1NLWRkXCIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICBsZXQgZm9ybWF0ID0gaXRlbS5kYXRlRm9ybWF0O1xyXG4gICAgaWYgKGZvcm1hdC5pbmRleE9mKFwiSEhcIikpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZm9ybWF0LmluZGV4T2YoXCJtbVwiKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChmb3JtYXQuaW5kZXhPZihcInNzXCIpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8YXRyLXZpZXctZm9ybSAqbmdJZj1cImZvcm1PcHRzLnR5cGUgPT0gJ3ZpZXcnXCIgW2RpY3RzXT1cImRpY3RzXCIgW2F0ckZvcm1dPVwiYXRyRm9ybVwiXHJcbiAgICAgICAgICAgICAgIFtmb3JtT3B0c109XCJmb3JtT3B0c1wiPjwvYXRyLXZpZXctZm9ybT5cclxuPGZvcm0gbnotZm9ybSBbZm9ybUdyb3VwXT1cImF0ckZvcm1cIiAqbmdJZj1cImZvcm1PcHRzLnR5cGUgIT0gJ3ZpZXcnXCI+XHJcbiAgPGRpdiBuei1yb3cgbnpHdXR0ZXI9XCI4XCIgbnpUeXBlPVwiZmxleFwiIG56QWxpZ249XCJ0b3BcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZm9ybU9wdHMuaXRlbXNcIj5cclxuICAgICAgPGRpdiBuei1jb2wgbnpTcGFuPVwiMjRcIiBjbGFzcz1cImZvcm0tdGl0bGVcIiAqbmdJZj1cIml0ZW0udHlwZSA9PSAndGl0bGUnXCI+XHJcbiAgICAgICAge3tpdGVtLmxhYmVsfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgbnotY29sIFtuelNwYW5dPVwiaXRlbS5zcGFuXCIgKm5nSWY9XCJpc1Nob3coaXRlbS5pc0hpZGRlbixpdGVtLm9wZXJhdG9yKVwiPlxyXG5cclxuICAgICAgICA8bnotZm9ybS1pdGVtICpuZ0lmPVwiaXRlbS50eXBlICE9ICd0aXRsZSdcIj5cclxuICAgICAgICAgIDxuei1mb3JtLWxhYmVsIFtuelNtXT1cIml0ZW0ubHNwYW5cIiBbbnpYc109XCIyNFwiIFtuelJlcXVpcmVkXT1cImlzUmVxdWlyZWQoaXRlbSlcIj57e2l0ZW0ubGFiZWx9fTwvbnotZm9ybS1sYWJlbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgW256U21dPVwiaXRlbS5jc3BhblwiIFtuelhzXT1cIjI0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O3dpZHRoOiAxMDAlXCI+XHJcbiAgICAgICAgICAgICAgPG56LXRyZWUtc2VsZWN0ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0cmVlU2VsZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuek5vZGVzXT1cIml0ZW0udHJlZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuelNob3dTZWFyY2g9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnpIaWRlVW5NYXRjaGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG56UGxhY2VIb2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuelNob3dTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpBbGxvd0NsZWFyXT1cIiFpdGVtLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpNdWx0aXBsZV09XCJpdGVtLnNlbGVjdFVybC5pc011bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiaXRlbS5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZmxleDogMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbnotdHJlZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPG56LXRyZWUtc2VsZWN0ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0cmVlU2VsZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuekFsbG93Q2xlYXJdPVwiIWl0ZW0ubm90TnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuek5vZGVzXT1cIml0ZW0udHJlZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuelNob3dTZWFyY2g9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnpIaWRlVW5NYXRjaGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG56UGxhY2VIb2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuelNob3dTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpNdWx0aXBsZV09XCJpdGVtLnNlbGVjdFVybC5pc011bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiaXRlbS5yZWFkb25seVwiIHN0eWxlPVwiZmxleDogMVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbnotdHJlZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPGFwcC1zZWxlY3QtaWNvbnMgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3NlbGVjdEljb24nXCIgbnotaW5wdXQgcGxhY2Vob2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZsZXg6IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj5cclxuICAgICAgICAgICAgICA8L2FwcC1zZWxlY3QtaWNvbnM+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXRlbS50eXBlID09ICd0ZXh0J1wiIG56LWlucHV0IHBsYWNlaG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXRlbS5yZWFkb25seSB8fCBmb3JtT3B0cy50eXBlID09ICd2aWV3J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIi8+XHJcbiAgICAgICAgICAgICAgPHRleHRhcmVhICpuZ0lmPVwiaXRlbS50eXBlID09ICd0ZXh0YXJlYSdcIiBuei1pbnB1dCBbcm93c109XCJpdGVtLnJvd3NcIiBwbGFjZWhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtyZWFkb25seV09XCJpdGVtLnJlYWRvbmx5fHwgZm9ybU9wdHMudHlwZSA9PSAndmlldydcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgIDxuei1pbnB1dC1udW1iZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ251bWJlcidcIiBuelBsYWNlSG9sZGVyPVwie3tpdGVtLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256TWluXT1cIml0ZW0ubWluTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWlucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgICA8bnotcmFkaW8tZ3JvdXAgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ3JhZGlvJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBuei1yYWRpbyAqbmdGb3I9XCJsZXQgbyBvZiBpdGVtLmRpY3RMaXN0XCIgW256VmFsdWVdPVwiby52YWx1ZVwiPnt7by5sYWJlbH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L256LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgIDxuei1zZWxlY3RcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS50eXBlID09ICdzZWxlY3QnXCJcclxuICAgICAgICAgICAgICAgIG56UGxhY2VIb2xkZXI9XCJ7e2l0ZW0ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICBuekFsbG93Q2xlYXI9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgbnpTZXJ2ZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgIFtuek1vZGVdPVwiaXRlbS5uek1vZGUgfHwgJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgICAgIG56RGlzYWJsZWQ9XCJ7e2l0ZW0ucmVhZG9ubHl8fCBmb3JtT3B0cy50eXBlID09ICd2aWV3J319XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bnotb3B0aW9uICpuZ0Zvcj1cImxldCBvIG9mIGRpY3RzW2l0ZW0uZGljdENvZGVdXCIgW256TGFiZWxdPVwiby50eXBlTmFtZVwiIFtuelZhbHVlXT1cIm8uaWRcIj48L256LW9wdGlvbj5cclxuICAgICAgICAgICAgICA8L256LXNlbGVjdD5cclxuICAgICAgICAgICAgICA8bnotc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0udHlwZSA9PSAnc2VsZWN0YydcIlxyXG4gICAgICAgICAgICAgICAgbnpQbGFjZUhvbGRlcj1cInt7aXRlbS5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAgIG56QWxsb3dDbGVhcj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiXHJcbiAgICAgICAgICAgICAgICBuelNlcnZlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgW256TW9kZV09XCJpdGVtLm56TW9kZSB8fCAnZGVmYXVsdCdcIlxyXG4gICAgICAgICAgICAgICAgbnpEaXNhYmxlZD1cInt7aXRlbS5yZWFkb25seXx8IGZvcm1PcHRzLnR5cGUgPT0gJ3ZpZXcnfX1cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuei1vcHRpb24gKm5nRm9yPVwibGV0IG8gb2YgaXRlbS5kaWN0TGlzdFwiIFtuekxhYmVsXT1cIm8ubGFiZWxcIiBbbnpWYWx1ZV09XCJvLnZhbHVlXCI+PC9uei1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uei1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPG56LWNhc2NhZGVyIFtuekRpc2FibGVkXT1cIml0ZW0ucmVhZG9ubHlcIiBzdHlsZT1cImZsZXg6IDFcIiBbbnpBbGxvd0NsZWFyXT1cIiFpdGVtLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpWYWx1ZVByb3BlcnR5XT1cIiduelZhbHVlUHJvcGVydHknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1NlYXJjaF09XCJ0cnVlXCIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2Nhc2NhZGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuek9wdGlvbnNdPVwiaXRlbS5kaWN0TGlzdFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWNhc2NhZGVyPlxyXG4gICAgICAgICAgICAgIDxuei1kYXRlLXBpY2tlciAqbmdJZj1cIml0ZW0udHlwZSA9PSAnZGF0ZSdcIiBbbnpGb3JtYXRdPVwiaXRlbS5kYXRlRm9ybWF0ID8gaXRlbS5kYXRlRm9ybWF0IDogJ3l5eXktTU0tZGQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1RpbWVdPVwic2hvd1RpbWUoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJmb3JtT3B0cy50eXBlID09ICd2aWV3JyB8fCBpdGVtLnJlYWRvbmx5IFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj48L256LWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgIDxuei1yYW5nZS1waWNrZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2RhdGVSYW5nZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256U2hvd1RpbWVdPVwiaXRlbS5uelNob3dUaW1lPyBpdGVtLm56U2hvd1RpbWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuekZvcm1hdF09XCJpdGVtLm56U2hvd1RpbWUgJiYgaXRlbS5uelNob3dUaW1lLm56Rm9ybWF0ID8gKCd5eXl5LU1NLWRkICcrIGl0ZW0ubnpTaG93VGltZS5uekZvcm1hdCkgOiAneXl5eS1NTS1kZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW256UGxhY2VIb2xkZXJdPVwiWyflvIDlp4vml7bpl7QnLCAn57uT5p2f5pe26Ze0J11cIj48L256LXJhbmdlLXBpY2tlcj5cclxuXHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXRlbS50eXBlID09ICdpbWFnZSdcIiBuei1pbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2hpZGRlbl09XCJ0cnVlXCIvPlxyXG4gICAgICAgICAgICAgIDxhdHItaW1nLXVwbG9hZCAqbmdJZj1cIml0ZW0udHlwZSA9PSAnaW1hZ2UnXCIgWyhvcHRzKV09XCJpdGVtLmltYWdlT3B0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZnRlckNoYW5nZSk9XCJpbWFnZVVwbG9hZENoYW5nZSgkZXZlbnQpXCI+PC9hdHItaW1nLXVwbG9hZD5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICA8ZWRpdG9yICpuZ0lmPVwiaXRlbS50eXBlID09ICdlZGl0b3InXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwie2luaXRpYWxGcmFtZUhlaWdodDppdGVtLmhlaWdodH1cIiA+PC9lZGl0b3I+LS0+XHJcbiAgICAgICAgICAgICAgPGFwcC1xdWlsbC1lZGl0b3IgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2VkaXRvcidcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIntoZWlnaHQ6aXRlbS5oZWlnaHQgPiAwID8gaXRlbS5oZWlnaHQgKyAncHgnIDogJzI1MHB4J31cIj48L2FwcC1xdWlsbC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnd29yZCdcIiBbaW5uZXJIVE1MXT1cIml0ZW0udmFsdWUgfGRlZlZhbDppdGVtLmRlZmF1bHRWYWx1ZSB8c2FmZUh0bWxcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdidXR0b25zJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIGl0ZW0uYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW256VHlwZV09XCJidG4uYnRuVHlwZSB8ZGVmVmFsOiAnZGVmYXVsdCdcIiBjbGFzcz1cImFudC1idG4gYW50LWJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4XCIgKm5nSWY9XCJidG4uaXNTaG93IHx8IGlzU2hvdyhmYWxzZSxidG4ub3BlcmF0b3IpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9BY3Rpb24oYnRuLCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2J0bi5uYW1lfX08L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWxpZCBvZiBpdGVtLnZhbGlkYXRvcnNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdHJGb3JtLmdldChpdGVtLmtleSkuaGFzRXJyb3IodmFsaWQudHlwZSkgJiYgKGF0ckZvcm0uZ2V0KGl0ZW0ua2V5KS5kaXJ0eSApXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJjb2xvcjpyZWQ7ICAgIGhlaWdodDogMTVweDttYXJnaW46IDA7bGluZS1oZWlnaHQ6IDE1cHg7XCI+e3t2YWxpZC5lcnJvckxhYmVsfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cImRlZmF1bHRcIiBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO2NvbG9yOiBibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZW5kc1wiIGRpc2FibGVkPlxyXG4gICAgICAgICAgICAgICAge3tpdGVtLmVuZHN9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpdGVtLmJ1dHRvbj8uaXNTaG93XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYW50LWJ0biBhbnQtYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvQWN0aW9uKGl0ZW0uYnV0dG9uLCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5idXR0b24ubmFtZX19PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ucHJvcG9zYWxcIiBzdHlsZT1cImNvbG9yOiByZWQ7d2lkdGg6IDEwMCVcIj57e2l0ZW0ucHJvcG9zYWx9fTwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvbnotZm9ybS1jb250cm9sPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW0udGVtcFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbnotZm9ybS1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9mb3JtPlxyXG4iXX0=