@skyux/datetime 7.0.0-beta.1 → 7.0.0-beta.2

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.
@@ -128,17 +128,6 @@ export class SkyFuzzyDatepickerInputDirective {
128
128
  get minDate() {
129
129
  return this._minDate;
130
130
  }
131
- /**
132
- * Creates the fuzzy datepicker input and calendar to let users specify dates that are
133
- * not complete. For example, if users know the year but not the month or day, they can
134
- * enter just the year. Place this directive on an `input` element, and wrap the `input`
135
- * in a `sky-datepicker` component. The value that users select is driven
136
- * through the `ngModel` attribute specified on the `input` element.
137
- * @required
138
- */
139
- set skyFuzzyDatepickerInput(value) {
140
- // TODO: Remove this property in a future version of SKY UX.
141
- }
142
131
  /**
143
132
  * Specifies the starting day of the week in the calendar, where `0` sets the starting day
144
133
  * to Sunday. Place this attribute on the `input` element to override the default
@@ -418,7 +407,7 @@ export class SkyFuzzyDatepickerInputDirective {
418
407
  }
419
408
  }
420
409
  SkyFuzzyDatepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: i2.SkyFuzzyDateService }, { token: i3.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i3.SkyLibResourcesService }, { token: i4.SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
421
- SkyFuzzyDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: SkyFuzzyDatepickerInputDirective, selector: "[skyFuzzyDatepickerInput]", inputs: { dateFormat: "dateFormat", disabled: "disabled", futureDisabled: "futureDisabled", maxDate: "maxDate", minDate: "minDate", skyDatepickerNoValidate: "skyDatepickerNoValidate", skyFuzzyDatepickerInput: "skyFuzzyDatepickerInput", startingDay: "startingDay", yearRequired: "yearRequired" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "input": "onInput()" } }, providers: [
410
+ SkyFuzzyDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: SkyFuzzyDatepickerInputDirective, selector: "[skyFuzzyDatepickerInput]", inputs: { dateFormat: "dateFormat", disabled: "disabled", futureDisabled: "futureDisabled", maxDate: "maxDate", minDate: "minDate", skyDatepickerNoValidate: "skyDatepickerNoValidate", startingDay: "startingDay", yearRequired: "yearRequired" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "input": "onInput()" } }, providers: [
422
411
  SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,
423
412
  SKY_FUZZY_DATEPICKER_VALIDATOR,
424
413
  ], ngImport: i0 });
@@ -445,8 +434,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
445
434
  type: Input
446
435
  }], skyDatepickerNoValidate: [{
447
436
  type: Input
448
- }], skyFuzzyDatepickerInput: [{
449
- type: Input
450
437
  }], startingDay: [{
451
438
  type: Input
452
439
  }], yearRequired: [{
@@ -461,4 +448,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
461
448
  type: HostListener,
462
449
  args: ['input']
463
450
  }] } });
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUUzRCxNQUFNLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUMvRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLDhCQUE4QixHQUFHO0lBQ3JDLE9BQU8sRUFBRSxhQUFh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LENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztTQUNuRDtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7NkhBMWlCVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyx1Y0FMaEM7UUFDVCxtQ0FBbUM7UUFDbkMsOEJBQThCO0tBQy9COzJGQUVVLGdDQUFnQztrQkFQNUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1QsbUNBQW1DO3dCQUNuQyw4QkFBOEI7cUJBQy9CO2lCQUNGOzswQkF1TUksUUFBUTs0Q0F2TEEsVUFBVTtzQkFEcEIsS0FBSztnQkE0QkssUUFBUTtzQkFEbEIsS0FBSztnQkFrQkssY0FBYztzQkFEeEIsS0FBSztnQkFpQkssT0FBTztzQkFEakIsS0FBSztnQkFrQkssT0FBTztzQkFEakIsS0FBSztnQkFnQkMsdUJBQXVCO3NCQUQ3QixLQUFLO2dCQVlLLHVCQUF1QjtzQkFEakMsS0FBSztnQkFjSyxXQUFXO3NCQURyQixLQUFLO2dCQWlCSyxZQUFZO3NCQUR0QixLQUFLO2dCQW9JQyxhQUFhO3NCQURuQixZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNM0IsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxNQUFNO2dCQWdCYixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyLCBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lGdXp6eURhdGUgfSBmcm9tICcuL2Z1enp5LWRhdGUnO1xuaW1wb3J0IHsgU2t5RnV6enlEYXRlU2VydmljZSB9IGZyb20gJy4vZnV6enktZGF0ZS5zZXJ2aWNlJztcblxuY29uc3QgU0tZX0ZVWlpZX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuY29uc3QgU0tZX0ZVWlpZX0RBVEVQSUNLRVJfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUZ1enp5RGF0ZXBpY2tlcklucHV0XScsXG4gIHByb3ZpZGVyczogW1xuICAgIFNLWV9GVVpaWV9EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFNLWV9GVVpaWV9EQVRFUElDS0VSX1ZBTElEQVRPUixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RnV6enlEYXRlcGlja2VySW5wdXREaXJlY3RpdmVcbiAgaW1wbGVtZW50c1xuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIFZhbGlkYXRvclxue1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBkYXRlIGZvcm1hdCBmb3IgdGhlIGlucHV0LiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50XG4gICAqIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGluIGBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZWAuXG4gICAqIEBkZWZhdWx0IFwiTU0vREQvWVlZWVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGVGb3JtYXQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2RhdGVGb3JtYXQgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmZvcm1hdChcbiAgICAgICAgdGhpcy52YWx1ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICB0aGlzLmxvY2FsZVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9kYXRlRm9ybWF0IHx8XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZGF0ZUZvcm1hdCB8fFxuICAgICAgdGhpcy5wcmVmZXJyZWRTaG9ydERhdGVGb3JtYXRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGRhdGVwaWNrZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmRhdGVwaWNrZXJDb21wb25lbnQuZGlzYWJsZWQgPSB2YWx1ZTtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHByZXZlbnQgdXNlcnMgZnJvbSBzcGVjaWZ5aW5nIGRhdGVzIHRoYXQgYXJlIGluIHRoZSBmdXR1cmUuXG4gICAqIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZ1dHVyZURpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZnV0dXJlRGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZ1dHVyZURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mdXR1cmVEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGxhdGVzdCBmdXp6eSBkYXRlIGFsbG93ZWQuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnRcbiAgICogdG8gcHJldmVudCBmdXp6eSBkYXRlcyBhZnRlciBhIHNwZWNpZmllZCBkYXRlLiBUaGlzIHByb3BlcnR5IGFjY2VwdHNcbiAgICogYSBgU2t5RnV6enlEYXRlYCB2YWx1ZSB0aGF0IGluY2x1ZGVzIG51bWVyaWMgbW9udGgsIGRheSwgYW5kIHllYXIgdmFsdWVzLlxuICAgKiBGb3IgZXhhbXBsZTogYHsgbW9udGg6IDEsIGRheTogMSwgeWVhcjogMjAyNyB9YC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4RGF0ZSh2YWx1ZTogU2t5RnV6enlEYXRlKSB7XG4gICAgdGhpcy5fbWF4RGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMuZGF0ZXBpY2tlckNvbXBvbmVudC5tYXhEYXRlID0gdGhpcy5nZXRNYXhEYXRlKCk7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXhEYXRlKCk6IFNreUZ1enp5RGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBlYXJsaWVzdCBmdXp6eSBkYXRlIGFsbG93ZWQuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnRcbiAgICogdG8gcHJldmVudCBmdXp6eSBkYXRlcyBiZWZvcmUgYSBzcGVjaWZpZWQgZGF0ZS4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzIGEgYFNreUZ1enp5RGF0ZWAgdmFsdWVcbiAgICogdGhhdCBpbmNsdWRlcyBudW1lcmljIG1vbnRoLCBkYXksIGFuZCB5ZWFyIHZhbHVlcy5cbiAgICogRm9yIGV4YW1wbGU6IGB7IG1vbnRoOiAxLCBkYXk6IDEsIHllYXI6IDIwMDcgfWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbkRhdGUodmFsdWU6IFNreUZ1enp5RGF0ZSkge1xuICAgIHRoaXMuX21pbkRhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLmRhdGVwaWNrZXJDb21wb25lbnQubWluRGF0ZSA9IHRoaXMuZ2V0TWluRGF0ZSgpO1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluRGF0ZSgpOiBTa3lGdXp6eURhdGUge1xuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgZGF0ZSB2YWxpZGF0aW9uIG9uIHRoZSBmdXp6eSBkYXRlcGlja2VyIGlucHV0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNreURhdGVwaWNrZXJOb1ZhbGlkYXRlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGZ1enp5IGRhdGVwaWNrZXIgaW5wdXQgYW5kIGNhbGVuZGFyIHRvIGxldCB1c2VycyBzcGVjaWZ5IGRhdGVzIHRoYXQgYXJlXG4gICAqIG5vdCBjb21wbGV0ZS4gRm9yIGV4YW1wbGUsIGlmIHVzZXJzIGtub3cgdGhlIHllYXIgYnV0IG5vdCB0aGUgbW9udGggb3IgZGF5LCB0aGV5IGNhblxuICAgKiBlbnRlciBqdXN0IHRoZSB5ZWFyLiBQbGFjZSB0aGlzIGRpcmVjdGl2ZSBvbiBhbiBgaW5wdXRgIGVsZW1lbnQsIGFuZCB3cmFwIHRoZSBgaW5wdXRgXG4gICAqIGluIGEgYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnQuIFRoZSB2YWx1ZSB0aGF0IHVzZXJzIHNlbGVjdCBpcyBkcml2ZW5cbiAgICogdGhyb3VnaCB0aGUgYG5nTW9kZWxgIGF0dHJpYnV0ZSBzcGVjaWZpZWQgb24gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNreUZ1enp5RGF0ZXBpY2tlcklucHV0KFxuICAgIHZhbHVlOiBTa3lEYXRlcGlja2VyQ29tcG9uZW50IHwgdW5kZWZpbmVkIHwgJydcbiAgKSB7XG4gICAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgcHJvcGVydHkgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBTS1kgVVguXG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgaW4gdGhlIGNhbGVuZGFyLCB3aGVyZSBgMGAgc2V0cyB0aGUgc3RhcnRpbmcgZGF5XG4gICAqIHRvIFN1bmRheS4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdFxuICAgKiBpbiBgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2VgLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0aW5nRGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydGluZ0RheSA9IHZhbHVlO1xuICAgIHRoaXMuZGF0ZXBpY2tlckNvbXBvbmVudC5zdGFydGluZ0RheSA9IHRoaXMuc3RhcnRpbmdEYXk7XG5cbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0aW5nRGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0aW5nRGF5IHx8IHRoaXMuY29uZmlnU2VydmljZS5zdGFydGluZ0RheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXF1aXJlIHRoZSB5ZWFyIGluIGZ1enp5IGRhdGVzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB5ZWFyUmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl95ZWFyUmVxdWlyZWQgPSB2YWx1ZTtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHllYXJSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5feWVhclJlcXVpcmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICBwcml2YXRlIGRhdGVGb3JtYXR0ZXIgPSBuZXcgU2t5RGF0ZUZvcm1hdHRlcigpO1xuXG4gIHByaXZhdGUgbG9jYWxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBwcmVmZXJyZWRTaG9ydERhdGVGb3JtYXQ6IHN0cmluZztcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2Z1dHVyZURpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGF0ZUZvcm1hdDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbWF4RGF0ZTogU2t5RnV6enlEYXRlO1xuXG4gIHByaXZhdGUgX21pbkRhdGU6IFNreUZ1enp5RGF0ZTtcblxuICBwcml2YXRlIF9zdGFydGluZ0RheTogbnVtYmVyO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgcHJpdmF0ZSBfeWVhclJlcXVpcmVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBmdXp6eURhdGVTZXJ2aWNlOiBTa3lGdXp6eURhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYWxlUHJvdmlkZXI6IFNreUFwcExvY2FsZVByb3ZpZGVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkYXRlcGlja2VyQ29tcG9uZW50OiBTa3lEYXRlcGlja2VyQ29tcG9uZW50XG4gICkge1xuICAgIHRoaXMubG9jYWxlUHJvdmlkZXJcbiAgICAgIC5nZXRMb2NhbGVJbmZvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgICBTa3lEYXRlRm9ybWF0dGVyLnNldExvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgICAgIHRoaXMucHJlZmVycmVkU2hvcnREYXRlRm9ybWF0ID1cbiAgICAgICAgICBTa3lEYXRlRm9ybWF0dGVyLmdldFByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMueWVhclJlcXVpcmVkKSB7XG4gICAgICBpZiAodGhpcy5kYXRlRm9ybWF0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigneScpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1lvdSBoYXZlIGNvbmZpZ3VyZWQgY29uZmxpY3Rpbmcgc2V0dGluZ3MuIFllYXIgaXMgcmVxdWlyZWQgYW5kIGRhdGVGb3JtYXQgZG9lcyBub3QgaW5jbHVkZSB5ZWFyLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGF0ZXBpY2tlckNvbXBvbmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnWW91IG11c3Qgd3JhcCB0aGUgYHNreUZ1enp5RGF0ZXBpY2tlcklucHV0YCBkaXJlY3RpdmUgd2l0aGluIGEgJyArXG4gICAgICAgICAgJ2A8c2t5LWRhdGVwaWNrZXI+YCBjb21wb25lbnQhJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsICdza3ktZm9ybS1jb250cm9sJyk7XG5cbiAgICBjb25zdCBoYXNBcmlhTGFiZWwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIWhhc0FyaWFMYWJlbCkge1xuICAgICAgdGhpcy5yZXNvdXJjZXNTZXJ2aWNlXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreXV4X2RhdGVfZmllbGRfZGVmYXVsdF9sYWJlbCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2FyaWEtbGFiZWwnLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyQ29tcG9uZW50LmRhdGVDaGFuZ2VcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERhdGUpID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIFRoaXMgaXMgbmVlZGVkIHRvIGFkZHJlc3MgYSBidWcgaW4gQW5ndWxhciA0LlxuICAgIC8vIFdoZW4gYSBjb250cm9sIHZhbHVlIGlzIHNldCBpbnRpYWxseSwgaXRzIHZhbHVlIGlzIG5vdCByZXByZXNlbnRlZCBvbiB0aGUgdmlldy5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNzkyXG4gICAgLy8gT2Ygbm90ZSBpcyB0aGUgcGFyZW50IGNoZWNrIHdoaWNoIGFsbG93cyB1cyB0byBkZXRlcm1pbmUgaWYgdGhlIGZvcm0gaXMgcmVhY3RpdmUuXG4gICAgLy8gV2l0aG91dCB0aGlzIGNoZWNrIHRoZXJlIGlzIGEgY2hhbmdlZCBiZWZvcmUgY2hlY2tlZCBlcnJvclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cbiAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5wYXJlbnQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSwge1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZm9ybWF0KFxuICAgICAgdGhpcy52YWx1ZSxcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCxcbiAgICAgIHRoaXMubG9jYWxlXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2wudmFsaWQpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBwdWJsaWMgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2t5RGF0ZXBpY2tlck5vVmFsaWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlOiBhbnkgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgbGV0IGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlO1xuICAgIGxldCB2YWxpZGF0aW9uRXJyb3I6IFZhbGlkYXRpb25FcnJvcnM7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgZnV6enlEYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmdldEZ1enp5RGF0ZUZyb21TdHJpbmcoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZ1enp5RGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmICghZnV6enlEYXRlKSB7XG4gICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgIGludmFsaWQ6IHZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIXZhbGlkYXRpb25FcnJvciAmJiAhZnV6enlEYXRlLnllYXIgJiYgdGhpcy55ZWFyUmVxdWlyZWQpIHtcbiAgICAgIHZhbGlkYXRpb25FcnJvciA9IHtcbiAgICAgICAgc2t5RnV6enlEYXRlOiB7XG4gICAgICAgICAgeWVhclJlcXVpcmVkOiB2YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCF2YWxpZGF0aW9uRXJyb3IgJiYgZnV6enlEYXRlLnllYXIpIHtcbiAgICAgIGxldCBmdXp6eURhdGVSYW5nZTtcblxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSkge1xuICAgICAgICBmdXp6eURhdGVSYW5nZSA9IHRoaXMuZnV6enlEYXRlU2VydmljZS5nZXRGdXp6eURhdGVSYW5nZShcbiAgICAgICAgICBmdXp6eURhdGUsXG4gICAgICAgICAgdGhpcy5tYXhEYXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFmdXp6eURhdGVSYW5nZS52YWxpZCkge1xuICAgICAgICAgIHZhbGlkYXRpb25FcnJvciA9IHtcbiAgICAgICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgICAgICBtYXhEYXRlOiB2YWx1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRpb25FcnJvciAmJiB0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgZnV6enlEYXRlUmFuZ2UgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgICAgICAgdGhpcy5taW5EYXRlLFxuICAgICAgICAgIGZ1enp5RGF0ZVxuICAgICAgICApO1xuICAgICAgICBpZiAoIWZ1enp5RGF0ZVJhbmdlLnZhbGlkKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbkVycm9yID0ge1xuICAgICAgICAgICAgc2t5RnV6enlEYXRlOiB7XG4gICAgICAgICAgICAgIG1pbkRhdGU6IHZhbHVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsaWRhdGlvbkVycm9yICYmIHRoaXMuZnV0dXJlRGlzYWJsZWQpIHtcbiAgICAgICAgZnV6enlEYXRlUmFuZ2UgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgICAgICAgZnV6enlEYXRlLFxuICAgICAgICAgIHRoaXMuZnV6enlEYXRlU2VydmljZS5nZXRDdXJyZW50RnV6enlEYXRlKClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFmdXp6eURhdGVSYW5nZS52YWxpZCkge1xuICAgICAgICAgIHZhbGlkYXRpb25FcnJvciA9IHtcbiAgICAgICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgICAgICBmdXR1cmVEaXNhYmxlZDogdmFsdWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAvLyBNYXJrIHRoZSBpbnZhbGlkIGNvbnRyb2wgYXMgdG91Y2hlZCBzbyB0aGF0IHRoZSBpbnB1dCdzIGludmFsaWQgQ1NTIHN0eWxlcyBhcHBlYXIuXG4gICAgICAvLyAoVGhpcyBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdGhlIGludmFsaWQgdmFsdWUgaXMgc2V0IGJ5IHRoZSBGb3JtQ29udHJvbCBjb25zdHJ1Y3Rvci4pXG4gICAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0aW9uRXJyb3I7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLmRhdGVwaWNrZXJDb21wb25lbnQuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudCdzIHZhbHVlIGFuZCB1cGRhdGVzIHRoZSBuZ01vZGVsIGFjY29yZGluZ2x5LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byB1cGRhdGUgdGhlIG5nTW9kZWwgdmFsdWUgYmVmb3JlIHRoZSBpbnB1dCBlbGVtZW50IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgcHVibGljIGRldGVjdElucHV0VmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25WYWx1ZUNoYW5nZShuZXdWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dEVsZW1lbnRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXhEYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLm1heERhdGUpIHtcbiAgICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShcbiAgICAgICAgdGhpcy5tYXhEYXRlXG4gICAgICApO1xuICAgICAgaWYgKG1heERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBtYXhEYXRlLnRvRGF0ZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5mdXR1cmVEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UubWF4RGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWluRGF0ZSgpOiBEYXRlIHtcbiAgICBpZiAodGhpcy5taW5EYXRlKSB7XG4gICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmdldE1vbWVudEZyb21GdXp6eURhdGUoXG4gICAgICAgIHRoaXMubWluRGF0ZVxuICAgICAgKTtcbiAgICAgIGlmIChtaW5EYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gbWluRGF0ZS50b0RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5taW5EYXRlO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcHJpdmF0ZSBmdXp6eURhdGVzRXF1YWwoZGF0ZUE6IFNreUZ1enp5RGF0ZSwgZGF0ZUI6IFNreUZ1enp5RGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBkYXRlQSAmJlxuICAgICAgZGF0ZUIgJiZcbiAgICAgICgoIWRhdGVBLmRheSAmJiAhZGF0ZUIuZGF5KSB8fCBkYXRlQS5kYXkgPT09IGRhdGVCLmRheSkgJiZcbiAgICAgICgoIWRhdGVBLm1vbnRoICYmICFkYXRlQi5tb250aCkgfHwgZGF0ZUEubW9udGggPT09IGRhdGVCLm1vbnRoKSAmJlxuICAgICAgKCghZGF0ZUEueWVhciAmJiAhZGF0ZUIueWVhcikgfHwgZGF0ZUEueWVhciA9PT0gZGF0ZUIueWVhcilcbiAgICApO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwcml2YXRlIG9uVmFsaWRhdG9yQ2hhbmdlID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gY29udHJvbCBhbmQgaW5wdXQgZWxlbWVudFxuICAgKiBAcGFyYW0gZW1pdEV2ZW50IERlbm90ZXMgaWYgd2UgZW1pdCBhbiBldmVudCB0byB0aGUgY29uc3VtZXIncyBmb3JtIGNvbnRyb2wuIFdlIGRvIG5vdCB3YW50IHRvIGRvIHRoaXMgaWYgdGhlIHZhbHVlIGlzIGJlaW5nIHVwZGF0ZWQgdmlhIGEgYHNldFZhbHVlYCBjYWxsIG9yIGEgYHBhdGNoVmFsdWVgIGNhbGwgYXMgdGhpcyBpcyBhbHJlYWR5IGhhbmRsZWQgYnkgQW5ndWxhci5cbiAgICogSW4gdGhlc2UgY2FzZXMgd2UgZG8gbm90IHdhbnQgdG8gZmlyZSBgb25DaGFuZ2VgIGFzIGl0IHdpbGwgY2F1c2UgZXh0cmEgYHZhbHVlQ2hhbmdlYCBhbmQgYHN0YXR1c0NoYW5nZWAgZXZlbnRzIGFuZCB0aGUgc3RhdHVzIG9mIHRoZSBmb3JtIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdGhlc2UgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUodmFsdWU6IGFueSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZnV6enlEYXRlOiBTa3lGdXp6eURhdGU7XG4gICAgbGV0IGZ1enp5TW9tZW50OiBhbnk7XG4gICAgbGV0IGRhdGVWYWx1ZTogRGF0ZTtcbiAgICBsZXQgZm9ybWF0dGVkRGF0ZTogc3RyaW5nO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgZGF0ZVZhbHVlID0gdmFsdWU7XG4gICAgICBmb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlRm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgIGZ1enp5RGF0ZSA9IHRoaXMuZnV6enlEYXRlU2VydmljZS5nZXRGdXp6eURhdGVGcm9tU2VsZWN0ZWREYXRlKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0XG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgZnV6enlEYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmdldEZ1enp5RGF0ZUZyb21TdHJpbmcoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXRcbiAgICAgICk7XG4gICAgICBmb3JtYXR0ZWREYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmZvcm1hdChcbiAgICAgICAgZnV6enlEYXRlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMubG9jYWxlXG4gICAgICApO1xuXG4gICAgICBpZiAoIWZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBmdXp6eU1vbWVudCA9IHRoaXMuZnV6enlEYXRlU2VydmljZS5nZXRNb21lbnRGcm9tRnV6enlEYXRlKGZ1enp5RGF0ZSk7XG5cbiAgICAgIGlmIChmdXp6eU1vbWVudCkge1xuICAgICAgICBkYXRlVmFsdWUgPSBmdXp6eU1vbWVudC50b0RhdGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZnV6enlEYXRlID0gdmFsdWUgYXMgU2t5RnV6enlEYXRlO1xuICAgICAgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZnV6enlEYXRlU2VydmljZS5mb3JtYXQoXG4gICAgICAgIGZ1enp5RGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICB0aGlzLmxvY2FsZVxuICAgICAgKTtcbiAgICAgIGZ1enp5TW9tZW50ID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmdldE1vbWVudEZyb21GdXp6eURhdGUoZnV6enlEYXRlKTtcblxuICAgICAgaWYgKGZ1enp5TW9tZW50KSB7XG4gICAgICAgIGRhdGVWYWx1ZSA9IGZ1enp5TW9tZW50LnRvRGF0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFyZUZ1enp5RGF0ZXNFcXVhbCA9IHRoaXMuZnV6enlEYXRlc0VxdWFsKHRoaXMuX3ZhbHVlLCBmdXp6eURhdGUpO1xuICAgIGNvbnN0IGlzTmV3VmFsdWUgPSBmdXp6eURhdGUgIT09IHRoaXMuX3ZhbHVlIHx8ICFhcmVGdXp6eURhdGVzRXF1YWw7XG5cbiAgICB0aGlzLl92YWx1ZSA9IGZ1enp5RGF0ZSB8fCB2YWx1ZTtcblxuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLl92YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGVwaWNrZXJDb21wb25lbnQuc2VsZWN0ZWREYXRlID0gZGF0ZVZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSB8fCAnJyk7XG4gIH1cbn1cbiJdfQ==
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUUzRCxNQUFNLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUMvRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLDhCQUE4QixHQUFHO0lBQ3JDLE9BQU8sRUFBRSxhQUFh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RUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7NkhBM2hCVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyxtWkFMaEM7UUFDVCxtQ0FBbUM7UUFDbkMsOEJBQThCO0tBQy9COzJGQUVVLGdDQUFnQztrQkFQNUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1QsbUNBQW1DO3dCQUNuQyw4QkFBOEI7cUJBQy9CO2lCQUNGOzswQkF3TEksUUFBUTs0Q0F4S0EsVUFBVTtzQkFEcEIsS0FBSztnQkE0QkssUUFBUTtzQkFEbEIsS0FBSztnQkFrQkssY0FBYztzQkFEeEIsS0FBSztnQkFpQkssT0FBTztzQkFEakIsS0FBSztnQkFrQkssT0FBTztzQkFEakIsS0FBSztnQkFnQkMsdUJBQXVCO3NCQUQ3QixLQUFLO2dCQVVLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBaUJLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBb0lDLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU0zQixXQUFXO3NCQURqQixZQUFZO3VCQUFDLE1BQU07Z0JBZ0JiLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5QXBwTG9jYWxlUHJvdmlkZXIsIFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGVGb3JtYXR0ZXIgfSBmcm9tICcuL2RhdGUtZm9ybWF0dGVyJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUZ1enp5RGF0ZSB9IGZyb20gJy4vZnV6enktZGF0ZSc7XG5pbXBvcnQgeyBTa3lGdXp6eURhdGVTZXJ2aWNlIH0gZnJvbSAnLi9mdXp6eS1kYXRlLnNlcnZpY2UnO1xuXG5jb25zdCBTS1lfRlVaWllfREFURVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreUZ1enp5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5jb25zdCBTS1lfRlVaWllfREFURVBJQ0tFUl9WQUxJREFUT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreUZ1enp5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5RnV6enlEYXRlcGlja2VySW5wdXRdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU0tZX0ZVWlpZX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgU0tZX0ZVWlpZX0RBVEVQSUNLRVJfVkFMSURBVE9SLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGRhdGUgZm9ybWF0IGZvciB0aGUgaW5wdXQuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnRcbiAgICogdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaW4gYFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlYC5cbiAgICogQGRlZmF1bHQgXCJNTS9ERC9ZWVlZXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0ZUZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZGF0ZUZvcm1hdCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZm9ybWF0KFxuICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMubG9jYWxlXG4gICAgICApO1xuICAgICAgdGhpcy5zZXRJbnB1dEVsZW1lbnRWYWx1ZShmb3JtYXR0ZWREYXRlKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRlRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2RhdGVGb3JtYXQgfHxcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5kYXRlRm9ybWF0IHx8XG4gICAgICB0aGlzLnByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgZGF0ZXBpY2tlci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuZGF0ZXBpY2tlckNvbXBvbmVudC5kaXNhYmxlZCA9IHZhbHVlO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcHJldmVudCB1c2VycyBmcm9tIHNwZWNpZnlpbmcgZGF0ZXMgdGhhdCBhcmUgaW4gdGhlIGZ1dHVyZS5cbiAgICogUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZnV0dXJlRGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9mdXR1cmVEaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZnV0dXJlRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1dHVyZURpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbGF0ZXN0IGZ1enp5IGRhdGUgYWxsb3dlZC4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudFxuICAgKiB0byBwcmV2ZW50IGZ1enp5IGRhdGVzIGFmdGVyIGEgc3BlY2lmaWVkIGRhdGUuIFRoaXMgcHJvcGVydHkgYWNjZXB0c1xuICAgKiBhIGBTa3lGdXp6eURhdGVgIHZhbHVlIHRoYXQgaW5jbHVkZXMgbnVtZXJpYyBtb250aCwgZGF5LCBhbmQgeWVhciB2YWx1ZXMuXG4gICAqIEZvciBleGFtcGxlOiBgeyBtb250aDogMSwgZGF5OiAxLCB5ZWFyOiAyMDI3IH1gLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXhEYXRlKHZhbHVlOiBTa3lGdXp6eURhdGUpIHtcbiAgICB0aGlzLl9tYXhEYXRlID0gdmFsdWU7XG4gICAgdGhpcy5kYXRlcGlja2VyQ29tcG9uZW50Lm1heERhdGUgPSB0aGlzLmdldE1heERhdGUoKTtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heERhdGUoKTogU2t5RnV6enlEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGVhcmxpZXN0IGZ1enp5IGRhdGUgYWxsb3dlZC4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudFxuICAgKiB0byBwcmV2ZW50IGZ1enp5IGRhdGVzIGJlZm9yZSBhIHNwZWNpZmllZCBkYXRlLiBUaGlzIHByb3BlcnR5IGFjY2VwdHMgYSBgU2t5RnV6enlEYXRlYCB2YWx1ZVxuICAgKiB0aGF0IGluY2x1ZGVzIG51bWVyaWMgbW9udGgsIGRheSwgYW5kIHllYXIgdmFsdWVzLlxuICAgKiBGb3IgZXhhbXBsZTogYHsgbW9udGg6IDEsIGRheTogMSwgeWVhcjogMjAwNyB9YC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluRGF0ZSh2YWx1ZTogU2t5RnV6enlEYXRlKSB7XG4gICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMuZGF0ZXBpY2tlckNvbXBvbmVudC5taW5EYXRlID0gdGhpcy5nZXRNaW5EYXRlKCk7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBtaW5EYXRlKCk6IFNreUZ1enp5RGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzYWJsZSBkYXRlIHZhbGlkYXRpb24gb24gdGhlIGZ1enp5IGRhdGVwaWNrZXIgaW5wdXQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2t5RGF0ZXBpY2tlck5vVmFsaWRhdGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgaW4gdGhlIGNhbGVuZGFyLCB3aGVyZSBgMGAgc2V0cyB0aGUgc3RhcnRpbmcgZGF5XG4gICAqIHRvIFN1bmRheS4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdFxuICAgKiBpbiBgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2VgLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0aW5nRGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydGluZ0RheSA9IHZhbHVlO1xuICAgIHRoaXMuZGF0ZXBpY2tlckNvbXBvbmVudC5zdGFydGluZ0RheSA9IHRoaXMuc3RhcnRpbmdEYXk7XG5cbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0aW5nRGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0aW5nRGF5IHx8IHRoaXMuY29uZmlnU2VydmljZS5zdGFydGluZ0RheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXF1aXJlIHRoZSB5ZWFyIGluIGZ1enp5IGRhdGVzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB5ZWFyUmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl95ZWFyUmVxdWlyZWQgPSB2YWx1ZTtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHllYXJSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5feWVhclJlcXVpcmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICBwcml2YXRlIGRhdGVGb3JtYXR0ZXIgPSBuZXcgU2t5RGF0ZUZvcm1hdHRlcigpO1xuXG4gIHByaXZhdGUgbG9jYWxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBwcmVmZXJyZWRTaG9ydERhdGVGb3JtYXQ6IHN0cmluZztcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2Z1dHVyZURpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGF0ZUZvcm1hdDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbWF4RGF0ZTogU2t5RnV6enlEYXRlO1xuXG4gIHByaXZhdGUgX21pbkRhdGU6IFNreUZ1enp5RGF0ZTtcblxuICBwcml2YXRlIF9zdGFydGluZ0RheTogbnVtYmVyO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgcHJpdmF0ZSBfeWVhclJlcXVpcmVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBmdXp6eURhdGVTZXJ2aWNlOiBTa3lGdXp6eURhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYWxlUHJvdmlkZXI6IFNreUFwcExvY2FsZVByb3ZpZGVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkYXRlcGlja2VyQ29tcG9uZW50OiBTa3lEYXRlcGlja2VyQ29tcG9uZW50XG4gICkge1xuICAgIHRoaXMubG9jYWxlUHJvdmlkZXJcbiAgICAgIC5nZXRMb2NhbGVJbmZvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgICBTa3lEYXRlRm9ybWF0dGVyLnNldExvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgICAgIHRoaXMucHJlZmVycmVkU2hvcnREYXRlRm9ybWF0ID1cbiAgICAgICAgICBTa3lEYXRlRm9ybWF0dGVyLmdldFByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMueWVhclJlcXVpcmVkKSB7XG4gICAgICBpZiAodGhpcy5kYXRlRm9ybWF0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigneScpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1lvdSBoYXZlIGNvbmZpZ3VyZWQgY29uZmxpY3Rpbmcgc2V0dGluZ3MuIFllYXIgaXMgcmVxdWlyZWQgYW5kIGRhdGVGb3JtYXQgZG9lcyBub3QgaW5jbHVkZSB5ZWFyLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGF0ZXBpY2tlckNvbXBvbmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnWW91IG11c3Qgd3JhcCB0aGUgYHNreUZ1enp5RGF0ZXBpY2tlcklucHV0YCBkaXJlY3RpdmUgd2l0aGluIGEgJyArXG4gICAgICAgICAgJ2A8c2t5LWRhdGVwaWNrZXI+YCBjb21wb25lbnQhJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsICdza3ktZm9ybS1jb250cm9sJyk7XG5cbiAgICBjb25zdCBoYXNBcmlhTGFiZWwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIWhhc0FyaWFMYWJlbCkge1xuICAgICAgdGhpcy5yZXNvdXJjZXNTZXJ2aWNlXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreXV4X2RhdGVfZmllbGRfZGVmYXVsdF9sYWJlbCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2FyaWEtbGFiZWwnLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyQ29tcG9uZW50LmRhdGVDaGFuZ2VcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERhdGUpID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIFRoaXMgaXMgbmVlZGVkIHRvIGFkZHJlc3MgYSBidWcgaW4gQW5ndWxhciA0LlxuICAgIC8vIFdoZW4gYSBjb250cm9sIHZhbHVlIGlzIHNldCBpbnRpYWxseSwgaXRzIHZhbHVlIGlzIG5vdCByZXByZXNlbnRlZCBvbiB0aGUgdmlldy5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNzkyXG4gICAgLy8gT2Ygbm90ZSBpcyB0aGUgcGFyZW50IGNoZWNrIHdoaWNoIGFsbG93cyB1cyB0byBkZXRlcm1pbmUgaWYgdGhlIGZvcm0gaXMgcmVhY3RpdmUuXG4gICAgLy8gV2l0aG91dCB0aGlzIGNoZWNrIHRoZXJlIGlzIGEgY2hhbmdlZCBiZWZvcmUgY2hlY2tlZCBlcnJvclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cbiAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5wYXJlbnQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSwge1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZm9ybWF0KFxuICAgICAgdGhpcy52YWx1ZSxcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCxcbiAgICAgIHRoaXMubG9jYWxlXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2wudmFsaWQpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBwdWJsaWMgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2t5RGF0ZXBpY2tlck5vVmFsaWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlOiBhbnkgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgbGV0IGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlO1xuICAgIGxldCB2YWxpZGF0aW9uRXJyb3I6IFZhbGlkYXRpb25FcnJvcnM7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgZnV6enlEYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmdldEZ1enp5RGF0ZUZyb21TdHJpbmcoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZ1enp5RGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmICghZnV6enlEYXRlKSB7XG4gICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgIGludmFsaWQ6IHZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIXZhbGlkYXRpb25FcnJvciAmJiAhZnV6enlEYXRlLnllYXIgJiYgdGhpcy55ZWFyUmVxdWlyZWQpIHtcbiAgICAgIHZhbGlkYXRpb25FcnJvciA9IHtcbiAgICAgICAgc2t5RnV6enlEYXRlOiB7XG4gICAgICAgICAgeWVhclJlcXVpcmVkOiB2YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCF2YWxpZGF0aW9uRXJyb3IgJiYgZnV6enlEYXRlLnllYXIpIHtcbiAgICAgIGxldCBmdXp6eURhdGVSYW5nZTtcblxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSkge1xuICAgICAgICBmdXp6eURhdGVSYW5nZSA9IHRoaXMuZnV6enlEYXRlU2VydmljZS5nZXRGdXp6eURhdGVSYW5nZShcbiAgICAgICAgICBmdXp6eURhdGUsXG4gICAgICAgICAgdGhpcy5tYXhEYXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFmdXp6eURhdGVSYW5nZS52YWxpZCkge1xuICAgICAgICAgIHZhbGlkYXRpb25FcnJvciA9IHtcbiAgICAgICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgICAgICBtYXhEYXRlOiB2YWx1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRpb25FcnJvciAmJiB0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgZnV6enlEYXRlUmFuZ2UgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgICAgICAgdGhpcy5taW5EYXRlLFxuICAgICAgICAgIGZ1enp5RGF0ZVxuICAgICAgICApO1xuICAgICAgICBpZiAoIWZ1enp5RGF0ZVJhbmdlLnZhbGlkKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbkVycm9yID0ge1xuICAgICAgICAgICAgc2t5RnV6enlEYXRlOiB7XG4gICAgICAgICAgICAgIG1pbkRhdGU6IHZhbHVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsaWRhdGlvbkVycm9yICYmIHRoaXMuZnV0dXJlRGlzYWJsZWQpIHtcbiAgICAgICAgZnV6enlEYXRlUmFuZ2UgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgICAgICAgZnV6enlEYXRlLFxuICAgICAgICAgIHRoaXMuZnV6enlEYXRlU2VydmljZS5nZXRDdXJyZW50RnV6enlEYXRlKClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFmdXp6eURhdGVSYW5nZS52YWxpZCkge1xuICAgICAgICAgIHZhbGlkYXRpb25FcnJvciA9IHtcbiAgICAgICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgICAgICBmdXR1cmVEaXNhYmxlZDogdmFsdWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAvLyBNYXJrIHRoZSBpbnZhbGlkIGNvbnRyb2wgYXMgdG91Y2hlZCBzbyB0aGF0IHRoZSBpbnB1dCdzIGludmFsaWQgQ1NTIHN0eWxlcyBhcHBlYXIuXG4gICAgICAvLyAoVGhpcyBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdGhlIGludmFsaWQgdmFsdWUgaXMgc2V0IGJ5IHRoZSBGb3JtQ29udHJvbCBjb25zdHJ1Y3Rvci4pXG4gICAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0aW9uRXJyb3I7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLmRhdGVwaWNrZXJDb21wb25lbnQuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudCdzIHZhbHVlIGFuZCB1cGRhdGVzIHRoZSBuZ01vZGVsIGFjY29yZGluZ2x5LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byB1cGRhdGUgdGhlIG5nTW9kZWwgdmFsdWUgYmVmb3JlIHRoZSBpbnB1dCBlbGVtZW50IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgcHVibGljIGRldGVjdElucHV0VmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25WYWx1ZUNoYW5nZShuZXdWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dEVsZW1lbnRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXhEYXRlKCk6IERhdGUge1xuICAgIGlmICh0aGlzLm1heERhdGUpIHtcbiAgICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLmZ1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShcbiAgICAgICAgdGhpcy5tYXhEYXRlXG4gICAgICApO1xuICAgICAgaWYgKG1heERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBtYXhEYXRlLnRvRGF0ZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5mdXR1cmVEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UubWF4RGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWluRGF0ZSgpOiBEYXRlIHtcbiAgICBpZiAodGhpcy5taW5EYXRlKSB7XG4gICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmdldE1vbWVudEZyb21GdXp6eURhdGUoXG4gICAgICAgIHRoaXMubWluRGF0ZVxuICAgICAgKTtcbiAgICAgIGlmIChtaW5EYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gbWluRGF0ZS50b0RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5taW5EYXRlO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcHJpdmF0ZSBmdXp6eURhdGVzRXF1YWwoZGF0ZUE6IFNreUZ1enp5RGF0ZSwgZGF0ZUI6IFNreUZ1enp5RGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBkYXRlQSAmJlxuICAgICAgZGF0ZUIgJiZcbiAgICAgICgoIWRhdGVBLmRheSAmJiAhZGF0ZUIuZGF5KSB8fCBkYXRlQS5kYXkgPT09IGRhdGVCLmRheSkgJiZcbiAgICAgICgoIWRhdGVBLm1vbnRoICYmICFkYXRlQi5tb250aCkgfHwgZGF0ZUEubW9udGggPT09IGRhdGVCLm1vbnRoKSAmJlxuICAgICAgKCghZGF0ZUEueWVhciAmJiAhZGF0ZUIueWVhcikgfHwgZGF0ZUEueWVhciA9PT0gZGF0ZUIueWVhcilcbiAgICApO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwcml2YXRlIG9uVmFsaWRhdG9yQ2hhbmdlID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gY29udHJvbCBhbmQgaW5wdXQgZWxlbWVudFxuICAgKiBAcGFyYW0gZW1pdEV2ZW50IERlbm90ZXMgaWYgd2UgZW1pdCBhbiBldmVudCB0byB0aGUgY29uc3VtZXIncyBmb3JtIGNvbnRyb2wuIFdlIGRvIG5vdCB3YW50IHRvIGRvIHRoaXMgaWYgdGhlIHZhbHVlIGlzIGJlaW5nIHVwZGF0ZWQgdmlhIGEgYHNldFZhbHVlYCBjYWxsIG9yIGEgYHBhdGNoVmFsdWVgIGNhbGwgYXMgdGhpcyBpcyBhbHJlYWR5IGhhbmRsZWQgYnkgQW5ndWxhci5cbiAgICogSW4gdGhlc2UgY2FzZXMgd2UgZG8gbm90IHdhbnQgdG8gZmlyZSBgb25DaGFuZ2VgIGFzIGl0IHdpbGwgY2F1c2UgZXh0cmEgYHZhbHVlQ2hhbmdlYCBhbmQgYHN0YXR1c0NoYW5nZWAgZXZlbnRzIGFuZCB0aGUgc3RhdHVzIG9mIHRoZSBmb3JtIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdGhlc2UgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUodmFsdWU6IGFueSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl92YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZnV6enlEYXRlOiBTa3lGdXp6eURhdGU7XG4gICAgbGV0IGZ1enp5TW9tZW50OiBhbnk7XG4gICAgbGV0IGRhdGVWYWx1ZTogRGF0ZTtcbiAgICBsZXQgZm9ybWF0dGVkRGF0ZTogc3RyaW5nO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgZGF0ZVZhbHVlID0gdmFsdWU7XG4gICAgICBmb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlRm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgIGZ1enp5RGF0ZSA9IHRoaXMuZnV6enlEYXRlU2VydmljZS5nZXRGdXp6eURhdGVGcm9tU2VsZWN0ZWREYXRlKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0XG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgZnV6enlEYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmdldEZ1enp5RGF0ZUZyb21TdHJpbmcoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXRcbiAgICAgICk7XG4gICAgICBmb3JtYXR0ZWREYXRlID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmZvcm1hdChcbiAgICAgICAgZnV6enlEYXRlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMubG9jYWxlXG4gICAgICApO1xuXG4gICAgICBpZiAoIWZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBmdXp6eU1vbWVudCA9IHRoaXMuZnV6enlEYXRlU2VydmljZS5nZXRNb21lbnRGcm9tRnV6enlEYXRlKGZ1enp5RGF0ZSk7XG5cbiAgICAgIGlmIChmdXp6eU1vbWVudCkge1xuICAgICAgICBkYXRlVmFsdWUgPSBmdXp6eU1vbWVudC50b0RhdGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZnV6enlEYXRlID0gdmFsdWUgYXMgU2t5RnV6enlEYXRlO1xuICAgICAgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZnV6enlEYXRlU2VydmljZS5mb3JtYXQoXG4gICAgICAgIGZ1enp5RGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICB0aGlzLmxvY2FsZVxuICAgICAgKTtcbiAgICAgIGZ1enp5TW9tZW50ID0gdGhpcy5mdXp6eURhdGVTZXJ2aWNlLmdldE1vbWVudEZyb21GdXp6eURhdGUoZnV6enlEYXRlKTtcblxuICAgICAgaWYgKGZ1enp5TW9tZW50KSB7XG4gICAgICAgIGRhdGVWYWx1ZSA9IGZ1enp5TW9tZW50LnRvRGF0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFyZUZ1enp5RGF0ZXNFcXVhbCA9IHRoaXMuZnV6enlEYXRlc0VxdWFsKHRoaXMuX3ZhbHVlLCBmdXp6eURhdGUpO1xuICAgIGNvbnN0IGlzTmV3VmFsdWUgPSBmdXp6eURhdGUgIT09IHRoaXMuX3ZhbHVlIHx8ICFhcmVGdXp6eURhdGVzRXF1YWw7XG5cbiAgICB0aGlzLl92YWx1ZSA9IGZ1enp5RGF0ZSB8fCB2YWx1ZTtcblxuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLl92YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGVwaWNrZXJDb21wb25lbnQuc2VsZWN0ZWREYXRlID0gZGF0ZVZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSB8fCAnJyk7XG4gIH1cbn1cbiJdfQ==
@@ -2320,17 +2320,6 @@ class SkyFuzzyDatepickerInputDirective {
2320
2320
  get minDate() {
2321
2321
  return this._minDate;
2322
2322
  }
2323
- /**
2324
- * Creates the fuzzy datepicker input and calendar to let users specify dates that are
2325
- * not complete. For example, if users know the year but not the month or day, they can
2326
- * enter just the year. Place this directive on an `input` element, and wrap the `input`
2327
- * in a `sky-datepicker` component. The value that users select is driven
2328
- * through the `ngModel` attribute specified on the `input` element.
2329
- * @required
2330
- */
2331
- set skyFuzzyDatepickerInput(value) {
2332
- // TODO: Remove this property in a future version of SKY UX.
2333
- }
2334
2323
  /**
2335
2324
  * Specifies the starting day of the week in the calendar, where `0` sets the starting day
2336
2325
  * to Sunday. Place this attribute on the `input` element to override the default
@@ -2611,7 +2600,7 @@ class SkyFuzzyDatepickerInputDirective {
2611
2600
  }
2612
2601
  }
2613
2602
  SkyFuzzyDatepickerInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: SkyFuzzyDateService }, { token: i3.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i3.SkyLibResourcesService }, { token: SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2614
- SkyFuzzyDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: SkyFuzzyDatepickerInputDirective, selector: "[skyFuzzyDatepickerInput]", inputs: { dateFormat: "dateFormat", disabled: "disabled", futureDisabled: "futureDisabled", maxDate: "maxDate", minDate: "minDate", skyDatepickerNoValidate: "skyDatepickerNoValidate", skyFuzzyDatepickerInput: "skyFuzzyDatepickerInput", startingDay: "startingDay", yearRequired: "yearRequired" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "input": "onInput()" } }, providers: [
2603
+ SkyFuzzyDatepickerInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: SkyFuzzyDatepickerInputDirective, selector: "[skyFuzzyDatepickerInput]", inputs: { dateFormat: "dateFormat", disabled: "disabled", futureDisabled: "futureDisabled", maxDate: "maxDate", minDate: "minDate", skyDatepickerNoValidate: "skyDatepickerNoValidate", startingDay: "startingDay", yearRequired: "yearRequired" }, host: { listeners: { "change": "onInputChange($event)", "blur": "onInputBlur()", "input": "onInput()" } }, providers: [
2615
2604
  SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,
2616
2605
  SKY_FUZZY_DATEPICKER_VALIDATOR,
2617
2606
  ], ngImport: i0 });
@@ -2640,8 +2629,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
2640
2629
  type: Input
2641
2630
  }], skyDatepickerNoValidate: [{
2642
2631
  type: Input
2643
- }], skyFuzzyDatepickerInput: [{
2644
- type: Input
2645
2632
  }], startingDay: [{
2646
2633
  type: Input
2647
2634
  }], yearRequired: [{