nsc-react-component 2.10.25 → 2.10.27

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.
@@ -15,11 +15,13 @@ declare class EditorForm extends PureComponent<any> {
15
15
  hide(hide?: boolean): void;
16
16
  hideForm(): void;
17
17
  setLoading(loading: boolean): void;
18
+ setFieldsValue(values: any): void;
19
+ getFieldsValue(): any;
18
20
  onSubmit(): void;
19
21
  valueChange({ type, dictName }: {
20
22
  type: any;
21
23
  dictName: any;
22
- }, value: any, valueOption: any): void;
24
+ }, props: any, value: any, valueOption: any): void;
23
25
  render(): JSX.Element;
24
26
  }
25
27
  export default EditorForm;
@@ -155,11 +155,25 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
155
155
  loading: loading
156
156
  });
157
157
  }
158
+ }, {
159
+ key: "setFieldsValue",
160
+ value: function setFieldsValue(values) {
161
+ var _this$formRef$current3;
162
+
163
+ (_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.setFieldsValue(values);
164
+ }
165
+ }, {
166
+ key: "getFieldsValue",
167
+ value: function getFieldsValue() {
168
+ var _this$formRef$current4;
169
+
170
+ return (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 ? void 0 : _this$formRef$current4.getFieldsValue();
171
+ }
158
172
  }, {
159
173
  key: "onSubmit",
160
174
  value: function onSubmit() {
161
- var _this$formRef$current3,
162
- _this$formRef$current4,
175
+ var _this$formRef$current5,
176
+ _this$formRef$current6,
163
177
  _this3 = this;
164
178
 
165
179
  var _this$props = this.props,
@@ -173,9 +187,9 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
173
187
  label = _this$state.label,
174
188
  value = _this$state.value,
175
189
  dictNames = _this$state.dictNames;
176
- var formValue = (_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.getFieldsValue();
190
+ var formValue = (_this$formRef$current5 = this.formRef.current) === null || _this$formRef$current5 === void 0 ? void 0 : _this$formRef$current5.getFieldsValue();
177
191
  var valid = this.valid;
178
- (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 ? void 0 : _this$formRef$current4.validateFields(valid).then(function () {
192
+ (_this$formRef$current6 = this.formRef.current) === null || _this$formRef$current6 === void 0 ? void 0 : _this$formRef$current6.validateFields(valid).then(function () {
179
193
  var _this3$formRef$curren;
180
194
 
181
195
  _this3.setState({
@@ -237,7 +251,7 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
237
251
  }
238
252
  }, {
239
253
  key: "valueChange",
240
- value: function valueChange(_ref, value, valueOption) {
254
+ value: function valueChange(_ref, props, value, valueOption) {
241
255
  var type = _ref.type,
242
256
  dictName = _ref.dictName;
243
257
 
@@ -253,6 +267,10 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
253
267
  });
254
268
  }
255
269
  }
270
+
271
+ if (props.onChange) {
272
+ props.onChange(value, valueOption);
273
+ }
256
274
  }
257
275
  }, {
258
276
  key: "render",
@@ -331,7 +349,7 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
331
349
  onChange: _this4.valueChange.bind(_this4, {
332
350
  type: item.type,
333
351
  dictName: item.dictName
334
- })
352
+ }, _objectSpread({}, item.props))
335
353
  });
336
354
 
337
355
  if (!item.type || item.type == "Input") {
@@ -372,4 +390,4 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
372
390
  }(PureComponent);
373
391
 
374
392
  export default EditorForm;
375
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvRm9ybS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiRm9ybSIsImdldExlc3MiLCJnZXROb2RlIiwibWVzc2FnZSIsIkNvbCIsIlJvdyIsImlzRW1wdHlPYmoiLCJtb21lbnQiLCJzdHlsZXMiLCJFZGl0b3JGb3JtIiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZWRpdG9yZmxhZyIsInNldFN0YXRlIiwiZGF0ZUZvcm1hdCIsImtleSIsIm9sZGRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtUmVmIiwiY3VycmVudCIsInNob3dGb3JtIiwicHJvcHMiLCJkZWZhdWx0VmFsdWUiLCJoaWRlIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwib25TdWJtaXQiLCJjYWxsQmFjayIsInN0YXRlIiwiZm9ybVZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwidGhlbiIsImRhdGEiLCJkYXRlVmFsdWVGb3JtYXQiLCJmb3JtYXQiLCJpZCIsIkVycm9yIiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsImNhdGNoIiwiZXJyb3JJbmZvIiwidmFsdWVPcHRpb24iLCJ0eXBlIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsImZvcm1Qcm9wcyIsIm90aGVyUHJvcHMiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJvbk9rIiwiYmluZCIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJuZXdWYWxpZCIsImRyYXdlclByb3BzIiwib25DbG9zZSIsImZvb3RlciIsImZvcm1UeXBlIiwiZmxleCIsImNoYW5nZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm1hcCIsIml0ZW0iLCJpbmRleCIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsImFsbG93Q2hhcnMiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwidmFsdWVDaGFuZ2UiLCJzaG93Q291bnQiLCJkaXNhYmxlZCIsInJ1bGVzIiwibGVuZ3RoIiwicHVzaCIsInNwYW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLGFBQWhCLFFBQXFDLE9BQXJDO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixpQkFBakI7QUFDQSxTQUFTQyxPQUFULEVBQWtCQyxPQUFsQixRQUFpQyxhQUFqQztBQUNBLE9BQU9DLE9BQVAsTUFBb0Isb0JBQXBCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixxQkFBaEI7QUFDQSxPQUFPQyxHQUFQLE1BQWdCLHFCQUFoQjtBQUNBLFNBQVNDLFVBQVQsUUFBMkIsbUJBQTNCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixRQUFuQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIscUJBQW5COztJQUVNQyxVOzs7Ozs7Ozs7Ozs7Ozs7OzJFQUNNWCxLQUFLLENBQUNZLFNBQU4sRTs7NERBQ0Y7QUFDTkMsTUFBQUEsT0FBTyxFQUFFLEtBREg7QUFFTkMsTUFBQUEsS0FBSyxFQUFFLEVBRkQ7QUFHTkMsTUFBQUEsVUFBVSxFQUFFLElBSE47QUFJTkMsTUFBQUEsS0FBSyxFQUFFLEVBSkQ7QUFLTkMsTUFBQUEsU0FBUyxFQUFFO0FBTEwsSzs7NERBT0ssRTs7c0VBQ0ssRTs7aUVBQ0wsRTs7Ozs7OztXQUNiO0FBQ0Esa0JBQUtELEtBQUwsRUFBc0M7QUFBQTs7QUFBQSxVQUFwQkUsVUFBb0IsdUVBQVAsS0FBTztBQUNwQyxVQUFJSixLQUFLLEdBQUcsSUFBWjs7QUFDQSxVQUFJRSxLQUFLLElBQUlFLFVBQVUsSUFBSSxRQUEzQixFQUFxQztBQUNuQ0osUUFBQUEsS0FBSyxHQUFHLElBQVI7QUFDRCxPQUZELE1BRU8s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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmNsYXNzIEVkaXRvckZvcm0gZXh0ZW5kcyBQdXJlQ29tcG9uZW50PGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmICh2YWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZGV0YWlsXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZUZvcm1hdCkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVba2V5XTtcclxuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IFtcclxuICAgICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMF0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlW2tleV0gPSBtb21lbnQob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGlkZShoaWRlID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgeyBvbkhpZGVGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uSGlkZUZvcm0pIHtcclxuICAgICAgb25IaWRlRm9ybSAmJiBvbkhpZGVGb3JtKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgb25TdWJtaXQsXHJcbiAgICAgIGNhbGxCYWNrLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcclxuICAgICAgPy52YWxpZGF0ZUZpZWxkcyh2YWxpZClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICBsZXQgb2xkZGF0YSA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRhdGFba2V5XSA9IG1vbWVudChvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGlkOiB2YWx1ZT8uaWQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghc3VibWl0VXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5vblN1Ym1pdChcclxuICAgICAgICAgIHN1Ym1pdFVybCxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZGF0YTogeyAuLi5kYXRhIH0sXHJcbiAgICAgICAgICAgIG5vVW5kZWZpbmVkOiBsYWJlbCA9PSBcIue8lui+kVwiLFxyXG4gICAgICAgICAgICBzdWJtaXRQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MobGFiZWwgKyBcIuaIkOWKn1wiKTtcclxuICAgICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7fSk7XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKHsgdHlwZSwgZGljdE5hbWUgfSwgdmFsdWUsIHZhbHVlT3B0aW9uKSB7XHJcbiAgICBpZiAodmFsdWVPcHRpb24pIHtcclxuICAgICAgaWYgKGRpY3ROYW1lKSB7XHJcbiAgICAgICAgY29uc3QgeyBkaWN0TmFtZXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgY29uc3QgbmV3TmFtZXMgPSB7IC4uLmRpY3ROYW1lcyB9IGFzIGFueTtcclxuICAgICAgICBuZXdOYW1lc1tkaWN0TmFtZV0gPSB2YWx1ZU9wdGlvbi5sYWJlbDtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRpY3ROYW1lczogbmV3TmFtZXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9ybVByb3BzID0gW10sIG90aGVyUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbG9hZGluZywgbGFiZWwgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgbW9kYWxQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2FuY2VsOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgb2tCdXR0b25Qcm9wczogeyBsb2FkaW5nOiBsb2FkaW5nIH0sXHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuXHJcbiAgICBjb25zdCBuZXdWYWxpZDogYW55W10gPSBbXTtcclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Rm9ybVxyXG4gICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgIHNob3dNb2RlbD17dGhpcy5wcm9wcy5mb3JtVHlwZX1cclxuICAgICAgICBtb2RhbFByb3BzPXt7IC4uLm1vZGFsUHJvcHMgfX1cclxuICAgICAgICBkcmF3ZXJQcm9wcz17eyAuLi5kcmF3ZXJQcm9wcyB9fVxyXG4gICAgICAgIGxhYmVsQ29sPXt7IGZsZXg6IFwiMTAwcHhcIiB9fVxyXG4gICAgICAgIHdyYXBwZXJDb2w9e3sgZmxleDogXCIxNXZ3XCIgfX1cclxuICAgICAgICBvblZhbHVlc0NoYW5nZT17KGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcykgPT4ge1xyXG4gICAgICAgICAgY29uc3QgeyBvbkZvcm1DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICBvbkZvcm1DaGFuZ2UgJiYgb25Gb3JtQ2hhbmdlKGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcyk7XHJcbiAgICAgICAgfX1cclxuICAgICAgICBjaGFuZ2VWYWxpZD17dGhpcy5wcm9wcy5jaGFuZ2VWYWxpZH1cclxuICAgICAgICB7Li4ub3RoZXJQcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIHsvKiA8ZGl2PiAqL31cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZm9ybVwiKX0+XHJcbiAgICAgICAgICA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICAgICAgICB7Zm9ybVByb3BzLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICAgICAgICBpZiAoaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2l0ZW0ubmFtZV0gPSBpdGVtUHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHMuYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQodGhpcywge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgIGRpY3ROYW1lOiBpdGVtLmRpY3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHByb3BzLnNob3dDb3VudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgICAgICBkZWxldGUgcHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybVByb3BzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZCA9IG5ld1ZhbGlkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge2dldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvUm93PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L0Zvcm0+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRWRpdG9yRm9ybTtcclxuIl19
393
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvRm9ybS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiRm9ybSIsImdldExlc3MiLCJnZXROb2RlIiwibWVzc2FnZSIsIkNvbCIsIlJvdyIsImlzRW1wdHlPYmoiLCJtb21lbnQiLCJzdHlsZXMiLCJFZGl0b3JGb3JtIiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZWRpdG9yZmxhZyIsInNldFN0YXRlIiwiZGF0ZUZvcm1hdCIsImtleSIsIm9sZGRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtUmVmIiwiY3VycmVudCIsInNob3dGb3JtIiwicHJvcHMiLCJkZWZhdWx0VmFsdWUiLCJoaWRlIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwidmFsdWVzIiwic2V0RmllbGRzVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsInN1Ym1pdFVybCIsInN1Ym1pdFBhcmFtcyIsIm9uU3VibWl0IiwiY2FsbEJhY2siLCJzdGF0ZSIsImZvcm1WYWx1ZSIsInZhbGlkIiwidmFsaWRhdGVGaWVsZHMiLCJ0aGVuIiwiZGF0YSIsImRhdGVWYWx1ZUZvcm1hdCIsImZvcm1hdCIsImlkIiwiRXJyb3IiLCJub1VuZGVmaW5lZCIsInJlcyIsImNvZGUiLCJzdWNjZXNzIiwiY2F0Y2giLCJlcnJvckluZm8iLCJ2YWx1ZU9wdGlvbiIsInR5cGUiLCJkaWN0TmFtZSIsIm5ld05hbWVzIiwib25DaGFuZ2UiLCJmb3JtUHJvcHMiLCJvdGhlclByb3BzIiwibW9kYWxQcm9wcyIsInRpdGxlIiwib25PayIsImJpbmQiLCJvbkNhbmNlbCIsIm9rQnV0dG9uUHJvcHMiLCJjZW50ZXJlZCIsIndpZHRoIiwibmV3VmFsaWQiLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJmb290ZXIiLCJmb3JtVHlwZSIsImZsZXgiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZUNoYW5nZSIsInNob3dDb3VudCIsImRpc2FibGVkIiwicnVsZXMiLCJsZW5ndGgiLCJwdXNoIiwic3BhbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBUCxJQUFnQkMsYUFBaEIsUUFBcUMsT0FBckM7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLGlCQUFqQjtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLE9BQWxCLFFBQWlDLGFBQWpDO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixvQkFBcEI7QUFDQSxPQUFPQyxHQUFQLE1BQWdCLHFCQUFoQjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IscUJBQWhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixtQkFBM0I7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixxQkFBbkI7O0lBRU1DLFU7Ozs7Ozs7Ozs7Ozs7Ozs7MkVBQ01YLEtBQUssQ0FBQ1ksU0FBTixFOzs0REFDRjtBQUNOQyxNQUFBQSxPQUFPLEVBQUUsS0FESDtBQUVOQyxNQUFBQSxLQUFLLEVBQUUsRUFGRDtBQUdOQyxNQUFBQSxVQUFVLEVBQUUsSUFITjtBQUlOQyxNQUFBQSxLQUFLLEVBQUUsRUFKRDtBQUtOQyxNQUFBQSxTQUFTLEVBQUU7QUFMTCxLOzs0REFPSyxFOztzRUFDSyxFOztpRUFDTCxFOzs7Ozs7O1dBQ2I7QUFDQSxrQkFBS0QsS0FBTCxFQUFzQztBQUFBOztBQUFBLFVBQXBCRSxVQUFvQix1RUFBUCxLQUFPO0FBQ3BDLFVBQUlKLEtBQUssR0FBRyxJQUFaOztBQUNBLFVBQUlFLEtBQUssSUFBSUUsVUFBVSxJQUFJLFFBQTNCLEVBQXFDO0FBQ25DSixRQUFBQSxLQUFL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QUssRUFBRUQsSUFBSSxDQUFDcEUsS0FEZDtBQUVFLFVBQUEsSUFBSSxFQUFFb0UsSUFBSSxDQUFDSSxJQUZiO0FBR0UsVUFBQSxLQUFLLEVBQUVKLElBQUksQ0FBQ1UsS0FIZDtBQUlFLFVBQUEsVUFBVSxFQUFFTCxVQUpkO0FBS0UsVUFBQSxhQUFhLEVBQUVMLElBQUksQ0FBQ3pCLElBQUwsR0FBWXlCLElBQUksQ0FBQ3pCLElBQWpCLEdBQXdCO0FBTHpDLFdBT0dyRCxPQUFPLENBQUM4RSxJQUFJLENBQUN6QixJQUFOLG9CQUNIN0IsS0FERyxFQVBWLENBREYsQ0FERjtBQWVELE9BckRBLENBREgsQ0FERixDQWZGLENBREY7QUE0RUQ7Ozs7RUEvUHNCM0IsYTs7QUFrUXpCLGVBQWVVLFVBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmNsYXNzIEVkaXRvckZvcm0gZXh0ZW5kcyBQdXJlQ29tcG9uZW50PGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmICh2YWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZGV0YWlsXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZUZvcm1hdCkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVba2V5XTtcclxuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IFtcclxuICAgICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMF0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlW2tleV0gPSBtb21lbnQob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGlkZShoaWRlID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgeyBvbkhpZGVGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uSGlkZUZvcm0pIHtcclxuICAgICAgb25IaWRlRm9ybSAmJiBvbkhpZGVGb3JtKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIHNldEZpZWxkc1ZhbHVlKHZhbHVlcykge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHZhbHVlcyk7XHJcbiAgfVxyXG4gIGdldEZpZWxkc1ZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gIH1cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIG9uU3VibWl0LFxyXG4gICAgICBjYWxsQmFjayxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IHZhbGlkID0gdGhpcy52YWxpZDtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XHJcbiAgICAgID8udmFsaWRhdGVGaWVsZHModmFsaWQpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICBsZXQgZGF0YSA9IHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfTtcclxuICAgICAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlVmFsdWVGb3JtYXQpIHtcclxuICAgICAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgICAgZGF0YVtrZXldID0gW1xyXG4gICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMF0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgIG1vbWVudChvbGRkYXRhWzFdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkYXRhW2tleV0gPSBtb21lbnQob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXN1Ym1pdFVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgICAgICBzdWJtaXRVcmwsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGRhdGE6IHsgLi4uZGF0YSB9LFxyXG4gICAgICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAgICAgc3VibWl0UGFyYW1zLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKGxhYmVsICsgXCLmiJDlip9cIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4ge30pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24pIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvcm1Qcm9wcyA9IFtdLCBvdGhlclByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICBsZXQgZHJhd2VyUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICBtb2RhbFByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICAgIGRyYXdlclByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdCA9IHt9O1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0ID0ge307XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPEZvcm1cclxuICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICBzaG93TW9kZWw9e3RoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLm90aGVyUHJvcHN9XHJcbiAgICAgID5cclxuICAgICAgICB7LyogPGRpdj4gKi99XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImZvcm1cIil9PlxyXG4gICAgICAgICAgPFJvdyBndXR0ZXI9ezI0fT5cclxuICAgICAgICAgICAge2Zvcm1Qcm9wcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtLnByb3BzLmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YCxcclxuXHJcbiAgICAgICAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudmFsdWVDaGFuZ2UuYmluZChcclxuICAgICAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBkaWN0TmFtZTogaXRlbS5kaWN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgeyAuLi5pdGVtLnByb3BzIH1cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHByb3BzLnNob3dDb3VudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgICAgICBkZWxldGUgcHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybVByb3BzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZCA9IG5ld1ZhbGlkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge2dldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvUm93PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L0Zvcm0+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRWRpdG9yRm9ybTtcclxuIl19
@@ -66,6 +66,7 @@ interface NSCBaseBageProps {
66
66
  treeSelectCallBack?: any;
67
67
  onSearchCallBack?: any;
68
68
  onSumbitCallBack?: any;
69
+ onDeleteCallBack?: any;
69
70
  };
70
71
  }
71
72
  declare class BasePage extends PureComponent<NSCBaseBageProps, any> {
@@ -81,6 +82,8 @@ declare class BasePage extends PureComponent<NSCBaseBageProps, any> {
81
82
  showForm(value?: any, editorflag?: string): void;
82
83
  hideForm(): void;
83
84
  setLoading(loading: boolean): void;
85
+ setEditFormValues(value: any): void;
86
+ getEditFormValues(): any;
84
87
  onDelete(data?: any): void;
85
88
  tableLoad(params: any, requestConfig?: {}): void;
86
89
  onSearch(params: any): void;
@@ -183,6 +183,20 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
183
183
  var _this$editorRef$curre3;
184
184
 
185
185
  (_this$editorRef$curre3 = this.editorRef.current) === null || _this$editorRef$curre3 === void 0 ? void 0 : _this$editorRef$curre3.setLoading(loading);
186
+ }
187
+ }, {
188
+ key: "setEditFormValues",
189
+ value: function setEditFormValues(value) {
190
+ var _this$editorRef$curre4;
191
+
192
+ (_this$editorRef$curre4 = this.editorRef.current) === null || _this$editorRef$curre4 === void 0 ? void 0 : _this$editorRef$curre4.setFieldsValue(value);
193
+ }
194
+ }, {
195
+ key: "getEditFormValues",
196
+ value: function getEditFormValues() {
197
+ var _this$editorRef$curre5;
198
+
199
+ return (_this$editorRef$curre5 = this.editorRef.current) === null || _this$editorRef$curre5 === void 0 ? void 0 : _this$editorRef$curre5.getFieldsValue();
186
200
  } //批量删除
187
201
 
188
202
  }, {
@@ -239,10 +253,14 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
239
253
  var code = res.code;
240
254
 
241
255
  if (code === 200) {
256
+ var _this$props$onCallBac, _this$props$onCallBac2;
257
+
242
258
  message.success("删除成功!");
243
259
 
244
260
  var _value = _this.searchRef.current.getSearchValues();
245
261
 
262
+ ((_this$props$onCallBac = _this.props.onCallBacks) === null || _this$props$onCallBac === void 0 ? void 0 : _this$props$onCallBac.onDeleteCallBack) && ((_this$props$onCallBac2 = _this.props.onCallBacks) === null || _this$props$onCallBac2 === void 0 ? void 0 : _this$props$onCallBac2.onDeleteCallBack());
263
+
246
264
  _this.tableLoad(_value);
247
265
  } else {
248
266
  message.error("删除失败!");
@@ -535,7 +553,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
535
553
  }, {
536
554
  key: "treeSelect",
537
555
  value: function treeSelect(selectedKeys, obj) {
538
- var _this$searchRef2, _this$searchRef2$curr, _this$props$onCallBac, _this$props$onCallBac2;
556
+ var _this$searchRef2, _this$searchRef2$curr, _this$props$onCallBac3, _this$props$onCallBac4;
539
557
 
540
558
  var keyword = "";
541
559
  var _this$props$treeProps = this.props.treeProps,
@@ -581,7 +599,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
581
599
 
582
600
  var fromValue = ((_this$searchRef2 = this.searchRef) === null || _this$searchRef2 === void 0 ? void 0 : (_this$searchRef2$curr = _this$searchRef2.current) === null || _this$searchRef2$curr === void 0 ? void 0 : _this$searchRef2$curr.getSearchValues()) || {};
583
601
  searchField && this.tableLoad(_objectSpread(_objectSpread({}, fromValue), {}, _defineProperty({}, searchField, keyword)));
584
- ((_this$props$onCallBac = this.props.onCallBacks) === null || _this$props$onCallBac === void 0 ? void 0 : _this$props$onCallBac.treeSelectCallBack) && utils.callback((_this$props$onCallBac2 = this.props.onCallBacks) === null || _this$props$onCallBac2 === void 0 ? void 0 : _this$props$onCallBac2.treeSelectCallBack, this, [selectedKeys, obj]);
602
+ ((_this$props$onCallBac3 = this.props.onCallBacks) === null || _this$props$onCallBac3 === void 0 ? void 0 : _this$props$onCallBac3.treeSelectCallBack) && utils.callback((_this$props$onCallBac4 = this.props.onCallBacks) === null || _this$props$onCallBac4 === void 0 ? void 0 : _this$props$onCallBac4.treeSelectCallBack, this, [selectedKeys, obj]);
585
603
  }
586
604
  }, {
587
605
  key: "resetSearch",
@@ -1013,4 +1031,4 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
1013
1031
  }(PureComponent);
1014
1032
 
1015
1033
  export default BasePage;
1016
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIlRhYmxlIiwiVHJlZSIsIkJ1dHRvbiIsIk1vZGFsIiwiUG9wb3ZlciIsIm1lc3NhZ2UiLCJFZGl0b3JGb3JtIiwiY2xzIiwic3R5bGVzIiwidXRpbHMiLCJEb3duT3V0bGluZWQiLCJFeWVPdXRsaW5lZCIsIkVkaXRPdXRsaW5lZCIsIlJpZ2h0T3V0bGluZWQiLCJQbHVzT3V0bGluZWQiLCJFbGxpcHNpc091dGxpbmVkIiwiRGVsZXRlT3V0bGluZWQiLCJnZXRMZXNzIiwicmVxdWVzdCIsIm9taXQiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwiQmFzZVBhZ2UiLCJwcm9wcyIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsInN0YXRlIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsImluaXREYXRhIiwicGFyYW1zIiwiY2FsbEJhY2siLCJzZWFyY2hSZWYiLCJjdXJyZW50Iiwic2V0U2VhcmNoUGFyYW1zIiwiZWRpdG9yZmxhZyIsImVkaXRvclJlZiIsInNob3ciLCJoaWRlRm9ybSIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiZGF0YSIsImRlbGV0ZVVybCIsIm9uRGVsZXRlIiwiZGVsZXRlUGFyYW1zIiwiZGVsZXRlUG9zaXRpb24iLCJfdGhpcyIsInRhYmxlUmVmIiwiZ2V0U2VsZWN0ZWRSb3dLZXlzIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwiRXJyb3IiLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiYXV0b1ByZWZpeCIsImlkcyIsImpvaW4iLCJpZCIsInJlcXVlc3RQYXJhbXMiLCJ0aGVuIiwiY29kZSIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInJlcXVlc3RDb25maWciLCJzdG9yZSIsImxvYWQiLCJvbkNhbGxCYWNrcyIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjYWxsYmFjayIsImF1dG9Mb2FkIiwicmVsb2FkIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiZnJvbVZhbHVlIiwidGFibGVQcm9wcyIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsImdldENoaWxkcmVuRGF0YSIsInRvb2xidXR0b25zIiwibWFyZ2luZmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIm1hcmdpbkxlZnQiLCJjb2x1bW5CdXR0b25zIiwicmVjb3JkIiwiYWN0aW9uUG9ycHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwicmVjb3JkU2hvdyIsImV2YWwiLCJwdXNoIiwic2VsZWN0ZWRLZXlzIiwib2JqIiwia2V5d29yZCIsInRyZWVQcm9wcyIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0Iiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJzZXRTdGF0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0RmllbGRzIiwidGV4dCIsIm5ld1RleHQiLCJpIiwibGFiZWwiLCJzZXREYXRhIiwidHJlZVJlZiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwiY2xhc3NOYW1lIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsIm90aGVydGFibGVQYXJhbXMiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsIm90aGVydHJlZVBhcmFtcyIsInRhYmxlUGFyYW1zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwidGVtcCIsInNlYXJjaCIsImZpZWxkIiwiZGF0YUluZGV4IiwidGl0bGUiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwidW5kZWZpbmVkIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsInN0eWxlIiwicmVuZGVyIiwiZ2V0VGV4dCIsImVsbGlwc2lzIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsInNob3dGb3JtIiwiYmluZCIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwicmVhY29yZCIsInNlYXJjaEZsYWciLCJ0b29sRmxhZyIsInBhZ2luYXRpb24iLCJzY3JvbGwiLCJ4IiwidGFibGVUb29sIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsInRyZWVTZWxlY3QiLCJvblJlc2V0Iiwic2VhcmNoRm9ybVByb3BzIiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYmFyIiwidG9vbHMiLCJleHBhbmRJY29uIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsImUiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIm9uU3VtYml0Q2FsbEJhY2siLCJ0YWJsZVJlbG9hZCIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFnRCxPQUFoRDtBQUNBLE9BQU9DLEtBQVAsTUFBa0Isa0JBQWxCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixpQkFBakI7QUFFQSxPQUFPQyxNQUFQLE1BQW1CLG1CQUFuQjtBQUNBLE9BQU9DLEtBQVAsTUFBa0Isa0JBQWxCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixvQkFBcEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLG9CQUFwQjtBQUdBLE9BQU9DLFVBQVAsTUFBdUIsUUFBdkI7QUFDQSxPQUFPQyxHQUFQLE1BQWdCLFlBQWhCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixxQkFBbkI7QUFHQSxTQUFTQyxLQUFULFFBQXNCLHVCQUF0QjtBQUNBLFNBQ0VDLFlBREYsRUFFRUMsV0FGRixFQUdFQyxZQUhGLEVBSUVDLGFBSkYsRUFLRUMsWUFMRixFQU1FQyxnQkFORixFQU9FQyxjQVBGLFFBUU8sbUJBUlA7QUFTQSxTQUFTQyxPQUFULFFBQWlDLGFBQWpDO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixhQUFwQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsU0FBakI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixtQkFBM0I7QUFFQSxPQUFPQyxZQUFQLE1BQXlCLGlCQUF6Qjs7SUE2RE1DLFE7Ozs7O0FBTUosb0JBQVlDLEtBQVosRUFBd0I7QUFBQTs7QUFBQTs7QUFBQTs7QUFDdEIsK0JBQU1BLEtBQU47O0FBRHNCLDZFQUxiMUIsS0FBSyxD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QVdxRSxXQURiLDJEQUNFLHVCQUF3QjBJLGdCQUF4QixFQURGOztBQUVBLFVBQUEsTUFBSSxDQUFDQyxXQUFMLENBQWlCL0IsSUFBakIsQ0FBc0IsTUFBdEI7QUFDRCxTQU5IO0FBT0UsUUFBQSxTQUFTLEVBQUUxQixXQVBiO0FBUUUsUUFBQSxTQUFTLEVBQUV4QixTQVJiO0FBU0UsUUFBQSxZQUFZLEVBQUVHLFlBVGhCO0FBVUUsUUFBQSxRQUFRLEVBQUUsS0FBS2xJLEtBQUwsQ0FBV2lOLFFBVnZCO0FBV0UsUUFBQSxZQUFZLEVBQUV6RCxZQVhoQjtBQVlFLFFBQUEsVUFBVSxFQUFFLEtBQUt4SixLQUFMLENBQVdrTixVQVp6QjtBQWFFLFFBQUEsWUFBWSxFQUFFLEtBQUtsTixLQUFMLENBQVdtTixZQWIzQjtBQWNFLFFBQUEsUUFBUSxFQUFFLEtBQUtuTixLQUFMLENBQVd1QixRQUFYLElBQXVCLE1BZG5DO0FBZUUsUUFBQSxXQUFXLEVBQUVnSCxlQWZmO0FBZ0JFLFFBQUEsVUFBVSxvQkFBT1AsU0FBUDtBQWhCWixRQWxHSixDQU5GLENBREY7QUErSEQ7Ozs7RUFwMEJvQnpKLGE7O0FBczBCdkIsZUFBZXdCLFFBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vSWNvbkZvbnRcIjtcclxuaW1wb3J0IHsgaWNvblR5cGUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtIGZyb20gXCIuL0Zvcm1cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUG9ycHM/OiB7IHRleHRBbGlnbj86IHN0cmluZzsgc2hvd0ljb24/OiBib29sZWFuOyB3aWR0aD86IG51bWJlciB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBhbnkpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCB7IHN0b3JlUHJlZml4IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0eXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJmb3JtVHlwZVwiIDogXCJmb3JtVHlwZVwiXHJcbiAgICApO1xyXG4gICAgdHlwZSA9IHR5cGU/LmNvbnRlbnQ7XHJcbiAgICBsZXQgc2l6ZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgc2l6ZSA9IHNpemU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgICBmb3JtVHlwZTogdHlwZSB8fCBcIm1vZGFsXCIsXHJcbiAgICAgIHRhYmxlU2l6ZTogc2l6ZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2hvdyh2YWx1ZSwgZWRpdG9yZmxhZyk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZi5jdXJyZW50LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3QgeyBvblNlYXJjaCwgb25DYWxsQmFja3MgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaywgdGhpcywgW3BhcmFtc10pO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGl0ZW1bcm93S2V5XV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBkYXRhW3Jvd0tleV1dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIG1hcmdpbmZsYWcgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRvb2wtYnV0dG9uc1wiKSwge1xyXG4gICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRvb2wtYnV0dG9ucy1tYXJnaW5cIildOiAhc2hvd1NlYXJjaCB8fCBtYXJnaW5mbGFnLFxyXG4gICAgICAgIH0pfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUG9ycHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qb3Jwcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiAzO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IDMpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JfZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDMpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JfZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblBvcnBzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG5cclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSwgLi4ub3RoZXJ0YWJsZVBhcmFtcyB9IGFzIGFueTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogb21pdCh7IC4uLnRlbXAucHJvcHMgfSwgW1wiZGVmYXVsdFZhbHVlXCIsIFwidmFsdWVcIl0pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuICAgICAgaWYgKHRlbXAuc3R5bGUpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIHt0ZXh0ICE9PSBcIlwiICYmIHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkICYmIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbC1iYWNrXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbC10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIGlmICghdGVtcC5lbGxpcHNpcykge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0ZW1wID0geyAuLi50ZW1wIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUG9ycHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgaWYgKGVkaXRvckZvcm0gPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwic2VhcmNoXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFeWVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5p+l55yLXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEVkaXRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEpIHtcclxuICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgIG9uU2hvd0Zvcm0oKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5re75YqgXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZGVsZXRlXCIpID4gLTEpIHtcclxuICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwicm93XCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qb3Jwcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblBvcnBzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUG9ycHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblBvcnBzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgdG9vbEZsYWcgPSBzaG93VG9vbEJ1dHRvbiAmJiBzZWxmQnV0dG9ucy5sZW5ndGggPiAwO1xyXG4gICAgaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCAuLi5zY3JvbGwgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2VcIiksIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBvblJlc2V0PXt0aGlzLnByb3BzLm9uUmVzZXR9XHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAge3Nob3dUb29sQnV0dG9uICYmXHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucywgc2VhcmNoRm9ybXMubGVuZ3RoID09IDApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidGFibGVcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS10b3BcIildOlxyXG4gICAgICAgICAgICAgICAgICAoc2VhcmNoRmxhZyAmJiAhdG9vbEZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICAgICAgICAgICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVUb29sPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM9e3sgLi4uZm9ybVByb3BzIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXX0=
1034
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIlRhYmxlIiwiVHJlZSIsIkJ1dHRvbiIsIk1vZGFsIiwiUG9wb3ZlciIsIm1lc3NhZ2UiLCJFZGl0b3JGb3JtIiwiY2xzIiwic3R5bGVzIiwidXRpbHMiLCJEb3duT3V0bGluZWQiLCJFeWVPdXRsaW5lZCIsIkVkaXRPdXRsaW5lZCIsIlJpZ2h0T3V0bGluZWQiLCJQbHVzT3V0bGluZWQiLCJFbGxpcHNpc091dGxpbmVkIiwiRGVsZXRlT3V0bGluZWQiLCJnZXRMZXNzIiwicmVxdWVzdCIsIm9taXQiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwiQmFzZVBhZ2UiLCJwcm9wcyIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsInN0YXRlIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsImluaXREYXRhIiwicGFyYW1zIiwiY2FsbEJhY2siLCJzZWFyY2hSZWYiLCJjdXJyZW50Iiwic2V0U2VhcmNoUGFyYW1zIiwiZWRpdG9yZmxhZyIsImVkaXRvclJlZiIsInNob3ciLCJoaWRlRm9ybSIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwic2V0RmllbGRzVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGEiLCJkZWxldGVVcmwiLCJvbkRlbGV0ZSIsImRlbGV0ZVBhcmFtcyIsImRlbGV0ZVBvc2l0aW9uIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsIkVycm9yIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJpZHMiLCJqb2luIiwiaWQiLCJyZXF1ZXN0UGFyYW1zIiwidGhlbiIsImNvZGUiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJyZXF1ZXN0Q29uZmlnIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2hDYWxsQmFjayIsImNhbGxiYWNrIiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJmcm9tVmFsdWUiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwiZ2V0Q2hpbGRyZW5EYXRhIiwidG9vbGJ1dHRvbnMiLCJtYXJnaW5mbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwibWFyZ2luTGVmdCIsImNvbHVtbkJ1dHRvbnMiLCJyZWNvcmQiLCJhY3Rpb25Qb3JwcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJyZWNvcmRTaG93IiwiZXZhbCIsInB1c2giLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJrZXl3b3JkIiwidHJlZVByb3BzIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsInNldFN0YXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwicmVzZXRGaWVsZHMiLCJ0ZXh0IiwibmV3VGV4dCIsImkiLCJsYWJlbCIsInNldERhdGEiLCJ0cmVlUmVmIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwib3RoZXJ0cmVlUGFyYW1zIiwidGFibGVQYXJhbXMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJkZWZhdWx0VmFsdWUiLCJ0ZW1wIiwic2VhcmNoIiwiZmllbGQiLCJkYXRhSW5kZXgiLCJ0aXRsZSIsImxhYmVsQ29sIiwid3JhcHBlckNvbCIsInJ1bGVzIiwic2VhcmNoUnVsZXMiLCJlZGl0b3IiLCJzcGFuIiwiZGljdE5hbWUiLCJ1bmRlZmluZWQiLCJjb2x1bW5TZWFyY2giLCJmaWx0ZXJQcm9wcyIsInRlbXBQcm9wIiwic3R5bGUiLCJyZW5kZXIiLCJnZXRUZXh0IiwiZWxsaXBzaXMiLCJjb2x1bW5TaG93Iiwic2VsZkJ1dHRvbnMiLCJpbmRleE9mIiwic2hvd0Zvcm0iLCJiaW5kIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGQiLCJhbGlnbiIsInRleHRBbGlnbiIsIndpZHRoIiwiZml4ZWQiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJyZWFjb3JkIiwic2VhcmNoRmxhZyIsInRvb2xGbGFnIiwicGFnaW5hdGlvbiIsInNjcm9sbCIsIngiLCJ0YWJsZVRvb2wiLCJwYWdlVGl0bGUiLCJkaXNwbGF5IiwidHJlZVNlbGVjdCIsIm9uUmVzZXQiLCJzZWFyY2hGb3JtUHJvcHMiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xiYXIiLCJ0b29scyIsImV4cGFuZEljb24iLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwib25TdW1iaXRDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLGFBQWhCLFFBQWdELE9BQWhEO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixrQkFBbEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLGlCQUFqQjtBQUVBLE9BQU9DLE1BQVAsTUFBbUIsbUJBQW5CO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixrQkFBbEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLG9CQUFwQjtBQUNBLE9BQU9DLE9BQVAsTUFBb0Isb0JBQXBCO0FBR0EsT0FBT0MsVUFBUCxNQUF1QixRQUF2QjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IsWUFBaEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLHFCQUFuQjtBQUdBLFNBQVNDLEtBQVQsUUFBc0IsdUJBQXRCO0FBQ0EsU0FDRUMsWUFERixFQUVFQyxXQUZGLEVBR0VDLFlBSEYsRUFJRUMsYUFKRixFQUtFQyxZQUxGLEVBTUVDLGdCQU5GLEVBT0VDLGNBUEYsUUFRTyxtQkFSUDtBQVNBLFNBQVNDLE9BQVQsUUFBaUMsYUFBakM7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLGFBQXBCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLG1CQUEzQjtBQUVBLE9BQU9DLFlBQVAsTUFBeUIsaUJBQXpCOztJQThETUMsUTs7Ozs7QUFNSixvQkFBWUMsS0FBWixFQUF3QjtBQUFB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Y2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vSWNvbkZvbnRcIjtcclxuaW1wb3J0IHsgaWNvblR5cGUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtIGZyb20gXCIuL0Zvcm1cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUG9ycHM/OiB7IHRleHRBbGlnbj86IHN0cmluZzsgc2hvd0ljb24/OiBib29sZWFuOyB3aWR0aD86IG51bWJlciB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTtcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZi5jdXJyZW50LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3QgeyBvblNlYXJjaCwgb25DYWxsQmFja3MgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaywgdGhpcywgW3BhcmFtc10pO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGl0ZW1bcm93S2V5XV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBkYXRhW3Jvd0tleV1dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIG1hcmdpbmZsYWcgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRvb2wtYnV0dG9uc1wiKSwge1xyXG4gICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRvb2wtYnV0dG9ucy1tYXJnaW5cIildOiAhc2hvd1NlYXJjaCB8fCBtYXJnaW5mbGFnLFxyXG4gICAgICAgIH0pfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUG9ycHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qb3Jwcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiAzO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IDMpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JfZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDMpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JfZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblBvcnBzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG5cclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSwgLi4ub3RoZXJ0YWJsZVBhcmFtcyB9IGFzIGFueTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogb21pdCh7IC4uLnRlbXAucHJvcHMgfSwgW1wiZGVmYXVsdFZhbHVlXCIsIFwidmFsdWVcIl0pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuICAgICAgaWYgKHRlbXAuc3R5bGUpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIHt0ZXh0ICE9PSBcIlwiICYmIHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkICYmIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbC1iYWNrXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbC10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIGlmICghdGVtcC5lbGxpcHNpcykge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0ZW1wID0geyAuLi50ZW1wIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUG9ycHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgaWYgKGVkaXRvckZvcm0gPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwic2VhcmNoXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFeWVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5p+l55yLXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEVkaXRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEpIHtcclxuICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgIG9uU2hvd0Zvcm0oKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5re75YqgXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZGVsZXRlXCIpID4gLTEpIHtcclxuICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwicm93XCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qb3Jwcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblBvcnBzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUG9ycHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblBvcnBzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgdG9vbEZsYWcgPSBzaG93VG9vbEJ1dHRvbiAmJiBzZWxmQnV0dG9ucy5sZW5ndGggPiAwO1xyXG4gICAgaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCAuLi5zY3JvbGwgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2VcIiksIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBvblJlc2V0PXt0aGlzLnByb3BzLm9uUmVzZXR9XHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAge3Nob3dUb29sQnV0dG9uICYmXHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucywgc2VhcmNoRm9ybXMubGVuZ3RoID09IDApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidGFibGVcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS10b3BcIildOlxyXG4gICAgICAgICAgICAgICAgICAoc2VhcmNoRmxhZyAmJiAhdG9vbEZsYWcpIHx8XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICAgICAgICAgICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVUb29sPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM9e3sgLi4uZm9ybVByb3BzIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "2.10.25",
3
+ "version": "2.10.27",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {