@taiga-ui/legacy 4.18.0 → 4.19.0-canary.a1b748c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -58,6 +58,7 @@ export declare class TuiInputDateRangeComponent extends AbstractTuiNullableContr
58
58
  private toggle;
59
59
  private focusInput;
60
60
  private getDateRangeFiller;
61
+ private findActivePeriodBy;
61
62
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputDateRangeComponent, never>;
62
63
  static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputDateRangeComponent, "tui-input-date-range", never, { "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; "markerHandler": { "alias": "markerHandler"; "required": false; }; "defaultViewedMonth": { "alias": "defaultViewedMonth"; "required": false; }; "items": { "alias": "items"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "minLength": { "alias": "minLength"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; }, {}, never, ["*", "input"], false, never>;
63
64
  }
@@ -115,6 +115,7 @@ class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
115
115
  writeValue(value) {
116
116
  super.writeValue(value);
117
117
  this.nativeValue.set(value ? this.computedValue : '');
118
+ this.selectedActivePeriod = this.findActivePeriodBy(value);
118
119
  }
119
120
  get computedMobile() {
120
121
  return this.isMobile && !!this.mobileCalendar;
@@ -128,10 +129,7 @@ class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
128
129
  : this.calculateMask(this.dateFormat.mode, this.dateFormat.separator, this.min, this.max, this.minLength, this.maxLength);
129
130
  }
130
131
  get activePeriod() {
131
- return (this.selectedActivePeriod ??
132
- (this.items.find((item) => tuiNullableSame(this.value, item.range, (a, b) => a.from.daySame(b.from.dayLimit(this.min, this.max)) &&
133
- a.to.daySame(b.to.dayLimit(this.min, this.max)))) ||
134
- null));
132
+ return this.selectedActivePeriod ?? this.findActivePeriodBy(this.value);
135
133
  }
136
134
  get showValueTemplate() {
137
135
  return tuiIsPresent(this.value) && !this.focused;
@@ -196,6 +194,10 @@ class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
196
194
  getDateRangeFiller(dateFiller) {
197
195
  return `${dateFiller}${RANGE_SEPARATOR_CHAR}${dateFiller}`;
198
196
  }
197
+ findActivePeriodBy(value) {
198
+ return (this.items.find((item) => tuiNullableSame(value, item.range, (a, b) => a.from.daySame(b.from.dayLimit(this.min, this.max)) &&
199
+ a.to.daySame(b.to.dayLimit(this.min, this.max)))) ?? null);
200
+ }
199
201
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputDateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
200
202
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputDateRangeComponent, selector: "tui-input-date-range", inputs: { disabledItemHandler: "disabledItemHandler", markerHandler: "markerHandler", defaultViewedMonth: "defaultViewedMonth", items: "items", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength" }, host: { listeners: { "click": "onClick()" }, properties: { "attr.data-size": "size" } }, providers: [
201
203
  tuiAsFocusableItemAccessor(TuiInputDateRangeComponent),
@@ -243,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
243
245
  }], maxLength: [{
244
246
  type: Input
245
247
  }], calculateMask: [] } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sZWdhY3kvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFlBQVksRUFDWixXQUFXLEVBQ1gsUUFBUSxHQUNYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixlQUFlLEVBQ2YsT0FBTyxHQUNWLE1BQU0sbUNBQW1DLENBQUM7QUFFM0MsT0FBTyxFQUFDLGlCQUFpQixFQUFD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cG9uZW50LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBzaWduYWwsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7TWFza2l0b09wdGlvbnN9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHtNQVNLSVRPX0RFRkFVTFRfT1BUSU9OU30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHt0dWlBc0NvbnRyb2x9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQge1RVSV9GQUxTRV9IQU5ETEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7VHVpRGF0ZU1vZGUsIFR1aURheSwgVHVpRGF5TGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgREFURV9SQU5HRV9GSUxMRVJfTEVOR1RILFxuICAgIFJBTkdFX1NFUEFSQVRPUl9DSEFSLFxuICAgIFRVSV9GSVJTVF9EQVksXG4gICAgVFVJX0xBU1RfREFZLFxuICAgIFR1aURheVJhbmdlLFxuICAgIFR1aU1vbnRoLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge3R1aVdhdGNofSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VFVJX0lTX01PQklMRX0gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aUJvb2xlYW5IYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7XG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICB0dWlJc1ByZXNlbnQsXG4gICAgdHVpTnVsbGFibGVTYW1lLFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQgdHlwZSB7VHVpTWFya2VySGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9jYWxlbmRhcic7XG5pbXBvcnQge3R1aUFzRGF0YUxpc3RIb3N0fSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2RhdGEtbGlzdCc7XG5pbXBvcnQge1RVSV9EQVRFX0ZPUk1BVCwgVFVJX0RFRkFVTFRfREFURV9GT1JNQVR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpU2l6ZUwsIFR1aVNpemVTfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQgdHlwZSB7VHVpRGF5UmFuZ2VQZXJpb2R9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9jYWxlbmRhci1yYW5nZSc7XG5pbXBvcnQgdHlwZSB7VHVpSW5wdXREYXRlT3B0aW9uc30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtcbiAgICBUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUixcbiAgICBUVUlfREFURV9URVhUUyxcbiAgICBUVUlfSU5QVVRfREFURV9PUFRJT05TLFxuICAgIFRVSV9NT0JJTEVfQ0FMRU5EQVIsXG4gICAgVFVJX01PQklMRV9DQUxFTkRBUl9QUk9WSURFUixcbiAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIHR1aUFzQ29udHJvbCBhcyB0dWlBc0xlZ2FjeUNvbnRyb2wsXG59IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvY2xhc3Nlcyc7XG5pbXBvcnQge1R1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS9jb21wb25lbnRzL3ByaW1pdGl2ZS10ZXh0ZmllbGQnO1xuaW1wb3J0IHtUVUlfVEVYVEZJRUxEX1NJWkV9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvZGlyZWN0aXZlcyc7XG5pbXBvcnQgdHlwZSB7VHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L3Rva2Vucyc7XG5pbXBvcnQge3R1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L3Rva2Vucyc7XG5pbXBvcnQge1RVSV9EQVRFX01PREVfTUFTS0lUT19BREFQVEVSfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L3V0aWxzJztcbmltcG9ydCB0eXBlIHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtZGF0ZS1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWRhdGUtcmFuZ2UudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZGF0ZS1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50IGFzIGFueSksXG4gICAgICAgIHR1aUFzTGVnYWN5Q29udHJvbChUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIHR1aURhdGVTdHJlYW1XaXRoVHJhbnNmb3JtZXIoVFVJX0RBVEVfUkFOR0VfVkFMVUVfVFJBTlNGT1JNRVIpLFxuICAgICAgICB0dWlBc0RhdGFMaXN0SG9zdChUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIFRVSV9NT0JJTEVfQ0FMRU5EQVJfUFJPVklERVIsXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXNpemVdJzogJ3NpemUnLFxuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxUdWlEYXlSYW5nZT5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZSA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vYmlsZUNhbGVuZGFyID0gaW5qZWN0KFRVSV9NT0JJTEVfQ0FMRU5EQVIsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChUVUlfSU5QVVRfREFURV9PUFRJT05TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZFNpemUgPSBpbmplY3QoVFVJX1RFWFRGSUVMRF9TSVpFKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZVZhbHVlID0gc2lnbmFsKCcnKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBkYXRlVGV4dHMkID0gaW5qZWN0KFRVSV9EQVRFX1RFWFRTKTtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgdmFsdWVUcmFuc2Zvcm1lciA9IGluamVjdChcbiAgICAgICAgVFVJX0RBVEVfUkFOR0VfVkFMVUVfVFJBTlNGT1JNRVIsXG4gICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBkYXRlRmlsbGVyJCA9IHRoaXMuZGF0ZVRleHRzJC5waXBlKFxuICAgICAgICBtYXAoKGRhdGVUZXh0cykgPT5cbiAgICAgICAgICAgIGNoYW5nZURhdGVTZXBhcmF0b3IoXG4gICAgICAgICAgICAgICAgZGF0ZVRleHRzW3RoaXMuZGF0ZUZvcm1hdC5tb2RlXSxcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQuc2VwYXJhdG9yLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIGRhdGVGb3JtYXQgPSBUVUlfREVGQVVMVF9EQVRFX0ZPUk1BVDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0ZUZvcm1hdCQgPSBpbmplY3QoVFVJX0RBVEVfRk9STUFUKVxuICAgICAgICAucGlwZSh0dWlXYXRjaCh0aGlzLmNkciksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKChmb3JtYXQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IGZvcm1hdDtcbiAgICAgICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRBY3RpdmVQZXJpb2Q6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+ID0gVFVJX0ZBTFNFX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXJrZXJIYW5kbGVyOiBUdWlNYXJrZXJIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZWZhdWx0Vmlld2VkTW9udGggPSBUdWlNb250aC5jdXJyZW50TG9jYWwoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1zOiByZWFkb25seSBUdWlEYXlSYW5nZVBlcmlvZFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IFR1aURheSB8IG51bGwgPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4OiBUdWlEYXkgfCBudWxsID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pbkxlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgb3BlbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkPy5uYXRpdmVGb2N1c2FibGVFbGVtZW50ID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRleHRmaWVsZD8uZm9jdXNlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbXB1dGVkRXhhbXBsZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMudGV4dGZpZWxkPy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5wbGFjZWhvbGRlciB8fCAnJ1xuICAgICAgICAgICAgOiAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbXB1dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlLCBuYXRpdmVWYWx1ZSwgYWN0aXZlUGVyaW9kfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVBlcmlvZCkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhhY3RpdmVQZXJpb2QpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICA/IHZhbHVlLmdldEZvcm1hdHRlZERheVJhbmdlKHRoaXMuZGF0ZUZvcm1hdC5tb2RlLCB0aGlzLmRhdGVGb3JtYXQuc2VwYXJhdG9yKVxuICAgICAgICAgICAgOiBuYXRpdmVWYWx1ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpOiBUdWlTaXplTCB8IFR1aVNpemVTIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkU2l6ZS5zaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUgJiYgdGhpcy5pbnRlcmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5zZXQodmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlICYmICF0aGlzLm1vYmlsZUNhbGVuZGFyKSB7XG4gICAgICAgICAgICB0aGlzLm9uT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVBlcmlvZCkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5zZXQoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9XG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPT09IERBVEVfUkFOR0VfRklMTEVSX0xFTkdUSCAmJiAhdGhpcy5hY3RpdmVQZXJpb2RcbiAgICAgICAgICAgICAgICA/IFR1aURheVJhbmdlLm5vcm1hbGl6ZVBhcnNlKHZhbHVlLCB0aGlzLmRhdGVGb3JtYXQubW9kZSlcbiAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aXZlUGVyaW9kID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblJhbmdlQ2hhbmdlKHJhbmdlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG5cbiAgICAgICAgaWYgKCFyYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5zZXQoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHJhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUuc2V0KHZhbHVlID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJycpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTW9iaWxlICYmICEhdGhpcy5tb2JpbGVDYWxlbmRhcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNhbGVuZGFySWNvbigpOiBUdWlJbnB1dERhdGVPcHRpb25zWydpY29uJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZE1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2RcbiAgICAgICAgICAgID8gTUFTS0lUT19ERUZBVUxUX09QVElPTlNcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0Lm1vZGUsXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQuc2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5taW4sXG4gICAgICAgICAgICAgICAgICB0aGlzLm1heCxcbiAgICAgICAgICAgICAgICAgIHRoaXMubWluTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBhY3RpdmVQZXJpb2QoKTogVHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY3RpdmVQZXJpb2QgPz9cbiAgICAgICAgICAgICh0aGlzLml0ZW1zLmZpbmQoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgdHVpTnVsbGFibGVTYW1lKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGEuZnJvbS5kYXlTYW1lKGIuZnJvbS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYS50by5kYXlTYW1lKGIudG8uZGF5TGltaXQodGhpcy5taW4sIHRoaXMubWF4KSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICBudWxsKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc2hvd1ZhbHVlVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0dWlJc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgIXRoaXMuZm9jdXNlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbXB1dGVkQ29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlUGVyaW9kPy5jb250ZW50IHx8IHRoaXMuY29tcHV0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlubmVyUHNldWRvRm9jdXNlZCgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBzZXVkb0ZvY3VzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3BlbiB8fCB0aGlzLmNvbXB1dGVkRm9jdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q29tcHV0ZWRSYW5nZUZpbGxlcihkYXRlRmlsbGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2QgPyAnJyA6IHRoaXMuZ2V0RGF0ZVJhbmdlRmlsbGVyKGRhdGVGaWxsZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkljb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUgJiYgdGhpcy5pbnRlcmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25PcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gb3BlbjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25BY3RpdmVab25lKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFmb2N1c2VkICYmXG4gICAgICAgICAgICAhdGhpcy5pdGVtU2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICh0aGlzLm5hdGl2ZVZhbHVlKCkubGVuZ3RoID09PSBEQVRFX0ZJTExFUl9MRU5HVEggfHxcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlKCkubGVuZ3RoID09PVxuICAgICAgICAgICAgICAgICAgICBEQVRFX0ZJTExFUl9MRU5HVEggKyBSQU5HRV9TRVBBUkFUT1JfQ0hBUi5sZW5ndGgpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFR1aURheVJhbmdlLm5vcm1hbGl6ZVBhcnNlKFxuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUoKSxcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQubW9kZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsdWVJZGVudGljYWxDb21wYXJhdG9yKFxuICAgICAgICBvbGRWYWx1ZTogVHVpRGF5UmFuZ2UgfCBudWxsLFxuICAgICAgICBuZXdWYWx1ZTogVHVpRGF5UmFuZ2UgfCBudWxsLFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpTnVsbGFibGVTYW1lKG9sZFZhbHVlLCBuZXdWYWx1ZSwgKGEsIGIpID0+IGEuZGF5U2FtZShiKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IFN0cmluZyhpdGVtKSA9PT0gdGhpcy5uYXRpdmVWYWx1ZSgpKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2soXG4gICAgICAgIGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlLFxuICAgICAgICBkYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIG1pbjogVHVpRGF5IHwgbnVsbCxcbiAgICAgICAgbWF4OiBUdWlEYXkgfCBudWxsLFxuICAgICAgICBtaW5MZW5ndGg6IFR1aURheUxpa2UgfCBudWxsLFxuICAgICAgICBtYXhMZW5ndGg6IFR1aURheUxpa2UgfCBudWxsLFxuICAgICk6IE1hc2tpdG9PcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIG1hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgIGRhdGVTZXBhcmF0b3IsXG4gICAgICAgICAgICBtb2RlOiBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUltkYXRlRm9ybWF0XSxcbiAgICAgICAgICAgIG1pbjogKG1pbiB8fCBUVUlfRklSU1RfREFZKS50b0xvY2FsTmF0aXZlRGF0ZSgpLFxuICAgICAgICAgICAgbWF4OiAobWF4IHx8IFRVSV9MQVNUX0RBWSkudG9Mb2NhbE5hdGl2ZURhdGUoKSxcbiAgICAgICAgICAgIG1pbkxlbmd0aDogbWluTGVuZ3RoIHx8IHt9LFxuICAgICAgICAgICAgbWF4TGVuZ3RoOiBtYXhMZW5ndGggfHwge30sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNJbnB1dChwcmV2ZW50U2Nyb2xsID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGVSYW5nZUZpbGxlcihkYXRlRmlsbGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZGF0ZUZpbGxlcn0ke1JBTkdFX1NFUEFSQVRPUl9DSEFSfSR7ZGF0ZUZpbGxlcn1gO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICB0dWlEcm9wZG93bk9wZW5Nb25pdG9yXG4gICAgY2xhc3M9XCJ0LWhvc3RlZFwiXG4gICAgW3R1aURyb3Bkb3duXT1cImRyb3Bkb3duXCJcbiAgICBbdHVpRHJvcGRvd25FbmFibGVkXT1cImludGVyYWN0aXZlXCJcbiAgICBbdHVpRHJvcGRvd25PcGVuXT1cIm9wZW4gJiYgaW50ZXJhY3RpdmVcIlxuICAgICh0dWlBY3RpdmVab25lQ2hhbmdlKT1cIm9uQWN0aXZlWm9uZSgkZXZlbnQpXCJcbiAgICAodHVpRHJvcGRvd25PcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCJcbj5cbiAgICA8dHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRcbiAgICAgICAgKnR1aUxldD1cImRhdGVGaWxsZXIkIHwgYXN5bmMgYXMgZGF0ZUZpbGxlclwiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS1yYW5nZV9fdGV4dGZpZWxkXCJcbiAgICAgICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgICAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICAgICBbbWFza2l0b109XCJjb21wdXRlZE1hc2tcIlxuICAgICAgICBbbmF0aXZlSWRdPVwibmF0aXZlSWRcIlxuICAgICAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJpbm5lclBzZXVkb0ZvY3VzZWRcIlxuICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkRmlsbGVyXT1cImdldENvbXB1dGVkUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlciB8fCAnJylcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkSWNvbl09XCJjYWxlbmRhckljb24gJiYgaWNvbkNvbnRlbnRcIlxuICAgICAgICBbdmFsdWVdPVwiY29tcHV0ZWRWYWx1ZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiaW5wdXRcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkQ29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImNhbGVuZGFySWNvbiBhcyBzcmM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHNpemV9XCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS1yYW5nZV9faWNvblwiXG4gICAgICAgICAgICB0dWlBcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICBbY2xhc3MudC1pY29uX3NtYWxsXT1cInNpemUgPT09ICdzJ1wiXG4gICAgICAgICAgICBbY2xhc3MudC1pY29uXT1cIiFjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgIFtpY29uXT1cInNyYy50b1N0cmluZygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkljb25DbGljaygpXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgICAgICAgPHR1aS1jYWxlbmRhci1yYW5nZVxuICAgICAgICAgICAgW2RlZmF1bHRWaWV3ZWRNb250aF09XCJkZWZhdWx0Vmlld2VkTW9udGhcIlxuICAgICAgICAgICAgW2Rpc2FibGVkSXRlbUhhbmRsZXJdPVwiZGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXNcIlxuICAgICAgICAgICAgW21hcmtlckhhbmRsZXJdPVwibWFya2VySGFuZGxlclwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICAgICBbbWluTGVuZ3RoXT1cIm1pbkxlbmd0aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgWyhpdGVtKV09XCJzZWxlY3RlZEFjdGl2ZVBlcmlvZFwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sZWdhY3kvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFlBQVksRUFDWixXQUFXLEVBQ1gsUUFBUSxHQUNYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixlQUFlLEVBQ2YsT0FBTyxHQUNWLE1BQU0sbUNBQW1DLENBQUM7QUFFM0MsT0FBTyxFQUFDLGlCQUFpQixFQUFD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c0JBRFQsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQTJLRSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIHNpZ25hbCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB0eXBlIHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge01BU0tJVE9fREVGQVVMVF9PUFRJT05TfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b0RhdGVSYW5nZU9wdGlvbnNHZW5lcmF0b3J9IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQge3R1aUFzQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VFVJX0ZBTFNFX0hBTkRMRVJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtUdWlEYXRlTW9kZSwgVHVpRGF5LCBUdWlEYXlMaWtlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1xuICAgIERBVEVfRklMTEVSX0xFTkdUSCxcbiAgICBEQVRFX1JBTkdFX0ZJTExFUl9MRU5HVEgsXG4gICAgUkFOR0VfU0VQQVJBVE9SX0NIQVIsXG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfTEFTVF9EQVksXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgVHVpTW9udGgsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7dHVpV2F0Y2h9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtUVUlfSVNfTU9CSUxFfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBjaGFuZ2VEYXRlU2VwYXJhdG9yLFxuICAgIHR1aUlzUHJlc2VudCxcbiAgICB0dWlOdWxsYWJsZVNhbWUsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB0eXBlIHtUdWlNYXJrZXJIYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7dHVpQXNEYXRhTGlzdEhvc3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7VFVJX0RBVEVfRk9STUFULCBUVUlfREVGQVVMVF9EQVRFX0ZPUk1BVH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB0eXBlIHtUdWlTaXplTCwgVHVpU2l6ZVN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcbmltcG9ydCB0eXBlIHtUdWlEYXlSYW5nZVBlcmlvZH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLXJhbmdlJztcbmltcG9ydCB0eXBlIHtUdWlJbnB1dERhdGVPcHRpb25zfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge1xuICAgIFRVSV9EQVRFX1JBTkdFX1ZBTFVFX1RSQU5TRk9STUVSLFxuICAgIFRVSV9EQVRFX1RFWFRTLFxuICAgIFRVSV9JTlBVVF9EQVRFX09QVElPTlMsXG4gICAgVFVJX01PQklMRV9DQUxFTkRBUixcbiAgICBUVUlfTU9CSUxFX0NBTEVOREFSX1BST1ZJREVSLFxuICAgIHR1aURhdGVTdHJlYW1XaXRoVHJhbnNmb3JtZXIsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2wsXG4gICAgdHVpQXNDb250cm9sIGFzIHR1aUFzTGVnYWN5Q29udHJvbCxcbn0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS9jbGFzc2VzJztcbmltcG9ydCB7VHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L2NvbXBvbmVudHMvcHJpbWl0aXZlLXRleHRmaWVsZCc7XG5pbXBvcnQge1RVSV9URVhURklFTERfU0laRX0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS9kaXJlY3RpdmVzJztcbmltcG9ydCB0eXBlIHtUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvdG9rZW5zJztcbmltcG9ydCB7dHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvdG9rZW5zJztcbmltcG9ydCB7VFVJX0RBVEVfTU9ERV9NQVNLSVRPX0FEQVBURVJ9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvdXRpbHMnO1xuaW1wb3J0IHR5cGUge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiBmYWxzZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1kYXRlLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZGF0ZS1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQgYXMgYW55KSxcbiAgICAgICAgdHVpQXNMZWdhY3lDb250cm9sKFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgdHVpRGF0ZVN0cmVhbVdpdGhUcmFuc2Zvcm1lcihUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUiksXG4gICAgICAgIHR1aUFzRGF0YUxpc3RIb3N0KFR1aUlucHV0RGF0ZVJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgVFVJX01PQklMRV9DQUxFTkRBUl9QUk9WSURFUixcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmRhdGEtc2l6ZV0nOiAnc2l6ZScsXG4gICAgICAgICcoY2xpY2spJzogJ29uQ2xpY2soKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPFR1aURheVJhbmdlPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlID0gaW5qZWN0KFRVSV9JU19NT0JJTEUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9iaWxlQ2FsZW5kYXIgPSBpbmplY3QoVFVJX01PQklMRV9DQUxFTkRBUiwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9EQVRFX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkU2l6ZSA9IGluamVjdChUVUlfVEVYVEZJRUxEX1NJWkUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlVmFsdWUgPSBzaWduYWwoJycpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGVUZXh0cyQgPSBpbmplY3QoVFVJX0RBVEVfVEVYVFMpO1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSB2YWx1ZVRyYW5zZm9ybWVyID0gaW5qZWN0KFxuICAgICAgICBUVUlfREFURV9SQU5HRV9WQUxVRV9UUkFOU0ZPUk1FUixcbiAgICAgICAge29wdGlvbmFsOiB0cnVlfSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGVGaWxsZXIkID0gdGhpcy5kYXRlVGV4dHMkLnBpcGUoXG4gICAgICAgIG1hcCgoZGF0ZVRleHRzKSA9PlxuICAgICAgICAgICAgY2hhbmdlRGF0ZVNlcGFyYXRvcihcbiAgICAgICAgICAgICAgICBkYXRlVGV4dHNbdGhpcy5kYXRlRm9ybWF0Lm1vZGVdLFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdC5zZXBhcmF0b3IsXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgZGF0ZUZvcm1hdCA9IFRVSV9ERUZBVUxUX0RBVEVfRk9STUFUO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkYXRlRm9ybWF0JCA9IGluamVjdChUVUlfREFURV9GT1JNQVQpXG4gICAgICAgIC5waXBlKHR1aVdhdGNoKHRoaXMuY2RyKSwgdGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0ID0gZm9ybWF0O1xuICAgICAgICB9KTtcblxuICAgIHByb3RlY3RlZCBzZWxlY3RlZEFjdGl2ZVBlcmlvZDogVHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1hcmtlckhhbmRsZXI6IFR1aU1hcmtlckhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlZmF1bHRWaWV3ZWRNb250aCA9IFR1aU1vbnRoLmN1cnJlbnRMb2NhbCgpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXM6IHJlYWRvbmx5IFR1aURheVJhbmdlUGVyaW9kW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pbjogVHVpRGF5IHwgbnVsbCA9IHRoaXMub3B0aW9ucy5taW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXg6IFR1aURheSB8IG51bGwgPSB0aGlzLm9wdGlvbnMubWF4O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhMZW5ndGg6IFR1aURheUxpa2UgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBvcGVuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGV4dGZpZWxkPy5mb2N1c2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29tcHV0ZWRFeGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LnBsYWNlaG9sZGVyIHx8ICcnXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7dmFsdWUsIG5hdGl2ZVZhbHVlLCBhY3RpdmVQZXJpb2R9ID0gdGhpcztcblxuICAgICAgICBpZiAoYWN0aXZlUGVyaW9kKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKGFjdGl2ZVBlcmlvZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgID8gdmFsdWUuZ2V0Rm9ybWF0dGVkRGF5UmFuZ2UodGhpcy5kYXRlRm9ybWF0Lm1vZGUsIHRoaXMuZGF0ZUZvcm1hdC5zZXBhcmF0b3IpXG4gICAgICAgICAgICA6IG5hdGl2ZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZSAmJiB0aGlzLmludGVyYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNldCh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUgJiYgIXRoaXMubW9iaWxlQ2FsZW5kYXIpIHtcbiAgICAgICAgICAgIHRoaXMub25PcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlUGVyaW9kKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNldCgnJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gREFURV9SQU5HRV9GSUxMRVJfTEVOR1RIICYmICF0aGlzLmFjdGl2ZVBlcmlvZFxuICAgICAgICAgICAgICAgID8gVHVpRGF5UmFuZ2Uubm9ybWFsaXplUGFyc2UodmFsdWUsIHRoaXMuZGF0ZUZvcm1hdC5tb2RlKVxuICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY3RpdmVQZXJpb2QgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmFuZ2VDaGFuZ2UocmFuZ2U6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcblxuICAgICAgICBpZiAoIXJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNldCgnJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gcmFuZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5zZXQodmFsdWUgPyB0aGlzLmNvbXB1dGVkVmFsdWUgOiAnJyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBY3RpdmVQZXJpb2QgPSB0aGlzLmZpbmRBY3RpdmVQZXJpb2RCeSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZE1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgJiYgISF0aGlzLm1vYmlsZUNhbGVuZGFyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY2FsZW5kYXJJY29uKCk6IFR1aUlucHV0RGF0ZU9wdGlvbnNbJ2ljb24nXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaWNvbjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbXB1dGVkTWFzaygpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVBlcmlvZFxuICAgICAgICAgICAgPyBNQVNLSVRPX0RFRkFVTFRfT1BUSU9OU1xuICAgICAgICAgICAgOiB0aGlzLmNhbGN1bGF0ZU1hc2soXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQubW9kZSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdC5zZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICB0aGlzLm1pbixcbiAgICAgICAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICAgICAgICAgICAgdGhpcy5taW5MZW5ndGgsXG4gICAgICAgICAgICAgICAgICB0aGlzLm1heExlbmd0aCxcbiAgICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEFjdGl2ZVBlcmlvZCA/PyB0aGlzLmZpbmRBY3RpdmVQZXJpb2RCeSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHNob3dWYWx1ZVRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNQcmVzZW50KHRoaXMudmFsdWUpICYmICF0aGlzLmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZENvbnRlbnQoKTogUG9seW1vcnBoZXVzQ29udGVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVBlcmlvZD8uY29udGVudCB8fCB0aGlzLmNvbXB1dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpbm5lclBzZXVkb0ZvY3VzZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wc2V1ZG9Gb2N1cyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW4gfHwgdGhpcy5jb21wdXRlZEZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldENvbXB1dGVkUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlUGVyaW9kID8gJycgOiB0aGlzLmdldERhdGVSYW5nZUZpbGxlcihkYXRlRmlsbGVyKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25JY29uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlICYmIHRoaXMuaW50ZXJhY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMub25PcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQWN0aXZlWm9uZShmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhZm9jdXNlZCAmJlxuICAgICAgICAgICAgIXRoaXMuaXRlbVNlbGVjdGVkICYmXG4gICAgICAgICAgICAodGhpcy5uYXRpdmVWYWx1ZSgpLmxlbmd0aCA9PT0gREFURV9GSUxMRVJfTEVOR1RIIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSgpLmxlbmd0aCA9PT1cbiAgICAgICAgICAgICAgICAgICAgREFURV9GSUxMRVJfTEVOR1RIICsgUkFOR0VfU0VQQVJBVE9SX0NIQVIubGVuZ3RoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZShcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlKCksXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0Lm1vZGUsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlSWRlbnRpY2FsQ29tcGFyYXRvcihcbiAgICAgICAgb2xkVmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICAgICAgbmV3VmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZSwgbmV3VmFsdWUsIChhLCBiKSA9PiBhLmRheVNhbWUoYikpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGl0ZW1TZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBTdHJpbmcoaXRlbSkgPT09IHRoaXMubmF0aXZlVmFsdWUoKSkgIT09IC0xO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKFxuICAgICAgICBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgZGF0ZVNlcGFyYXRvcjogc3RyaW5nLFxuICAgICAgICBtaW46IFR1aURheSB8IG51bGwsXG4gICAgICAgIG1heDogVHVpRGF5IHwgbnVsbCxcbiAgICAgICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICAgICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICApOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBtYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICBkYXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgbW9kZTogVFVJX0RBVEVfTU9ERV9NQVNLSVRPX0FEQVBURVJbZGF0ZUZvcm1hdF0sXG4gICAgICAgICAgICBtaW46IChtaW4gfHwgVFVJX0ZJUlNUX0RBWSkudG9Mb2NhbE5hdGl2ZURhdGUoKSxcbiAgICAgICAgICAgIG1heDogKG1heCB8fCBUVUlfTEFTVF9EQVkpLnRvTG9jYWxOYXRpdmVEYXRlKCksXG4gICAgICAgICAgICBtaW5MZW5ndGg6IG1pbkxlbmd0aCB8fCB7fSxcbiAgICAgICAgICAgIG1heExlbmd0aDogbWF4TGVuZ3RoIHx8IHt9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2RhdGVGaWxsZXJ9JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke2RhdGVGaWxsZXJ9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRBY3RpdmVQZXJpb2RCeSh2YWx1ZTogVHVpRGF5UmFuZ2UgfCBudWxsKTogVHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZmluZCgoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICB0dWlOdWxsYWJsZVNhbWUoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGEuZnJvbS5kYXlTYW1lKGIuZnJvbS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYS50by5kYXlTYW1lKGIudG8uZGF5TGltaXQodGhpcy5taW4sIHRoaXMubWF4KSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICkgPz8gbnVsbFxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICB0dWlEcm9wZG93bk9wZW5Nb25pdG9yXG4gICAgY2xhc3M9XCJ0LWhvc3RlZFwiXG4gICAgW3R1aURyb3Bkb3duXT1cImRyb3Bkb3duXCJcbiAgICBbdHVpRHJvcGRvd25FbmFibGVkXT1cImludGVyYWN0aXZlXCJcbiAgICBbdHVpRHJvcGRvd25PcGVuXT1cIm9wZW4gJiYgaW50ZXJhY3RpdmVcIlxuICAgICh0dWlBY3RpdmVab25lQ2hhbmdlKT1cIm9uQWN0aXZlWm9uZSgkZXZlbnQpXCJcbiAgICAodHVpRHJvcGRvd25PcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCJcbj5cbiAgICA8dHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRcbiAgICAgICAgKnR1aUxldD1cImRhdGVGaWxsZXIkIHwgYXN5bmMgYXMgZGF0ZUZpbGxlclwiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS1yYW5nZV9fdGV4dGZpZWxkXCJcbiAgICAgICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgICAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICAgICBbbWFza2l0b109XCJjb21wdXRlZE1hc2tcIlxuICAgICAgICBbbmF0aXZlSWRdPVwibmF0aXZlSWRcIlxuICAgICAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJpbm5lclBzZXVkb0ZvY3VzZWRcIlxuICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkRmlsbGVyXT1cImdldENvbXB1dGVkUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlciB8fCAnJylcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkSWNvbl09XCJjYWxlbmRhckljb24gJiYgaWNvbkNvbnRlbnRcIlxuICAgICAgICBbdmFsdWVdPVwiY29tcHV0ZWRWYWx1ZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiaW5wdXRcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkQ29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImNhbGVuZGFySWNvbiBhcyBzcmM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHNpemV9XCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS1yYW5nZV9faWNvblwiXG4gICAgICAgICAgICB0dWlBcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICBbY2xhc3MudC1pY29uX3NtYWxsXT1cInNpemUgPT09ICdzJ1wiXG4gICAgICAgICAgICBbY2xhc3MudC1pY29uXT1cIiFjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgIFtpY29uXT1cInNyYy50b1N0cmluZygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkljb25DbGljaygpXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgICAgICAgPHR1aS1jYWxlbmRhci1yYW5nZVxuICAgICAgICAgICAgW2RlZmF1bHRWaWV3ZWRNb250aF09XCJkZWZhdWx0Vmlld2VkTW9udGhcIlxuICAgICAgICAgICAgW2Rpc2FibGVkSXRlbUhhbmRsZXJdPVwiZGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXNcIlxuICAgICAgICAgICAgW21hcmtlckhhbmRsZXJdPVwibWFya2VySGFuZGxlclwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICAgICBbbWluTGVuZ3RoXT1cIm1pbkxlbmd0aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgWyhpdGVtKV09XCJzZWxlY3RlZEFjdGl2ZVBlcmlvZFwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -6,7 +6,7 @@ import { maskitoCaretGuard, maskitoNumberOptionsGenerator, maskitoParseNumber, }
6
6
  import { CHAR_HYPHEN, CHAR_MINUS, EMPTY_QUERY } from '@taiga-ui/cdk/constants';
7
7
  import { tuiWatch } from '@taiga-ui/cdk/observables';
8
8
  import { TUI_IS_IOS } from '@taiga-ui/cdk/tokens';
9
- import { tuiClamp } from '@taiga-ui/cdk/utils/math';
9
+ import { tuiClamp, tuiIsSafeToRound } from '@taiga-ui/cdk/utils/math';
10
10
  import { tuiCreateToken, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
11
11
  import { TUI_DEFAULT_NUMBER_FORMAT, TUI_NUMBER_FORMAT } from '@taiga-ui/core/tokens';
12
12
  import { tuiFormatNumber } from '@taiga-ui/core/utils/format';
@@ -165,7 +165,15 @@ class TuiInputNumberComponent extends AbstractTuiNullableControl {
165
165
  return (this.computedPrefix +
166
166
  tuiFormatNumber(value, {
167
167
  ...this.numberFormat,
168
- precision: this.precision,
168
+ /**
169
+ * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]
170
+ * but its rounding can violate it.
171
+ * Before BigInt support there is no perfect solution – only trade off.
172
+ * No rounding is better than lose precision and incorrect mutation of already valid value.
173
+ */
174
+ precision: tuiIsSafeToRound(value, this.precision)
175
+ ? this.precision
176
+ : Infinity,
169
177
  }).replace(CHAR_HYPHEN, CHAR_MINUS) +
170
178
  this.computedPostfix);
171
179
  }
@@ -260,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
260
268
  }], step: [{
261
269
  type: Input
262
270
  }], computeMin: [], computeMax: [], calculateMask: [] } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRW5GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsWUFBWSxFQUFD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QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLDBCQUEwQix5QkFBeUI7d0JBQ25ELFlBQVkseUJBQXlCO3dCQUNyQyw2QkFBNkI7cUJBQ2hDLFFBQ0s7d0JBQ0Ysa0JBQWtCLEVBQUUsTUFBTTt3QkFDMUIscUJBQXFCLEVBQUUsZ0JBQWdCO3dCQUN2QyxtQkFBbUIsRUFBRSxlQUFlO3FCQUN2Qzs4QkFPZ0IsU0FBUztzQkFEekIsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBU3RCLHdCQUF3QjtzQkFEMUMsZUFBZTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBZ0JqRCxHQUFHO3NCQURULEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkE2TUUsVUFBVSxNQVFWLFVBQVUsTUFTVixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHR5cGUge01hc2tpdG9PcHRpb25zfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbn0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge1xuICAgIG1hc2tpdG9DYXJldEd1YXJkLFxuICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yLFxuICAgIG1hc2tpdG9QYXJzZU51bWJlcixcbn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB0eXBlIHtUdWlWYWx1ZVRyYW5zZm9ybWVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUywgRU1QVFlfUVVFUll9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7dHVpV2F0Y2h9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtUVUlfSVNfSU9TfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUNsYW1wfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHt0dWlDcmVhdGVUb2tlbiwgdHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB0eXBlIHtUdWlEZWNpbWFsTW9kZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7VFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCwgVFVJX05VTUJFUl9GT1JNQVR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpU2l6ZUwsIFR1aVNpemVTfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQge3R1aUZvcm1hdE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7QWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2wsIHR1aUFzQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS9jbGFzc2VzJztcbmltcG9ydCB7VHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L2NvbXBvbmVudHMvcHJpbWl0aXZlLXRleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9URVhURklFTERfU0laRSxcbiAgICBUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUixcbn0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS9kaXJlY3RpdmVzJztcbmltcG9ydCB0eXBlIHtUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvdG9rZW5zJztcbmltcG9ydCB7dHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzT3V0bGV0fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHR5cGUge1R1aUlucHV0TnVtYmVyT3B0aW9uc30gZnJvbSAnLi9pbnB1dC1udW1iZXIub3B0aW9ucyc7XG5pbXBvcnQge1RVSV9JTlBVVF9OVU1CRVJfT1BUSU9OU30gZnJvbSAnLi9pbnB1dC1udW1iZXIub3B0aW9ucyc7XG5cbmNvbnN0IERFRkFVTFRfTUFYX0xFTkdUSCA9IDE4O1xuXG5leHBvcnQgY29uc3QgVFVJX05VTUJFUl9WQUxVRV9UUkFOU0ZPUk1FUiA9XG4gICAgdHVpQ3JlYXRlVG9rZW48VHVpVmFsdWVUcmFuc2Zvcm1lcjxudW1iZXIgfCBudWxsPj4oKTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtbnVtYmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LW51bWJlci5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0TnVtYmVyQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0TnVtYmVyQ29tcG9uZW50KSxcbiAgICAgICAgVEVYVEZJRUxEX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXNpemVdJzogJ3NpemUnLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dEb3duKSc6ICdvbkFycm93KC1zdGVwKScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd1VwKSc6ICdvbkFycm93KHN0ZXApJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE51bWJlckNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzSU9TID0gaW5qZWN0KFRVSV9JU19JT1MpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkU2l6ZSA9IGluamVjdChUVUlfVEVYVEZJRUxEX1NJWkUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChUVUlfSU5QVVRfTlVNQkVSX09QVElPTlMpO1xuICAgIHByaXZhdGUgdW5maW5pc2hlZFZhbHVlOiBzdHJpbmcgfCBudWxsID0gJyc7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFBvbHltb3JwaGV1c091dGxldCwge2Rlc2NlbmRhbnRzOiB0cnVlfSlcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9seW1vcnBoZXVzVmFsdWVDb250ZW50OiBRdWVyeUxpc3Q8dW5rbm93bj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSB2YWx1ZVRyYW5zZm9ybWVyID0gaW5qZWN0PFxuICAgICAgICBUdWlWYWx1ZVRyYW5zZm9ybWVyPG51bWJlciB8IG51bGw+XG4gICAgPihUVUlfTlVNQkVSX1ZBTFVFX1RSQU5TRk9STUVSLCB7b3B0aW9uYWw6IHRydWV9KTtcblxuICAgIHByb3RlY3RlZCBudW1iZXJGb3JtYXQgPSBUVUlfREVGQVVMVF9OVU1CRVJfRk9STUFUO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250cm9sbGVyID0gaW5qZWN0KFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbnVtYmVyRm9ybWF0JCA9IGluamVjdChUVUlfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgLnBpcGUodHVpV2F0Y2godGhpcy5jZHIpLCB0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZm9ybWF0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCA9IGZvcm1hdDtcbiAgICAgICAgfSk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IG51bWJlciB8IG51bGwgPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4OiBudW1iZXIgfCBudWxsID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN0ZXAgPSB0aGlzLm9wdGlvbnMuc3RlcDtcblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAhdGhpcy50ZXh0ZmllbGQgfHwgdGhpcy5jb21wdXRlZERpc2FibGVkXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDogdGhpcy50ZXh0ZmllbGQubmF0aXZlRm9jdXNhYmxlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGV4dGZpZWxkPy5mb2N1c2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW5wdXRNb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzSU9TICYmIHRoaXMuaXNOZWdhdGl2ZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIC8vIGlQaG9uZSBkb2VzIG5vdCBoYXZlIG1pbnVzIHNpZ24gaWYgaW5wdXRNb2RlIGlzIGVxdWFsIHRvICdudW1lcmljJyAvICdkZWNpbWFsJ1xuICAgICAgICAgICAgcmV0dXJuICd0ZXh0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhdGhpcy5wcmVjaXNpb24gPyAnbnVtZXJpYycgOiAnZGVjaW1hbCc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjYWxjdWxhdGVkTWF4TGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID1cbiAgICAgICAgICAgICEhdGhpcy5wcmVjaXNpb24gJiZcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUuaW5jbHVkZXModGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbiA9IGRlY2ltYWxQYXJ0ID8gTWF0aC5taW4odGhpcy5wcmVjaXNpb24gKyAxLCAyMCkgOiAwO1xuICAgICAgICBjb25zdCB0YWtlVGhvdXNhbmQgPSB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvci5yZXBlYXQoNSkubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBERUZBVUxUX01BWF9MRU5HVEggKyBwcmVjaXNpb24gKyB0YWtlVGhvdXNhbmQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wdXRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWQgPyB0aGlzLm5hdGl2ZVZhbHVlIDogdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25WYWx1ZUNoYW5nZShuYXRpdmVWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gbWFza2l0b1BhcnNlTnVtYmVyKFxuICAgICAgICAgICAgbmF0aXZlVmFsdWUsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudW5maW5pc2hlZFZhbHVlID0gbnVsbDtcblxuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHBhcnNlZFZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzTmF0aXZlVmFsdWVOb3RGaW5pc2hlZCkge1xuICAgICAgICAgICAgdGhpcy51bmZpbmlzaGVkVmFsdWUgPSBuYXRpdmVWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyc2VkVmFsdWUgPCB0aGlzLmNvbXB1dGVkTWluIHx8IHBhcnNlZFZhbHVlID4gdGhpcy5jb21wdXRlZE1heCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHBhcnNlZFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGljb25zKCk6IFR1aUlucHV0TnVtYmVyT3B0aW9uc1snaWNvbnMnXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaWNvbnM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZE1pbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlTWluKHRoaXMubWluLCB0aGlzLm1heCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZE1heCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlTWF4KHRoaXMubWluLCB0aGlzLm1heCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpc05lZ2F0aXZlQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRNaW4gPCAwO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgIT09IG51bGwgPyB0aGlzLmdldEZvcm1hdHRlZFZhbHVlKHRoaXMudmFsdWUgfHwgMCkgOiAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNhbkRlY3JlbWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJhY3RpdmUgJiYgKHRoaXMudmFsdWUgfHwgMCkgPiB0aGlzLmNvbXB1dGVkTWluO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY2FuSW5jcmVtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAodGhpcy52YWx1ZSB8fCAwKSA8IHRoaXMuY29tcHV0ZWRNYXg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZFByZWZpeCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnByZWZpeDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbXB1dGVkUG9zdGZpeCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwb3N0Zml4ID0gdGhpcy5jb250cm9sbGVyLnBvc3RmaXg7XG5cbiAgICAgICAgcmV0dXJuIHBvc3RmaXggJiYgYCAke3Bvc3RmaXh9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IG1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgdGhpcy5wcmVjaXNpb24sXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsTW9kZSxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRNaW4sXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkTWF4LFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZFByZWZpeCxcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRQb3N0Zml4LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgbmF0aXZlVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudD8udmFsdWUgfHwgJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy50ZXh0ZmllbGQgfHwgIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQXJyb3coc3RlcDogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIXN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSB0dWlDbGFtcChcbiAgICAgICAgICAgICh0aGlzLnZhbHVlIHx8IDApICsgc3RlcCxcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRNaW4sXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkTWF4LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZU51bWJlclZhbHVlID0gdGhpcy51bmZpbmlzaGVkVmFsdWVcbiAgICAgICAgICAgID8gbWFza2l0b1BhcnNlTnVtYmVyKHRoaXMudW5maW5pc2hlZFZhbHVlLCB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yKVxuICAgICAgICAgICAgOiB0aGlzLm5hdGl2ZU51bWJlclZhbHVlO1xuXG4gICAgICAgIHRoaXMudW5maW5pc2hlZFZhbHVlID0gbnVsbDtcblxuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG5hdGl2ZU51bWJlclZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9XG4gICAgICAgICAgICAgICAgZm9jdXNlZCAmJiAhdGhpcy5yZWFkT25seVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuY29tcHV0ZWRQcmVmaXggKyB0aGlzLmNvbXB1dGVkUG9zdGZpeFxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5hdGl2ZU51bWJlclZhbHVlO1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybWF0dGVkVmFsdWUodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkUHJlZml4ICtcbiAgICAgICAgICAgIHR1aUZvcm1hdE51bWJlcih2YWx1ZSwge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMubnVtYmVyRm9ybWF0LFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdGhpcy5wcmVjaXNpb24sXG4gICAgICAgICAgICB9KS5yZXBsYWNlKENIQVJfSFlQSEVOLCBDSEFSX01JTlVTKSArXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkUG9zdGZpeFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzTmF0aXZlVmFsdWVOb3RGaW5pc2hlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbmF0aXZlTnVtYmVyVmFsdWUgPSB0aGlzLm5hdGl2ZU51bWJlclZhbHVlO1xuXG4gICAgICAgIHJldHVybiBuYXRpdmVOdW1iZXJWYWx1ZSA8IDBcbiAgICAgICAgICAgID8gbmF0aXZlTnVtYmVyVmFsdWUgPiB0aGlzLmNvbXB1dGVkTWF4XG4gICAgICAgICAgICA6IG5hdGl2ZU51bWJlclZhbHVlIDwgdGhpcy5jb21wdXRlZE1pbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVOdW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gbWFza2l0b1BhcnNlTnVtYmVyKHRoaXMubmF0aXZlVmFsdWUsIHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHByZWNpc2lvbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKHRoaXMubnVtYmVyRm9ybWF0LnByZWNpc2lvbilcbiAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgOiB0aGlzLm51bWJlckZvcm1hdC5wcmVjaXNpb247XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNvbXB1dGVNaW4obWluOiBudW1iZXIgfCBudWxsLCBtYXg6IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5taW4oXG4gICAgICAgICAgICB0aGlzLnZhbHVlVHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobWluKSA/PyBtaW4gPz8gdGhpcy5vcHRpb25zLm1pbixcbiAgICAgICAgICAgIHRoaXMudmFsdWVUcmFuc2Zvcm1lcj8uZnJvbUNvbnRyb2xWYWx1ZShtYXgpID8/IG1heCA/PyB0aGlzLm9wdGlvbnMubWF4LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjb21wdXRlTWF4KG1pbjogbnVtYmVyIHwgbnVsbCwgbWF4OiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICAgICAgdGhpcy52YWx1ZVRyYW5zZm9ybWVyPy5mcm9tQ29udHJvbFZhbHVlKG1pbikgPz8gbWluID8/IHRoaXMub3B0aW9ucy5taW4sXG4gICAgICAgICAgICB0aGlzLnZhbHVlVHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobWF4KSA/PyBtYXggPz8gdGhpcy5vcHRpb25zLm1heCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9zb25hci1tYXgtcGFyYW1zXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2soXG4gICAgICAgIHByZWNpc2lvbjogbnVtYmVyLFxuICAgICAgICBkZWNpbWFsTW9kZTogVHVpRGVjaW1hbE1vZGUsXG4gICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZyxcbiAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZyxcbiAgICAgICAgbWluOiBudW1iZXIsXG4gICAgICAgIG1heDogbnVtYmVyLFxuICAgICAgICBwcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcG9zdGZpeDogc3RyaW5nLFxuICAgICk6IE1hc2tpdG9PcHRpb25zIHtcbiAgICAgICAgY29uc3QgZ2VuZXJhdG9yUGFyYW1zID0ge1xuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgcHJlZml4LFxuICAgICAgICAgICAgcG9zdGZpeCxcbiAgICAgICAgICAgIHByZWNpc2lvbixcbiAgICAgICAgICAgIGRlY2ltYWxaZXJvUGFkZGluZzogZGVjaW1hbE1vZGUgPT09ICdhbHdheXMnLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB7cGx1Z2lucywgLi4ub3B0aW9uc30gPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcihnZW5lcmF0b3JQYXJhbXMpO1xuICAgICAgICBjb25zdCBpbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4gPSBtYXNraXRvSW5pdGlhbENhbGlicmF0aW9uUGx1Z2luKFxuICAgICAgICAgICAgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgICAgIC4uLmdlbmVyYXRvclBhcmFtcyxcbiAgICAgICAgICAgICAgICBtaW46IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgICAgIG1heDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAgICAgICAuLi5wbHVnaW5zLFxuICAgICAgICAgICAgICAgIGluaXRpYWxDYWxpYnJhdGlvblBsdWdpbixcbiAgICAgICAgICAgICAgICBtYXNraXRvQ2FyZXRHdWFyZCgodmFsdWUpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoIC0gcG9zdGZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjx0dWktcHJpbWl0aXZlLXRleHRmaWVsZFxuICAgICN0ZXh0ZmllbGRcbiAgICB0dWlUZXh0ZmllbGRQb3N0Zml4PVwiXCJcbiAgICB0dWlUZXh0ZmllbGRQcmVmaXg9XCJcIlxuICAgIHR1aVZhbHVlQWNjZXNzb3JcbiAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgW2ZvY3VzYWJsZV09XCJmb2N1c2FibGVcIlxuICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgW21hc2tpdG9dPVwibWFza1wiXG4gICAgW3BzZXVkb0FjdGl2ZV09XCJwc2V1ZG9BY3RpdmVcIlxuICAgIFtwc2V1ZG9Gb2N1c109XCJjb21wdXRlZEZvY3VzZWRcIlxuICAgIFtwc2V1ZG9Ib3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICBbdmFsdWVdPVwiY29tcHV0ZWRWYWx1ZVwiXG4gICAgKGZvY3VzZWRDaGFuZ2UpPVwib25Gb2N1c2VkKCRldmVudClcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50IC8+XG4gICAgPG5nLWNvbnRlbnRcbiAgICAgICAgbmdQcm9qZWN0QXM9XCJpbnB1dFwiXG4gICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAvPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJwb2x5bW9ycGhldXNWYWx1ZUNvbnRlbnQubGVuZ3RoXCJcbiAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgY2xhc3M9XCJ0LXZhbHVlLWNvbnRlbnRcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcG9seW1vcnBoZXVzT3V0bGV0PVwidmFsdWVDb250ZW50IGFzIHRleHRcIj5cbiAgICAgICAgICAgIHt7IHRleHQgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuXG48c2VjdGlvblxuICAgICpuZ0lmPVwic3RlcFwiXG4gICAgY2xhc3M9XCJ0LWJ1dHRvbnNcIlxuPlxuICAgIDxidXR0b25cbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvblwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cInRleHRmaWVsZC5hcHBlYXJhbmNlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5JbmNyZW1lbnRcIlxuICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLnVwXCJcbiAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25BcnJvdyhzdGVwKVwiXG4gICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJuYXRpdmVGb2N1c2FibGVFbGVtZW50Py5mb2N1cygpXCJcbiAgICA+XG4gICAgICAgICtcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1idXR0b25cIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJ0ZXh0ZmllbGQuYXBwZWFyYW5jZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuRGVjcmVtZW50XCJcbiAgICAgICAgW2ljb25TdGFydF09XCJpY29ucy5kb3duXCJcbiAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25BcnJvdygtc3RlcClcIlxuICAgICAgICAobW91c2Vkb3duLnByZXZlbnQpPVwibmF0aXZlRm9jdXNhYmxlRWxlbWVudD8uZm9jdXMoKVwiXG4gICAgPlxuICAgICAgICAtXG4gICAgPC9idXR0b24+XG48L3NlY3Rpb24+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJwb2x5bW9ycGhldXNWYWx1ZUNvbnRlbnQuY2hhbmdlcyB8IGFzeW5jXCIgLz5cblxuPG5nLXRlbXBsYXRlICN2YWx1ZUNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidHVpQ29udGVudFwiIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRW5GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLEVB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O0lBRFAsT0FBTzt5REFNUDtBQUlPO0lBRFAsT0FBTzs0REF5Q1A7U0EvU1EsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBakJuQyxTQUFTO2lDQUNNLEtBQUssWUFDUCxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCwwQkFBMEIseUJBQXlCO3dCQUNuRCxZQUFZLHlCQUF5Qjt3QkFDckMsNkJBQTZCO3FCQUNoQyxRQUNLO3dCQUNGLGtCQUFrQixFQUFFLE1BQU07d0JBQzFCLHFCQUFxQixFQUFFLGdCQUFnQjt3QkFDdkMsbUJBQW1CLEVBQUUsZUFBZTtxQkFDdkM7OEJBT2dCLFNBQVM7c0JBRHpCLFNBQVM7dUJBQUMsOEJBQThCO2dCQVN0Qix3QkFBd0I7c0JBRDFDLGVBQWU7dUJBQUMsa0JBQWtCLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQWdCakQsR0FBRztzQkFEVCxLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBcU5FLFVBQVUsTUFRVixVQUFVLE1BU1YsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB0eXBlIHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9Jbml0aWFsQ2FsaWJyYXRpb25QbHVnaW59IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBtYXNraXRvQ2FyZXRHdWFyZCxcbiAgICBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcixcbiAgICBtYXNraXRvUGFyc2VOdW1iZXIsXG59IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQgdHlwZSB7VHVpVmFsdWVUcmFuc2Zvcm1lcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7Q0hBUl9IWVBIRU4sIENIQVJfTUlOVVMsIEVNUFRZX1FVRVJZfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aVdhdGNofSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VFVJX0lTX0lPU30gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHt0dWlDbGFtcCwgdHVpSXNTYWZlVG9Sb3VuZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7dHVpQ3JlYXRlVG9rZW4sIHR1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQgdHlwZSB7VHVpRGVjaW1hbE1vZGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge1RVSV9ERUZBVUxUX05VTUJFUl9GT1JNQVQsIFRVSV9OVU1CRVJfRk9STUFUfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aVNpemVMLCBUdWlTaXplU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHt0dWlGb3JtYXROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL2Zvcm1hdCc7XG5pbXBvcnQge0Fic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLCB0dWlBc0NvbnRyb2x9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvY2xhc3Nlcyc7XG5pbXBvcnQge1R1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS9jb21wb25lbnRzL3ByaW1pdGl2ZS10ZXh0ZmllbGQnO1xuaW1wb3J0IHtcbiAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBUVUlfVEVYVEZJRUxEX1NJWkUsXG4gICAgVFVJX1RFWFRGSUVMRF9XQVRDSEVEX0NPTlRST0xMRVIsXG59IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvZGlyZWN0aXZlcyc7XG5pbXBvcnQgdHlwZSB7VHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L3Rva2Vucyc7XG5pbXBvcnQge3R1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L3Rva2Vucyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c091dGxldH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5cbmltcG9ydCB0eXBlIHtUdWlJbnB1dE51bWJlck9wdGlvbnN9IGZyb20gJy4vaW5wdXQtbnVtYmVyLm9wdGlvbnMnO1xuaW1wb3J0IHtUVUlfSU5QVVRfTlVNQkVSX09QVElPTlN9IGZyb20gJy4vaW5wdXQtbnVtYmVyLm9wdGlvbnMnO1xuXG5jb25zdCBERUZBVUxUX01BWF9MRU5HVEggPSAxODtcblxuZXhwb3J0IGNvbnN0IFRVSV9OVU1CRVJfVkFMVUVfVFJBTlNGT1JNRVIgPVxuICAgIHR1aUNyZWF0ZVRva2VuPFR1aVZhbHVlVHJhbnNmb3JtZXI8bnVtYmVyIHwgbnVsbD4+KCk7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IGZhbHNlLFxuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LW51bWJlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LW51bWJlci50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXIuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dE51bWJlckNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dE51bWJlckNvbXBvbmVudCksXG4gICAgICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zaXplXSc6ICdzaXplJyxcbiAgICAgICAgJyhrZXlkb3duLmFycm93RG93biknOiAnb25BcnJvdygtc3RlcCknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dVcCknOiAnb25BcnJvdyhzdGVwKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXROdW1iZXJDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sPG51bWJlcj5cbiAgICBpbXBsZW1lbnRzIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0lPUyA9IGluamVjdChUVUlfSVNfSU9TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZFNpemUgPSBpbmplY3QoVFVJX1RFWFRGSUVMRF9TSVpFKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0lOUFVUX05VTUJFUl9PUFRJT05TKTtcbiAgICBwcml2YXRlIHVuZmluaXNoZWRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQb2x5bW9ycGhldXNPdXRsZXQsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvbHltb3JwaGV1c1ZhbHVlQ29udGVudDogUXVlcnlMaXN0PHVua25vd24+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgdmFsdWVUcmFuc2Zvcm1lciA9IGluamVjdDxcbiAgICAgICAgVHVpVmFsdWVUcmFuc2Zvcm1lcjxudW1iZXIgfCBudWxsPlxuICAgID4oVFVJX05VTUJFUl9WQUxVRV9UUkFOU0ZPUk1FUiwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICBwcm90ZWN0ZWQgbnVtYmVyRm9ybWF0ID0gVFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udHJvbGxlciA9IGluamVjdChUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG51bWJlckZvcm1hdCQgPSBpbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpXG4gICAgICAgIC5waXBlKHR1aVdhdGNoKHRoaXMuY2RyKSwgdGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQgPSBmb3JtYXQ7XG4gICAgICAgIH0pO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluOiBudW1iZXIgfCBudWxsID0gdGhpcy5vcHRpb25zLm1pbjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heDogbnVtYmVyIHwgbnVsbCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdGVwID0gdGhpcy5vcHRpb25zLnN0ZXA7XG5cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMudGV4dGZpZWxkIHx8IHRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMudGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRleHRmaWVsZD8uZm9jdXNlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlucHV0TW9kZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pc0lPUyAmJiB0aGlzLmlzTmVnYXRpdmVBbGxvd2VkKSB7XG4gICAgICAgICAgICAvLyBpUGhvbmUgZG9lcyBub3QgaGF2ZSBtaW51cyBzaWduIGlmIGlucHV0TW9kZSBpcyBlcXVhbCB0byAnbnVtZXJpYycgLyAnZGVjaW1hbCdcbiAgICAgICAgICAgIHJldHVybiAndGV4dCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXRoaXMucHJlY2lzaW9uID8gJ251bWVyaWMnIDogJ2RlY2ltYWwnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2FsY3VsYXRlZE1heExlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBkZWNpbWFsUGFydCA9XG4gICAgICAgICAgICAhIXRoaXMucHJlY2lzaW9uICYmXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLmluY2x1ZGVzKHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSBkZWNpbWFsUGFydCA/IE1hdGgubWluKHRoaXMucHJlY2lzaW9uICsgMSwgMjApIDogMDtcbiAgICAgICAgY29uc3QgdGFrZVRob3VzYW5kID0gdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IucmVwZWF0KDUpLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4gREVGQVVMVF9NQVhfTEVOR1RIICsgcHJlY2lzaW9uICsgdGFrZVRob3VzYW5kO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkID8gdGhpcy5uYXRpdmVWYWx1ZSA6IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2UobmF0aXZlVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcihcbiAgICAgICAgICAgIG5hdGl2ZVZhbHVlLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTihwYXJzZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc05hdGl2ZVZhbHVlTm90RmluaXNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMudW5maW5pc2hlZFZhbHVlID0gbmF0aXZlVmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcnNlZFZhbHVlIDwgdGhpcy5jb21wdXRlZE1pbiB8fCBwYXJzZWRWYWx1ZSA+IHRoaXMuY29tcHV0ZWRNYXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBwYXJzZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpY29ucygpOiBUdWlJbnB1dE51bWJlck9wdGlvbnNbJ2ljb25zJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRNaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZU1pbih0aGlzLm1pbiwgdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRNYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZU1heCh0aGlzLm1pbiwgdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaXNOZWdhdGl2ZUFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkTWluIDwgMDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICE9PSBudWxsID8gdGhpcy5nZXRGb3JtYXR0ZWRWYWx1ZSh0aGlzLnZhbHVlIHx8IDApIDogJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYW5EZWNyZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyYWN0aXZlICYmICh0aGlzLnZhbHVlIHx8IDApID4gdGhpcy5jb21wdXRlZE1pbjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNhbkluY3JlbWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJhY3RpdmUgJiYgKHRoaXMudmFsdWUgfHwgMCkgPCB0aGlzLmNvbXB1dGVkTWF4O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRQcmVmaXgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5wcmVmaXg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZFBvc3RmaXgoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9IHRoaXMuY29udHJvbGxlci5wb3N0Zml4O1xuXG4gICAgICAgIHJldHVybiBwb3N0Zml4ICYmIGAgJHtwb3N0Zml4fWA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBtYXNrKCk6IE1hc2tpdG9PcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlTWFzayhcbiAgICAgICAgICAgIHRoaXMucHJlY2lzaW9uLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbE1vZGUsXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkTWluLFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1heCxcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRQcmVmaXgsXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkUG9zdGZpeCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LnZhbHVlIHx8ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMudGV4dGZpZWxkIHx8ICF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGV4dGZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkFycm93KHN0ZXA6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzdGVwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdHVpQ2xhbXAoXG4gICAgICAgICAgICAodGhpcy52YWx1ZSB8fCAwKSArIHN0ZXAsXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkTWluLFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1heCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcblxuICAgICAgICBjb25zdCBuYXRpdmVOdW1iZXJWYWx1ZSA9IHRoaXMudW5maW5pc2hlZFZhbHVlXG4gICAgICAgICAgICA/IG1hc2tpdG9QYXJzZU51bWJlcih0aGlzLnVuZmluaXNoZWRWYWx1ZSwgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcilcbiAgICAgICAgICAgIDogdGhpcy5uYXRpdmVOdW1iZXJWYWx1ZTtcblxuICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTihuYXRpdmVOdW1iZXJWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPVxuICAgICAgICAgICAgICAgIGZvY3VzZWQgJiYgIXRoaXMucmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbXB1dGVkUHJlZml4ICsgdGhpcy5jb21wdXRlZFBvc3RmaXhcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuYXRpdmVOdW1iZXJWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZvcm1hdHRlZFZhbHVlKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZFByZWZpeCArXG4gICAgICAgICAgICB0dWlGb3JtYXROdW1iZXIodmFsdWUsIHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLm51bWJlckZvcm1hdCxcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOdW1iZXIgY2FuIHNhdGlzZnkgaW50ZXJ2YWwgW051bWJlci5NSU5fU0FGRV9JTlRFR0VSOyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl1cbiAgICAgICAgICAgICAgICAgKiBidXQgaXRzIHJvdW5kaW5nIGNhbiB2aW9sYXRlIGl0LlxuICAgICAgICAgICAgICAgICAqIEJlZm9yZSBCaWdJbnQgc3VwcG9ydCB0aGVyZSBpcyBubyBwZXJmZWN0IHNvbHV0aW9uIOKAkyBvbmx5IHRyYWRlIG9mZi5cbiAgICAgICAgICAgICAgICAgKiBObyByb3VuZGluZyBpcyBiZXR0ZXIgdGhhbiBsb3NlIHByZWNpc2lvbiBhbmQgaW5jb3JyZWN0IG11dGF0aW9uIG9mIGFscmVhZHkgdmFsaWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0dWlJc1NhZmVUb1JvdW5kKHZhbHVlLCB0aGlzLnByZWNpc2lvbilcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnByZWNpc2lvblxuICAgICAgICAgICAgICAgICAgICA6IEluZmluaXR5LFxuICAgICAgICAgICAgfSkucmVwbGFjZShDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUykgK1xuICAgICAgICAgICAgdGhpcy5jb21wdXRlZFBvc3RmaXhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc05hdGl2ZVZhbHVlTm90RmluaXNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZU51bWJlclZhbHVlID0gdGhpcy5uYXRpdmVOdW1iZXJWYWx1ZTtcblxuICAgICAgICByZXR1cm4gbmF0aXZlTnVtYmVyVmFsdWUgPCAwXG4gICAgICAgICAgICA/IG5hdGl2ZU51bWJlclZhbHVlID4gdGhpcy5jb21wdXRlZE1heFxuICAgICAgICAgICAgOiBuYXRpdmVOdW1iZXJWYWx1ZSA8IHRoaXMuY29tcHV0ZWRNaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbmF0aXZlTnVtYmVyVmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIG1hc2tpdG9QYXJzZU51bWJlcih0aGlzLm5hdGl2ZVZhbHVlLCB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBwcmVjaXNpb24oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTih0aGlzLm51bWJlckZvcm1hdC5wcmVjaXNpb24pXG4gICAgICAgICAgICA/IDJcbiAgICAgICAgICAgIDogdGhpcy5udW1iZXJGb3JtYXQucHJlY2lzaW9uO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjb21wdXRlTWluKG1pbjogbnVtYmVyIHwgbnVsbCwgbWF4OiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgICAgICAgdGhpcy52YWx1ZVRyYW5zZm9ybWVyPy5mcm9tQ29udHJvbFZhbHVlKG1pbikgPz8gbWluID8/IHRoaXMub3B0aW9ucy5taW4sXG4gICAgICAgICAgICB0aGlzLnZhbHVlVHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobWF4KSA/PyBtYXggPz8gdGhpcy5vcHRpb25zLm1heCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgY29tcHV0ZU1heChtaW46IG51bWJlciB8IG51bGwsIG1heDogbnVtYmVyIHwgbnVsbCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heChcbiAgICAgICAgICAgIHRoaXMudmFsdWVUcmFuc2Zvcm1lcj8uZnJvbUNvbnRyb2xWYWx1ZShtaW4pID8/IG1pbiA/PyB0aGlzLm9wdGlvbnMubWluLFxuICAgICAgICAgICAgdGhpcy52YWx1ZVRyYW5zZm9ybWVyPy5mcm9tQ29udHJvbFZhbHVlKG1heCkgPz8gbWF4ID8/IHRoaXMub3B0aW9ucy5tYXgsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvc29uYXItbWF4LXBhcmFtc1xuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKFxuICAgICAgICBwcmVjaXNpb246IG51bWJlcixcbiAgICAgICAgZGVjaW1hbE1vZGU6IFR1aURlY2ltYWxNb2RlLFxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIG1pbjogbnVtYmVyLFxuICAgICAgICBtYXg6IG51bWJlcixcbiAgICAgICAgcHJlZml4OiBzdHJpbmcsXG4gICAgICAgIHBvc3RmaXg6IHN0cmluZyxcbiAgICApOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IGdlbmVyYXRvclBhcmFtcyA9IHtcbiAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgIG1pbixcbiAgICAgICAgICAgIG1heCxcbiAgICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICAgIHBvc3RmaXgsXG4gICAgICAgICAgICBwcmVjaXNpb24sXG4gICAgICAgICAgICBkZWNpbWFsWmVyb1BhZGRpbmc6IGRlY2ltYWxNb2RlID09PSAnYWx3YXlzJyxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qge3BsdWdpbnMsIC4uLm9wdGlvbnN9ID0gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IoZ2VuZXJhdG9yUGFyYW1zKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbENhbGlicmF0aW9uUGx1Z2luID0gbWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbihcbiAgICAgICAgICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgICAgICAuLi5nZW5lcmF0b3JQYXJhbXMsXG4gICAgICAgICAgICAgICAgbWluOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgLi4ucGx1Z2lucyxcbiAgICAgICAgICAgICAgICBpbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4sXG4gICAgICAgICAgICAgICAgbWFza2l0b0NhcmV0R3VhcmQoKHZhbHVlKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCAtIHBvc3RmaXgubGVuZ3RoLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRcbiAgICAjdGV4dGZpZWxkXG4gICAgdHVpVGV4dGZpZWxkUG9zdGZpeD1cIlwiXG4gICAgdHVpVGV4dGZpZWxkUHJlZml4PVwiXCJcbiAgICB0dWlWYWx1ZUFjY2Vzc29yXG4gICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgIFttYXNraXRvXT1cIm1hc2tcIlxuICAgIFtwc2V1ZG9BY3RpdmVdPVwicHNldWRvQWN0aXZlXCJcbiAgICBbcHNldWRvRm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgW3ZhbHVlXT1cImNvbXB1dGVkVmFsdWVcIlxuICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uRm9jdXNlZCgkZXZlbnQpXCJcbiAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGVudCAvPlxuICAgIDxuZy1jb250ZW50XG4gICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICBzZWxlY3Q9XCJpbnB1dFwiXG4gICAgLz5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwicG9seW1vcnBoZXVzVmFsdWVDb250ZW50Lmxlbmd0aFwiXG4gICAgICAgIG5nUHJvamVjdEFzPVwidHVpQ29udGVudFwiXG4gICAgICAgIGNsYXNzPVwidC12YWx1ZS1jb250ZW50XCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cInZhbHVlQ29udGVudCBhcyB0ZXh0XCI+XG4gICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuPHNlY3Rpb25cbiAgICAqbmdJZj1cInN0ZXBcIlxuICAgIGNsYXNzPVwidC1idXR0b25zXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1idXR0b25cIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJ0ZXh0ZmllbGQuYXBwZWFyYW5jZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuSW5jcmVtZW50XCJcbiAgICAgICAgW2ljb25TdGFydF09XCJpY29ucy51cFwiXG4gICAgICAgIChjbGljay5wcmV2ZW50KT1cIm9uQXJyb3coc3RlcClcIlxuICAgICAgICAobW91c2Vkb3duLnByZXZlbnQpPVwibmF0aXZlRm9jdXNhYmxlRWxlbWVudD8uZm9jdXMoKVwiXG4gICAgPlxuICAgICAgICArXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICBzaXplPVwic1wiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwidGV4dGZpZWxkLmFwcGVhcmFuY2VcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudFwiXG4gICAgICAgIFtpY29uU3RhcnRdPVwiaWNvbnMuZG93blwiXG4gICAgICAgIChjbGljay5wcmV2ZW50KT1cIm9uQXJyb3coLXN0ZXApXCJcbiAgICAgICAgKG1vdXNlZG93bi5wcmV2ZW50KT1cIm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LmZvY3VzKClcIlxuICAgID5cbiAgICAgICAgLVxuICAgIDwvYnV0dG9uPlxuPC9zZWN0aW9uPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwicG9seW1vcnBoZXVzVmFsdWVDb250ZW50LmNoYW5nZXMgfCBhc3luY1wiIC8+XG5cbjxuZy10ZW1wbGF0ZSAjdmFsdWVDb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInR1aUNvbnRlbnRcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -117,7 +117,12 @@ class TuiPrimitiveTextfieldComponent extends AbstractTuiInteractive {
117
117
  return !this.hasValue && !showDecor;
118
118
  }
119
119
  get hasPlaceholder() {
120
- return this.placeholderRaisable || this.placeholderVisible;
120
+ const placeholder = this.placeholderRaisable || this.placeholderVisible;
121
+ return this.appearance === 'table' &&
122
+ !this.nativeFocusableElement?.readOnly &&
123
+ (this.prefix || this.postfix)
124
+ ? placeholder && !this.value && !this.computedFocused
125
+ : placeholder;
121
126
  }
122
127
  get placeholderRaised() {
123
128
  return (this.placeholderRaisable &&
@@ -241,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
241
246
  }], valueChange: [{
242
247
  type: Output
243
248
  }], getIndent$: [] } });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWl0aXZlLXRleHRmaWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sZWdhY3kvY29tcG9uZW50cy9wcmltaXRpdmUtdGV4dGZpZWxkL3ByaW1pdGl2ZS10ZXh0ZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvcHJpbWl0aXZlLXRleHRmaWVsZC9wcmltaXRpdmUtdGV4dGZpZWxkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSw2QkFBNkIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRCxPQUFPLEVBQUMscUJBQXFCLElBQUksT0FBTyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFdkUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUNILDZCQUE2QixFQUM3QixxQkFBcUIsSUFBSSxjQUFjLEVBQ3ZDLGdDQUFnQyxHQUNuQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsa0JBQWtCLEVB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RTs4QkFPZ0IsZ0JBQWdCO3NCQURoQyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFPVixPQUFPO3NCQUR6QixlQUFlO3VCQUFDLGtCQUFrQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFTakQsUUFBUTtzQkFEZCxLQUFLO2dCQVFDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBMElHLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7RWxlbWVudFJlZiwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1R1aUNvbnRleHR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50LCB0dWlSZXRhcmdldGVkQm91bmRhcnlDcm9zc2luZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlJc05hdGl2ZUZvY3VzZWRJbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9mb2N1cyc7XG5pbXBvcnQge3R1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1RVSV9URVhURklFTERfT1BUSU9OUyBhcyBPUFRJT05TfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1R1aUhpbnRPcHRpb25zRGlyZWN0aXZlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2hpbnQnO1xuaW1wb3J0IHR5cGUge1R1aVNpemVMLCBUdWlTaXplU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHtBYnN0cmFjdFR1aUludGVyYWN0aXZlfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBUVUlfVEVYVEZJRUxEX09QVElPTlMgYXMgTEVHQUNZX09QVElPTlMsXG4gICAgVFVJX1RFWFRGSUVMRF9XQVRDSEVEX0NPTlRST0xMRVIsXG59IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvZGlyZWN0aXZlcyc7XG5pbXBvcnQge3R1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L3Rva2Vucyc7XG5pbXBvcnQge3R1aUdldEJvcmRlcn0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS91dGlscyc7XG5pbXBvcnQgdHlwZSB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c091dGxldH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgdHlwZSB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Zyb21FdmVudCwgbWFwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUge1R1aVByaW1pdGl2ZVRleHRmaWVsZH0gZnJvbSAnLi9wcmltaXRpdmUtdGV4dGZpZWxkLXR5cGVzJztcblxuZXhwb3J0IGNvbnN0IFRVSV9JQ09OX1NUQVJUX1BBRERJTkdTOiBSZWNvcmQ8VHVpU2l6ZUwgfCBUdWlTaXplUywgbnVtYmVyPiA9IHtcbiAgICBzOiAxLjI1LFxuICAgIG06IDEuNzUsXG4gICAgbDogMi4yNSxcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IHVzZSB7QGxpbmsgVHVpVGV4dGZpZWxkfVxuICogaHR0cHM6Ly90YWlnYS11aS5kZXYvY29tcG9uZW50cy90ZXh0ZmllbGRcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXG4gICAgc2VsZWN0b3I6ICd0dWktcHJpbWl0aXZlLXRleHRmaWVsZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ByaW1pdGl2ZS10ZXh0ZmllbGQudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJpbWl0aXZlLXRleHRmaWVsZC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCksXG4gICAgICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zaXplXSc6ICdzaXplJyxcbiAgICAgICAgJ1tjbGFzcy5fcmVhZG9ubHldJzogJ3JlYWRPbmx5JyxcbiAgICAgICAgJ1tjbGFzcy5faGlkZGVuXSc6ICdpbnB1dEhpZGRlbicsXG4gICAgICAgICdbY2xhc3MuX2ludmFsaWRdJzogJ2NvbXB1dGVkSW52YWxpZCcsXG4gICAgICAgICdbY2xhc3MuX2F1dG9maWxsZWRdJzogJ2F1dG9maWxsZWQnLFxuICAgICAgICAnW3N0eWxlLi0tYm9yZGVyLXN0YXJ0LnJlbV0nOiAnYm9yZGVyU3RhcnQnLFxuICAgICAgICAnW3N0eWxlLi0tYm9yZGVyLWVuZC5yZW1dJzogJ2JvcmRlckVuZCcsXG4gICAgICAgICdbY2xhc3MuX2xhYmVsLW91dHNpZGVdJzpcbiAgICAgICAgICAgICdvcHRpb25zLmFwcGVhcmFuY2UoKSA9PT0gXCJ0YWJsZVwiIHx8IGNvbnRyb2xsZXIubGFiZWxPdXRzaWRlJyxcbiAgICAgICAgJyhmb2N1c2luKSc6ICdvbkZvY3VzZWQodHJ1ZSknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdvbkZvY3VzZWQoZmFsc2UpJyxcbiAgICAgICAgJyh0cmFuc2l0aW9uc3RhcnQuY2FwdHVyZSknOiAndHJhbnNpdGlvblN0YXJ0SGFuZGxlcigkZXZlbnQpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpSW50ZXJhY3RpdmVcbiAgICBpbXBsZW1lbnRzIFR1aVByaW1pdGl2ZVRleHRmaWVsZFxue1xuICAgIEBWaWV3Q2hpbGQoJ2ZvY3VzYWJsZUVsZW1lbnQnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNhYmxlRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGxlZ2FjeU9wdGlvbnMgPSBpbmplY3QoTEVHQUNZX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFBvbHltb3JwaGV1c091dGxldCwge2Rlc2NlbmRhbnRzOiB0cnVlfSlcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGVudD86IFF1ZXJ5TGlzdDx1bmtub3duPjtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KE9QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250cm9sbGVyID0gaW5qZWN0KFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGludE9wdGlvbnMgPSBpbmplY3QoVHVpSGludE9wdGlvbnNEaXJlY3RpdmUsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCBhdXRvZmlsbGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlZGl0YWJsZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZDpcbiAgICAgKiB1c2UgYHR1aVRleHRmaWVsZE9wdGlvbnNQcm92aWRlcih7aWNvbkNsZWFuZXI6IGBAdHVpLmNoZXZyb24tdXBgfSlgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWNvbkNsZWFuZXIgPSB0aGlzLmxlZ2FjeU9wdGlvbnMuaWNvbkNsZWFuZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlID0gJyc7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIHB1YmxpYyBnZXQgcHJlZml4KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIucHJlZml4O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcG9zdGZpeCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnBvc3RmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWxsZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5maWxsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcHV0ZWREaXNhYmxlZCB8fCAhdGhpcy5mb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtuYXRpdmVFbGVtZW50fSA9IHRoaXMuZm9jdXNhYmxlRWxlbWVudDtcblxuICAgICAgICByZXR1cm4gKG5hdGl2ZUVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZyB8fFxuICAgICAgICAgICAgbmF0aXZlRWxlbWVudCkgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkSW4odGhpcy5lbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBlYXJhbmNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXBwZWFyYW5jZSgpID09PSAndGFibGUnXG4gICAgICAgICAgICA/ICd0YWJsZSdcbiAgICAgICAgICAgIDogdGhpcy5jb250cm9sbGVyLmFwcGVhcmFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuc2l6ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbXB1dGVkSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlYWRPbmx5ICYmICF0aGlzLmRpc2FibGVkICYmIHRoaXMuaW52YWxpZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlucHV0SGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmNvbnRlbnQ/Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGJvcmRlclN0YXJ0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25MZWZ0Q29udGVudCA/IHRoaXMuaWNvblBhZGRpbmdMZWZ0IDogMDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGJvcmRlckVuZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHVpR2V0Qm9yZGVyKFxuICAgICAgICAgICAgISF0aGlzLmljb25Db250ZW50LFxuICAgICAgICAgICAgdGhpcy5oYXNDbGVhbmVyLFxuICAgICAgICAgICAgdGhpcy5oYXNUb29sdGlwLFxuICAgICAgICAgICAgdGhpcy5oYXNDdXN0b21Db250ZW50LFxuICAgICAgICAgICAgdGhpcy5zaXplLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaGFzVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBoYXNDbGVhbmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyLmNsZWFuZXIgJiZcbiAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgJiZcbiAgICAgICAgICAgICF0aGlzLmNvbXB1dGVkRGlzYWJsZWQgJiZcbiAgICAgICAgICAgICF0aGlzLnJlYWRPbmx5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBoYXNUb29sdGlwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmhpbnRPcHRpb25zPy5jb250ZW50ICYmICF0aGlzLmNvbXB1dGVkRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBoYXNDdXN0b21Db250ZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmNvbnRyb2xsZXIuY3VzdG9tQ29udGVudDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHBsYWNlaG9sZGVyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaGFzRGVjb3IgPVxuICAgICAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5wbGFjZWhvbGRlciB8fFxuICAgICAgICAgICAgdGhpcy5wcmVmaXggfHxcbiAgICAgICAgICAgIHRoaXMucG9zdGZpeCB8fFxuICAgICAgICAgICAgdGhpcy5maWxsZXI7XG4gICAgICAgIGNvbnN0IHNob3dEZWNvciA9IGhhc0RlY29yICYmICF0aGlzLnJlYWRPbmx5ICYmIHRoaXMuY29tcHV0ZWRGb2N1c2VkO1xuXG4gICAgICAgIHJldHVybiAhdGhpcy5oYXNWYWx1ZSAmJiAhc2hvd0RlY29yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaGFzUGxhY2Vob2xkZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyUmFpc2FibGUgfHwgdGhpcy5wbGFjZWhvbGRlclZpc2libGU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBwbGFjZWhvbGRlclJhaXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJSYWlzYWJsZSAmJlxuICAgICAgICAgICAgKCh0aGlzLmNvbXB1dGVkRm9jdXNlZCAmJiAhdGhpcy5yZWFkT25seSkgfHwgdGhpcy5oYXNWYWx1ZSB8fCB0aGlzLmF1dG9maWxsZWQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpY29uQ29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHQ8VHVpU2l6ZUwgfCBUdWlTaXplUz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5pY29uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaWNvbkxlZnRDb250ZW50KCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8XG4gICAgICAgIFR1aUNvbnRleHQ8VHVpU2l6ZUwgfCBUdWlTaXplUz5cbiAgICA+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5pY29uU3RhcnQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBzaG93SGludCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCAmJlxuICAgICAgICAgICAgKHRoaXMubGVnYWN5T3B0aW9ucy5oaW50T25EaXNhYmxlZCB8fCAhdGhpcy5jb21wdXRlZERpc2FibGVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIFNhZmFyaSBleHBpcmF0aW9uIGRhdGUgYXV0b2ZpbGwgd29ya2Fyb3VuZFxuICAgIHByb3RlY3RlZCBnZXQgbmFtZSgpOiAnY2NleHBpcnl5ZWFyJyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5hdXRvY29tcGxldGUgPT09ICdjYy1leHAnXG4gICAgICAgICAgICA/ICdjY2V4cGlyeXllYXInXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LmlkIHx8ICcnO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJvdGVjdGVkIGdldEluZGVudCQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gZnJvbUV2ZW50KGVsZW1lbnQsICdzY3JvbGwnKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IC0xICogTWF0aC5tYXgoZWxlbWVudC5zY3JvbGxMZWZ0LCAwKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSgnJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtuYXRpdmVGb2N1c2FibGVFbGVtZW50fSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCFuYXRpdmVGb2N1c2FibGVFbGVtZW50IHx8IGV2ZW50LnRhcmdldCA9PT0gbmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFuc2l0aW9uU3RhcnRIYW5kbGVyKHtwcm9wZXJ0eU5hbWUsIHRhcmdldH06IFRyYW5zaXRpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtYXRjaGVkQXV0b2ZpbGwgPVxuICAgICAgICAgICAgcHJvcGVydHlOYW1lLmluY2x1ZGVzKCdib3gtc2hhZG93JykgJiYgKHRhcmdldCBhcyBFbGVtZW50KT8ubWF0Y2hlcygnaW5wdXQnKTtcblxuICAgICAgICBpZiAobWF0Y2hlZEF1dG9maWxsKSB7XG4gICAgICAgICAgICB0aGlzLm9uQXV0b2ZpbGxlZCghdGhpcy5hdXRvZmlsbGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkF1dG9maWxsZWQoYXV0b2ZpbGxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUF1dG9maWxsZWQoYXV0b2ZpbGxlZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRldGVjdFJldGFyZ2V0RnJvbUxhYmVsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodHVpUmV0YXJnZXRlZEJvdW5kYXJ5Q3Jvc3NpbmcoZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGljb25QYWRkaW5nTGVmdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVFVJX0lDT05fU1RBUlRfUEFERElOR1NbdGhpcy5zaXplXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBwbGFjZWhvbGRlclJhaXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaXplICE9PSAncycgJiYgIXRoaXMuY29udHJvbGxlci5sYWJlbE91dHNpZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVBdXRvZmlsbGVkKGF1dG9maWxsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZpbGxlZCA9PT0gYXV0b2ZpbGxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hdXRvZmlsbGVkID0gYXV0b2ZpbGxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jaGFuZ2VzIHwgYXN5bmNcIiAvPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpbnRPcHRpb25zPy5jaGFuZ2UkIHwgYXN5bmNcIiAvPlxuPGRpdlxuICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktcHJpbWl0aXZlLXRleHRmaWVsZF9fd3JhcHBlclwiXG4gICAgdHVpV3JhcHBlclxuICAgIFthY3RpdmVdPVwicHNldWRvQWN0aXZlXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtmb2N1c109XCJjb21wdXRlZEZvY3VzZWRcIlxuICAgIFtob3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgW2ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFtzdHlsZS4tLXRleHQtaW5kZW50LnB4XT1cImRlY29yLnByZSQgfCBhc3luY1wiXG4gICAgKGNsaWNrLnByZXZlbnQuc2lsZW50KT1cImRldGVjdFJldGFyZ2V0RnJvbUxhYmVsKCRldmVudClcIlxuICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaW5wdXRcIiAvPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNlbGVjdFwiIC8+XG4gICAgPGlucHV0XG4gICAgICAgICNmb2N1c2FibGVFbGVtZW50XG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktcHJpbWl0aXZlLXRleHRmaWVsZF9fbmF0aXZlLWlucHV0XCJcbiAgICAgICAgY2xhc3M9XCJ0LWlucHV0XCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5IHx8ICFlZGl0YWJsZVwiXG4gICAgICAgIFt0YWJJbmRleF09XCJjb21wdXRlZEZvY3VzYWJsZSA/IDAgOiAtMVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8ZGl2XG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktcHJpbWl0aXZlLXRleHRmaWVsZF9fdmFsdWVcIlxuICAgICAgICBjbGFzcz1cInQtaW5wdXQgdC1pbnB1dF90ZW1wbGF0ZVwiXG4gICAgICAgIFtjbGFzcy50LWlucHV0X3RlbXBsYXRlX2hpZGRlbl09XCIhaW5wdXRIaWRkZW5cIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidHVpQ29udGVudFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInQtY29udGVudFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImljb25MZWZ0Q29udGVudFwiXG4gICAgICAgICAgICBjbGFzcz1cInQtaWNvbiB0LWljb25fbGVmdCB0LXRleHRmaWVsZC1pY29uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImljb25MZWZ0Q29udGVudCBhcyBzcmM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHNpemV9XCJcbiAgICAgICAgICAgICAgICB0dWlBcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwic3JjLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktcHJpbWl0aXZlLXRleHRmaWVsZF9fcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtcGxhY2Vob2xkZXJfcmFpc2VkXT1cInBsYWNlaG9sZGVyUmFpc2VkXCJcbiAgICAgICAgICAgICAgICBbZm9yXT1cImNvbXB1dGVkSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInQtd3JhcHBlci12YWx1ZS1kZWNvcmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgPHR1aS12YWx1ZS1kZWNvcmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICNkZWNvclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRfX3ZhbHVlLWRlY29yYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtdmFsdWUtZGVjb3JhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LWhhcy12YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS50ZXh0SW5kZW50LnB4XT1cImdldEluZGVudCQoZm9jdXNhYmxlRWxlbWVudCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInQtaWNvbnNcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0N1c3RvbUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktcHJpbWl0aXZlLXRleHRmaWVsZF9fY3VzdG9tLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jdXN0b20tY29udGVudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJjb250cm9sbGVyLmN1c3RvbUNvbnRlbnQgYXMgc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWN1c3RvbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwic3JjXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzQ2xlYW5lclwiXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktcHJpbWl0aXZlLXRleHRmaWVsZF9fY2xlYW5lclwiXG4gICAgICAgICAgICAgICAgdHVpV3JhcHBlclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jbGVhbmVyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJjbGVhcigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsZWFuZXIgfHwgY29udHJvbGxlci5vcHRpb25zLmljb25DbGVhbmVyIGFzIHNyYztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHskaW1wbGljaXQ6IHNpemV9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInNyYy50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCInMC4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8dHVpLXRvb2x0aXBcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dIaW50XCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRfX3Rvb2x0aXBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC10b29sdGlwXCJcbiAgICAgICAgICAgICAgICBbY29udGVudF09XCJoaW50T3B0aW9ucz8uY29udGVudFwiXG4gICAgICAgICAgICAgICAgW2Rlc2NyaWJlSWRdPVwiY29tcHV0ZWRJZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaWNvbkNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pY29uIHQtdGV4dGZpZWxkLWljb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiaWNvbkNvbnRlbnQgYXMgc3JjOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVwiXG4gICAgICAgICAgICAgICAgICAgIHR1aUFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwic3JjLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWl0aXZlLXRleHRmaWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sZWdhY3kvY29tcG9uZW50cy9wcmltaXRpdmUtdGV4dGZpZWxkL3ByaW1pdGl2ZS10ZXh0ZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvcHJpbWl0aXZlLXRleHRmaWVsZC9wcmltaXRpdmUtdGV4dGZpZWxkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSw2QkFBNkIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRCxPQUFPLEVBQUMscUJBQXFCLElBQUksT0FBTyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFdkUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUNILDZCQUE2QixFQUM3QixxQkFBcUIsSUFBSSxjQUFjLEVBQ3ZDLGdDQUFnQyxHQUNuQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsa0JBQWtCLEVB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QUFVO3dCQUMvQixpQkFBaUIsRUFBRSxhQUFhO3dCQUNoQyxrQkFBa0IsRUFBRSxpQkFBaUI7d0JBQ3JDLHFCQUFxQixFQUFFLFlBQVk7d0JBQ25DLDRCQUE0QixFQUFFLGFBQWE7d0JBQzNDLDBCQUEwQixFQUFFLFdBQVc7d0JBQ3ZDLHdCQUF3QixFQUNwQiw2REFBNkQ7d0JBQ2pFLFdBQVcsRUFBRSxpQkFBaUI7d0JBQzlCLFlBQVksRUFBRSxrQkFBa0I7d0JBQ2hDLDJCQUEyQixFQUFFLGdDQUFnQztxQkFDaEU7OEJBT2dCLGdCQUFnQjtzQkFEaEMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBT1YsT0FBTztzQkFEekIsZUFBZTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBU2pELFFBQVE7c0JBRGQsS0FBSztnQkFRQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJVSxXQUFXO3NCQUQxQixNQUFNO2dCQWdKRyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0VsZW1lbnRSZWYsIFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtUdWlDb250ZXh0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudCwgdHVpUmV0YXJnZXRlZEJvdW5kYXJ5Q3Jvc3Npbmd9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpSXNOYXRpdmVGb2N1c2VkSW59IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHt0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUVUlfVEVYVEZJRUxEX09QVElPTlMgYXMgT1BUSU9OU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9oaW50JztcbmltcG9ydCB0eXBlIHtUdWlTaXplTCwgVHVpU2l6ZVN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcbmltcG9ydCB7QWJzdHJhY3RUdWlJbnRlcmFjdGl2ZX0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS9jbGFzc2VzJztcbmltcG9ydCB7XG4gICAgVEVYVEZJRUxEX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgVFVJX1RFWFRGSUVMRF9PUFRJT05TIGFzIExFR0FDWV9PUFRJT05TLFxuICAgIFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSLFxufSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHt0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3Nvcn0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS90b2tlbnMnO1xuaW1wb3J0IHt0dWlHZXRCb3JkZXJ9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvdXRpbHMnO1xuaW1wb3J0IHR5cGUge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNPdXRsZXR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHR5cGUge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIG1hcH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB0eXBlIHtUdWlQcmltaXRpdmVUZXh0ZmllbGR9IGZyb20gJy4vcHJpbWl0aXZlLXRleHRmaWVsZC10eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBUVUlfSUNPTl9TVEFSVF9QQURESU5HUzogUmVjb3JkPFR1aVNpemVMIHwgVHVpU2l6ZVMsIG51bWJlcj4gPSB7XG4gICAgczogMS4yNSxcbiAgICBtOiAxLjc1LFxuICAgIGw6IDIuMjUsXG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkOiB1c2Uge0BsaW5rIFR1aVRleHRmaWVsZH1cbiAqIGh0dHBzOi8vdGFpZ2EtdWkuZGV2L2NvbXBvbmVudHMvdGV4dGZpZWxkXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IGZhbHNlLFxuICAgIHNlbGVjdG9yOiAndHVpLXByaW1pdGl2ZS10ZXh0ZmllbGQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcmltaXRpdmUtdGV4dGZpZWxkLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ByaW1pdGl2ZS10ZXh0ZmllbGQuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpLFxuICAgICAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmRhdGEtc2l6ZV0nOiAnc2l6ZScsXG4gICAgICAgICdbY2xhc3MuX3JlYWRvbmx5XSc6ICdyZWFkT25seScsXG4gICAgICAgICdbY2xhc3MuX2hpZGRlbl0nOiAnaW5wdXRIaWRkZW4nLFxuICAgICAgICAnW2NsYXNzLl9pbnZhbGlkXSc6ICdjb21wdXRlZEludmFsaWQnLFxuICAgICAgICAnW2NsYXNzLl9hdXRvZmlsbGVkXSc6ICdhdXRvZmlsbGVkJyxcbiAgICAgICAgJ1tzdHlsZS4tLWJvcmRlci1zdGFydC5yZW1dJzogJ2JvcmRlclN0YXJ0JyxcbiAgICAgICAgJ1tzdHlsZS4tLWJvcmRlci1lbmQucmVtXSc6ICdib3JkZXJFbmQnLFxuICAgICAgICAnW2NsYXNzLl9sYWJlbC1vdXRzaWRlXSc6XG4gICAgICAgICAgICAnb3B0aW9ucy5hcHBlYXJhbmNlKCkgPT09IFwidGFibGVcIiB8fCBjb250cm9sbGVyLmxhYmVsT3V0c2lkZScsXG4gICAgICAgICcoZm9jdXNpbiknOiAnb25Gb2N1c2VkKHRydWUpJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnb25Gb2N1c2VkKGZhbHNlKScsXG4gICAgICAgICcodHJhbnNpdGlvbnN0YXJ0LmNhcHR1cmUpJzogJ3RyYW5zaXRpb25TdGFydEhhbmRsZXIoJGV2ZW50KScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUludGVyYWN0aXZlXG4gICAgaW1wbGVtZW50cyBUdWlQcmltaXRpdmVUZXh0ZmllbGRcbntcbiAgICBAVmlld0NoaWxkKCdmb2N1c2FibGVFbGVtZW50JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzYWJsZUVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lPcHRpb25zID0gaW5qZWN0KExFR0FDWV9PUFRJT05TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQb2x5bW9ycGhldXNPdXRsZXQsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRlbnQ/OiBRdWVyeUxpc3Q8dW5rbm93bj47XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChPUFRJT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udHJvbGxlciA9IGluamVjdChUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhpbnRPcHRpb25zID0gaW5qZWN0KFR1aUhpbnRPcHRpb25zRGlyZWN0aXZlLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcm90ZWN0ZWQgYXV0b2ZpbGxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZWRpdGFibGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQ6XG4gICAgICogdXNlIGB0dWlUZXh0ZmllbGRPcHRpb25zUHJvdmlkZXIoe2ljb25DbGVhbmVyOiBgQHR1aS5jaGV2cm9uLXVwYH0pYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb25DbGVhbmVyID0gdGhpcy5sZWdhY3lPcHRpb25zLmljb25DbGVhbmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGludmFsaWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZSA9ICcnO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IHByZWZpeCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnByZWZpeDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBvc3RmaXgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5wb3N0Zml4O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsbGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuZmlsbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLmNvbXB1dGVkRGlzYWJsZWQgfHwgIXRoaXMuZm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmF0aXZlRWxlbWVudH0gPSB0aGlzLmZvY3VzYWJsZUVsZW1lbnQ7XG5cbiAgICAgICAgcmV0dXJuIChuYXRpdmVFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcgfHxcbiAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aUlzTmF0aXZlRm9jdXNlZEluKHRoaXMuZWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwZWFyYW5jZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFwcGVhcmFuY2UoKSA9PT0gJ3RhYmxlJ1xuICAgICAgICAgICAgPyAndGFibGUnXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbGxlci5hcHBlYXJhbmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnNpemU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZEludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yZWFkT25seSAmJiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmludmFsaWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpbnB1dEhpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jb250ZW50Py5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBib3JkZXJTdGFydCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uTGVmdENvbnRlbnQgPyB0aGlzLmljb25QYWRkaW5nTGVmdCA6IDA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBib3JkZXJFbmQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHR1aUdldEJvcmRlcihcbiAgICAgICAgICAgICEhdGhpcy5pY29uQ29udGVudCxcbiAgICAgICAgICAgIHRoaXMuaGFzQ2xlYW5lcixcbiAgICAgICAgICAgIHRoaXMuaGFzVG9vbHRpcCxcbiAgICAgICAgICAgIHRoaXMuaGFzQ3VzdG9tQ29udGVudCxcbiAgICAgICAgICAgIHRoaXMuc2l6ZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaGFzQ2xlYW5lcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5jbGVhbmVyICYmXG4gICAgICAgICAgICB0aGlzLmhhc1ZhbHVlICYmXG4gICAgICAgICAgICAhdGhpcy5jb21wdXRlZERpc2FibGVkICYmXG4gICAgICAgICAgICAhdGhpcy5yZWFkT25seVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaGFzVG9vbHRpcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCAmJiAhdGhpcy5jb21wdXRlZERpc2FibGVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaGFzQ3VzdG9tQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jb250cm9sbGVyLmN1c3RvbUNvbnRlbnQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBwbGFjZWhvbGRlclZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGhhc0RlY29yID1cbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudD8ucGxhY2Vob2xkZXIgfHxcbiAgICAgICAgICAgIHRoaXMucHJlZml4IHx8XG4gICAgICAgICAgICB0aGlzLnBvc3RmaXggfHxcbiAgICAgICAgICAgIHRoaXMuZmlsbGVyO1xuICAgICAgICBjb25zdCBzaG93RGVjb3IgPSBoYXNEZWNvciAmJiAhdGhpcy5yZWFkT25seSAmJiB0aGlzLmNvbXB1dGVkRm9jdXNlZDtcblxuICAgICAgICByZXR1cm4gIXRoaXMuaGFzVmFsdWUgJiYgIXNob3dEZWNvcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGhhc1BsYWNlaG9sZGVyKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXJSYWlzYWJsZSB8fCB0aGlzLnBsYWNlaG9sZGVyVmlzaWJsZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcHBlYXJhbmNlID09PSAndGFibGUnICYmXG4gICAgICAgICAgICAhdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5yZWFkT25seSAmJlxuICAgICAgICAgICAgKHRoaXMucHJlZml4IHx8IHRoaXMucG9zdGZpeClcbiAgICAgICAgICAgID8gcGxhY2Vob2xkZXIgJiYgIXRoaXMudmFsdWUgJiYgIXRoaXMuY29tcHV0ZWRGb2N1c2VkXG4gICAgICAgICAgICA6IHBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgcGxhY2Vob2xkZXJSYWlzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyUmFpc2FibGUgJiZcbiAgICAgICAgICAgICgodGhpcy5jb21wdXRlZEZvY3VzZWQgJiYgIXRoaXMucmVhZE9ubHkpIHx8IHRoaXMuaGFzVmFsdWUgfHwgdGhpcy5hdXRvZmlsbGVkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaWNvbkNvbnRlbnQoKTogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0PFR1aVNpemVMIHwgVHVpU2l6ZVM+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuaWNvbjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGljb25MZWZ0Q29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFxuICAgICAgICBUdWlDb250ZXh0PFR1aVNpemVMIHwgVHVpU2l6ZVM+XG4gICAgPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuaWNvblN0YXJ0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc2hvd0hpbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMuaGludE9wdGlvbnM/LmNvbnRlbnQgJiZcbiAgICAgICAgICAgICh0aGlzLmxlZ2FjeU9wdGlvbnMuaGludE9uRGlzYWJsZWQgfHwgIXRoaXMuY29tcHV0ZWREaXNhYmxlZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTYWZhcmkgZXhwaXJhdGlvbiBkYXRlIGF1dG9maWxsIHdvcmthcm91bmRcbiAgICBwcm90ZWN0ZWQgZ2V0IG5hbWUoKTogJ2NjZXhwaXJ5eWVhcicgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudD8uYXV0b2NvbXBsZXRlID09PSAnY2MtZXhwJ1xuICAgICAgICAgICAgPyAnY2NleHBpcnl5ZWFyJ1xuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5pZCB8fCAnJztcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByb3RlY3RlZCBnZXRJbmRlbnQkKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIGZyb21FdmVudChlbGVtZW50LCAnc2Nyb2xsJykucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiAtMSAqIE1hdGgubWF4KGVsZW1lbnQuc2Nyb2xsTGVmdCwgMCkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoJycpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7bmF0aXZlRm9jdXNhYmxlRWxlbWVudH0gPSB0aGlzO1xuXG4gICAgICAgIGlmICghbmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCBldmVudC50YXJnZXQgPT09IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhbnNpdGlvblN0YXJ0SGFuZGxlcih7cHJvcGVydHlOYW1lLCB0YXJnZXR9OiBUcmFuc2l0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZEF1dG9maWxsID1cbiAgICAgICAgICAgIHByb3BlcnR5TmFtZS5pbmNsdWRlcygnYm94LXNoYWRvdycpICYmICh0YXJnZXQgYXMgRWxlbWVudCk/Lm1hdGNoZXMoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKG1hdGNoZWRBdXRvZmlsbCkge1xuICAgICAgICAgICAgdGhpcy5vbkF1dG9maWxsZWQoIXRoaXMuYXV0b2ZpbGxlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25BdXRvZmlsbGVkKGF1dG9maWxsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVBdXRvZmlsbGVkKGF1dG9maWxsZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkZXRlY3RSZXRhcmdldEZyb21MYWJlbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aVJldGFyZ2V0ZWRCb3VuZGFyeUNyb3NzaW5nKGV2ZW50KSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpY29uUGFkZGluZ0xlZnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFRVSV9JQ09OX1NUQVJUX1BBRERJTkdTW3RoaXMuc2l6ZV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgcGxhY2Vob2xkZXJSYWlzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSAhPT0gJ3MnICYmICF0aGlzLmNvbnRyb2xsZXIubGFiZWxPdXRzaWRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQXV0b2ZpbGxlZChhdXRvZmlsbGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9maWxsZWQgPT09IGF1dG9maWxsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXV0b2ZpbGxlZCA9IGF1dG9maWxsZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY2hhbmdlcyB8IGFzeW5jXCIgLz5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJoaW50T3B0aW9ucz8uY2hhbmdlJCB8IGFzeW5jXCIgLz5cbjxkaXZcbiAgICBhdXRvbWF0aW9uLWlkPVwidHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRfX3dyYXBwZXJcIlxuICAgIHR1aVdyYXBwZXJcbiAgICBbYWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbZm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICBbaG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICBbc3R5bGUuLS10ZXh0LWluZGVudC5weF09XCJkZWNvci5wcmUkIHwgYXN5bmNcIlxuICAgIChjbGljay5wcmV2ZW50LnNpbGVudCk9XCJkZXRlY3RSZXRhcmdldEZyb21MYWJlbCgkZXZlbnQpXCJcbiAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0XCIgLz5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzZWxlY3RcIiAvPlxuICAgIDxpbnB1dFxuICAgICAgICAjZm9jdXNhYmxlRWxlbWVudFxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRfX25hdGl2ZS1pbnB1dFwiXG4gICAgICAgIGNsYXNzPVwidC1pbnB1dFwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWREaXNhYmxlZFwiXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seSB8fCAhZWRpdGFibGVcIlxuICAgICAgICBbdGFiSW5kZXhdPVwiY29tcHV0ZWRGb2N1c2FibGUgPyAwIDogLTFcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRfX3ZhbHVlXCJcbiAgICAgICAgY2xhc3M9XCJ0LWlucHV0IHQtaW5wdXRfdGVtcGxhdGVcIlxuICAgICAgICBbY2xhc3MudC1pbnB1dF90ZW1wbGF0ZV9oaWRkZW5dPVwiIWlucHV0SGlkZGVuXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInR1aUNvbnRlbnRcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0LWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJpY29uTGVmdENvbnRlbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWljb24gdC1pY29uX2xlZnQgdC10ZXh0ZmllbGQtaWNvblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJpY29uTGVmdENvbnRlbnQgYXMgc3JjOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVwiXG4gICAgICAgICAgICAgICAgdHVpQXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cInNyYy50b1N0cmluZygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAqbmdJZj1cImhhc1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRfX3BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LXBsYWNlaG9sZGVyX3JhaXNlZF09XCJwbGFjZWhvbGRlclJhaXNlZFwiXG4gICAgICAgICAgICAgICAgW2Zvcl09XCJjb21wdXRlZElkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LXdyYXBwZXItdmFsdWUtZGVjb3JhdGlvblwiPlxuICAgICAgICAgICAgICAgIDx0dWktdmFsdWUtZGVjb3JhdGlvblxuICAgICAgICAgICAgICAgICAgICAjZGVjb3JcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1wcmltaXRpdmUtdGV4dGZpZWxkX192YWx1ZS1kZWNvcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXZhbHVlLWRlY29yYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1oYXMtdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUudGV4dEluZGVudC5weF09XCJnZXRJbmRlbnQkKGZvY3VzYWJsZUVsZW1lbnQpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0LWljb25zXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNDdXN0b21Db250ZW50XCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRfX2N1c3RvbS1jb250ZW50XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtY3VzdG9tLWNvbnRlbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY29udHJvbGxlci5jdXN0b21Db250ZW50IGFzIHNyY1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jdXN0b20taWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInNyY1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0NsZWFuZXJcIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLXByaW1pdGl2ZS10ZXh0ZmllbGRfX2NsZWFuZXJcIlxuICAgICAgICAgICAgICAgIHR1aVdyYXBwZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtY2xlYW5lclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiY2xlYXIoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25DbGVhbmVyIHx8IGNvbnRyb2xsZXIub3B0aW9ucy5pY29uQ2xlYW5lciBhcyBzcmM7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJzcmMudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJzAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHR1aS10b29sdGlwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93SGludFwiXG4gICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1wcmltaXRpdmUtdGV4dGZpZWxkX190b29sdGlwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtdG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiaGludE9wdGlvbnM/LmNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIFtkZXNjcmliZUlkXT1cImNvbXB1dGVkSWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImljb25Db250ZW50XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtaWNvbiB0LXRleHRmaWVsZC1pY29uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImljb25Db250ZW50IGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgICAgICAgICB0dWlBcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInNyYy50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -28,7 +28,7 @@ class TuiLegacyDropdownOpenMonitorDirective {
28
28
  });
29
29
  this.host.driver
30
30
  .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))
31
- .subscribe((open) => this.external?.tuiDropdownOpenChange.next(open));
31
+ .subscribe((open) => this.external?.emitOpenChange(open));
32
32
  }
33
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLegacyDropdownOpenMonitorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
34
34
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiLegacyDropdownOpenMonitorDirective, isStandalone: true, selector: "[tuiDropdownOpenMonitor]", ngImport: i0 }); }
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
41
41
  selector: '[tuiDropdownOpenMonitor]',
42
42
  }]
43
43
  }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LWRyb3Bkb3duLW9wZW4tbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9kaXJlY3RpdmVzL2xlZ2FjeS1kcm9wZG93bi1vcGVuLW1vbml0b3IvbGVnYWN5LWRyb3Bkb3duLW9wZW4tbW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFDLGVBQWUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFMUMsTUFJYSxxQ0FBcUM7SUFKbEQ7UUFLcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQzdDLGFBQVEsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUU7WUFDdEQsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0tBb0JOO0lBbEJVLGVBQWU7UUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxxQkFBcUI7YUFDL0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2pFLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hCLElBQUksSUFBSSxFQUFFO2dCQUNOLHNCQUFzQixDQUFDO29CQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtpQkFDaEIsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ2Y7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVQLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTthQUNYLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNqRSxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQzsrR0F6QlEscUNBQXFDO21HQUFyQyxxQ0FBcUM7O1NBQXJDLHFDQUFxQzs0RkFBckMscUNBQXFDO2tCQUpqRCxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMEJBQTBCO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtBZnRlclZpZXdJbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGVzdHJveVJlZiwgRGlyZWN0aXZlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlHZXRDbG9zZXN0Rm9jdXNhYmxlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2ZvY3VzJztcbmltcG9ydCB7VHVpRHJvcGRvd25PcGVuLCBUdWlEcm9wZG93bk9wZW5MZWdhY3l9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24nO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbdHVpRHJvcGRvd25PcGVuTW9uaXRvcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlMZWdhY3lEcm9wZG93bk9wZW5Nb25pdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0ID0gaW5qZWN0KFR1aURyb3Bkb3duT3Blbiwge3NlbGY6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4dGVybmFsID0gaW5qZWN0KFR1aURyb3Bkb3duT3BlbkxlZ2FjeSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWw/LnR1aURyb3Bkb3duT3BlbkNoYW5nZVxuICAgICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChvcGVuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdHVpR2V0Q2xvc2VzdEZvY3VzYWJsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsOiB0aGlzLmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdDogdGhpcy5lbCxcbiAgICAgICAgICAgICAgICAgICAgfSk/LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnRvZ2dsZShvcGVuKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaG9zdC5kcml2ZXJcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3BlbikgPT4gdGhpcy5leHRlcm5hbD8udHVpRHJvcGRvd25PcGVuQ2hhbmdlLm5leHQob3BlbikpO1xuICAgIH1cbn1cbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LWRyb3Bkb3duLW9wZW4tbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9kaXJlY3RpdmVzL2xlZ2FjeS1kcm9wZG93bi1vcGVuLW1vbml0b3IvbGVnYWN5LWRyb3Bkb3duLW9wZW4tbW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFDLGVBQWUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFMUMsTUFJYSxxQ0FBcUM7SUFKbEQ7UUFLcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQzdDLGFBQVEsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUU7WUFDdEQsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0tBb0JOO0lBbEJVLGVBQWU7UUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxxQkFBcUI7YUFDL0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2pFLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hCLElBQUksSUFBSSxFQUFFO2dCQUNOLHNCQUFzQixDQUFDO29CQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtpQkFDaEIsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ2Y7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVQLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTthQUNYLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNqRSxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQzsrR0F6QlEscUNBQXFDO21HQUFyQyxxQ0FBcUM7O1NBQXJDLHFDQUFxQzs0RkFBckMscUNBQXFDO2tCQUpqRCxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMEJBQTBCO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtBZnRlclZpZXdJbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGVzdHJveVJlZiwgRGlyZWN0aXZlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlHZXRDbG9zZXN0Rm9jdXNhYmxlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2ZvY3VzJztcbmltcG9ydCB7VHVpRHJvcGRvd25PcGVuLCBUdWlEcm9wZG93bk9wZW5MZWdhY3l9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24nO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbdHVpRHJvcGRvd25PcGVuTW9uaXRvcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlMZWdhY3lEcm9wZG93bk9wZW5Nb25pdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0ID0gaW5qZWN0KFR1aURyb3Bkb3duT3Blbiwge3NlbGY6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4dGVybmFsID0gaW5qZWN0KFR1aURyb3Bkb3duT3BlbkxlZ2FjeSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWw/LnR1aURyb3Bkb3duT3BlbkNoYW5nZVxuICAgICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChvcGVuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdHVpR2V0Q2xvc2VzdEZvY3VzYWJsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsOiB0aGlzLmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdDogdGhpcy5lbCxcbiAgICAgICAgICAgICAgICAgICAgfSk/LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnRvZ2dsZShvcGVuKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaG9zdC5kcml2ZXJcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3BlbikgPT4gdGhpcy5leHRlcm5hbD8uZW1pdE9wZW5DaGFuZ2Uob3BlbikpO1xuICAgIH1cbn1cbiJdfQ==
@@ -9,7 +9,7 @@ import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
9
9
  import { TuiMonth, DATE_RANGE_FILLER_LENGTH, TuiDayRange, DATE_FILLER_LENGTH, RANGE_SEPARATOR_CHAR, TUI_FIRST_DAY, TUI_LAST_DAY } from '@taiga-ui/cdk/date-time';
10
10
  import { tuiWatch } from '@taiga-ui/cdk/observables';
11
11
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
12
- import { changeDateSeparator, tuiNullableSame, tuiIsPresent, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
12
+ import { changeDateSeparator, tuiIsPresent, tuiNullableSame, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
13
13
  import { tuiAsDataListHost } from '@taiga-ui/core/components/data-list';
14
14
  import { TUI_DEFAULT_DATE_FORMAT, TUI_DATE_FORMAT } from '@taiga-ui/core/tokens';
15
15
  import { TUI_MOBILE_CALENDAR, TUI_INPUT_DATE_OPTIONS, TUI_DATE_TEXTS, TUI_DATE_RANGE_VALUE_TRANSFORMER, tuiDateStreamWithTransformer, TUI_MOBILE_CALENDAR_PROVIDER } from '@taiga-ui/kit/tokens';
@@ -124,6 +124,7 @@ class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
124
124
  writeValue(value) {
125
125
  super.writeValue(value);
126
126
  this.nativeValue.set(value ? this.computedValue : '');
127
+ this.selectedActivePeriod = this.findActivePeriodBy(value);
127
128
  }
128
129
  get computedMobile() {
129
130
  return this.isMobile && !!this.mobileCalendar;
@@ -137,10 +138,7 @@ class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
137
138
  : this.calculateMask(this.dateFormat.mode, this.dateFormat.separator, this.min, this.max, this.minLength, this.maxLength);
138
139
  }
139
140
  get activePeriod() {
140
- return (this.selectedActivePeriod ??
141
- (this.items.find((item) => tuiNullableSame(this.value, item.range, (a, b) => a.from.daySame(b.from.dayLimit(this.min, this.max)) &&
142
- a.to.daySame(b.to.dayLimit(this.min, this.max)))) ||
143
- null));
141
+ return this.selectedActivePeriod ?? this.findActivePeriodBy(this.value);
144
142
  }
145
143
  get showValueTemplate() {
146
144
  return tuiIsPresent(this.value) && !this.focused;
@@ -205,6 +203,10 @@ class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
205
203
  getDateRangeFiller(dateFiller) {
206
204
  return `${dateFiller}${RANGE_SEPARATOR_CHAR}${dateFiller}`;
207
205
  }
206
+ findActivePeriodBy(value) {
207
+ return (this.items.find((item) => tuiNullableSame(value, item.range, (a, b) => a.from.daySame(b.from.dayLimit(this.min, this.max)) &&
208
+ a.to.daySame(b.to.dayLimit(this.min, this.max)))) ?? null);
209
+ }
208
210
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputDateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
209
211
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputDateRangeComponent, selector: "tui-input-date-range", inputs: { disabledItemHandler: "disabledItemHandler", markerHandler: "markerHandler", defaultViewedMonth: "defaultViewedMonth", items: "items", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength" }, host: { listeners: { "click": "onClick()" }, properties: { "attr.data-size": "size" } }, providers: [
210
212
  tuiAsFocusableItemAccessor(TuiInputDateRangeComponent),