@recursyve/nice-ui-kit.v2 13.2.0-beta.97 → 13.2.0-beta.99

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.
Files changed (38) hide show
  1. package/esm2020/lib/components/alert/alert.component.mjs +22 -10
  2. package/esm2020/lib/components/alert/alert.types.mjs +1 -1
  3. package/esm2020/lib/components/async-typeahead/async-typeahead.component.mjs +9 -5
  4. package/esm2020/lib/components/base-form/base-form.component.mjs +14 -3
  5. package/esm2020/lib/components/toast/toast.component.mjs +1 -1
  6. package/esm2020/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.mjs +39 -0
  7. package/esm2020/lib/directives/chip-async-typeahead/index.mjs +2 -0
  8. package/esm2020/lib/directives/chip-async-typeahead/public-api.mjs +2 -0
  9. package/esm2020/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.mjs +14 -0
  10. package/esm2020/lib/directives/chip-list/chip-list-items/chip-list-items.component.mjs +32 -0
  11. package/esm2020/lib/directives/chip-list/chip-list.directive.mjs +100 -0
  12. package/esm2020/lib/directives/chip-list/chip-list.module.mjs +21 -0
  13. package/esm2020/lib/directives/chip-list/index.mjs +2 -0
  14. package/esm2020/lib/directives/chip-list/public-api.mjs +5 -0
  15. package/esm2020/lib/directives/public-api.mjs +3 -2
  16. package/fesm2015/recursyve-nice-ui-kit.v2.mjs +210 -16
  17. package/fesm2015/recursyve-nice-ui-kit.v2.mjs.map +1 -1
  18. package/fesm2020/recursyve-nice-ui-kit.v2.mjs +217 -16
  19. package/fesm2020/recursyve-nice-ui-kit.v2.mjs.map +1 -1
  20. package/lib/components/alert/alert.component.d.ts +3 -2
  21. package/lib/components/alert/alert.types.d.ts +1 -0
  22. package/lib/components/async-typeahead/async-typeahead.component.d.ts +3 -2
  23. package/lib/components/base-form/base-form.component.d.ts +1 -0
  24. package/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.d.ts +14 -0
  25. package/lib/directives/chip-async-typeahead/index.d.ts +1 -0
  26. package/lib/directives/chip-async-typeahead/public-api.d.ts +1 -0
  27. package/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.d.ts +8 -0
  28. package/lib/directives/chip-list/chip-list-items/chip-list-items.component.d.ts +14 -0
  29. package/lib/directives/chip-list/chip-list.directive.d.ts +27 -0
  30. package/lib/directives/chip-list/chip-list.module.d.ts +11 -0
  31. package/lib/directives/chip-list/index.d.ts +1 -0
  32. package/lib/directives/chip-list/public-api.d.ts +4 -0
  33. package/lib/directives/public-api.d.ts +2 -1
  34. package/package.json +1 -1
  35. package/src/lib/components/chip-list/chip-list.theme.scss +14 -0
  36. package/src/lib/components/chip-list/components/item-list/item-list.theme.scss +37 -0
  37. package/src/lib/directives/chip-list/chip-list-items/chip-list-items.theme.scss +35 -0
  38. package/src/lib/nice.theme.scss +5 -0
@@ -36,14 +36,7 @@ export class NiceAlertComponent {
36
36
  * Host binding for component classes
37
37
  */
38
38
  get classList() {
39
- return {
40
- "nice-alert-appearance-border": this.appearance === "border",
41
- "nice-alert-appearance-fill": this.appearance === "fill",
42
- "nice-alert-appearance-outline": this.appearance === "outline",
43
- "nice-alert-appearance-soft": this.appearance === "soft",
44
- "nice-alert-dismissed": this.dismissed,
45
- "nice-alert-dismissible": this.dismissible,
46
- "nice-alert-show-icon": this.showIcon,
39
+ let types = {
47
40
  "nice-alert-type-primary": this.type === "primary",
48
41
  "nice-alert-type-accent": this.type === "accent",
49
42
  "nice-alert-type-warn": this.type === "warn",
@@ -53,6 +46,23 @@ export class NiceAlertComponent {
53
46
  "nice-alert-type-warning": this.type === "warning",
54
47
  "nice-alert-type-error": this.type === "error"
55
48
  };
49
+ if (this.color) {
50
+ types = {
51
+ "nice-alert-type-primary": this.color === "primary",
52
+ "nice-alert-type-accent": this.color === "accent",
53
+ "nice-alert-type-warn": this.color === "warn"
54
+ };
55
+ }
56
+ return {
57
+ "nice-alert-appearance-border": this.appearance === "border",
58
+ "nice-alert-appearance-fill": this.appearance === "fill",
59
+ "nice-alert-appearance-outline": this.appearance === "outline",
60
+ "nice-alert-appearance-soft": this.appearance === "soft",
61
+ "nice-alert-dismissed": this.dismissed,
62
+ "nice-alert-dismissible": this.dismissible,
63
+ "nice-alert-show-icon": this.showIcon,
64
+ ...types
65
+ };
56
66
  }
57
67
  // -----------------------------------------------------------------------------------------------------
58
68
  // @ Lifecycle hooks
@@ -161,7 +171,7 @@ export class NiceAlertComponent {
161
171
  }
162
172
  }
163
173
  NiceAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAlertComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NiceAlertService }, { token: i2.NiceUtilsService }], target: i0.ɵɵFactoryTarget.Component });
164
- NiceAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceAlertComponent, selector: "nice-alert", inputs: { appearance: "appearance", dismissed: "dismissed", dismissible: "dismissible", disableAnimation: "disableAnimation", name: "name", showIcon: "showIcon", type: "type" }, outputs: { dismissedChanged: "dismissedChanged" }, host: { properties: { "class": "this.classList" } }, exportAs: ["niceAlert"], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"nice-alert-container\"\n *ngIf=\"!dismissible || dismissible && !dismissed\"\n [@fadeIn]=\"!dismissed && !disableAnimation\"\n [@fadeOut]=\"!dismissed && !disableAnimation\">\n\n <!-- Border -->\n <div\n class=\"nice-alert-border\"\n *ngIf=\"appearance === 'border'\"></div>\n\n <!-- Icon -->\n <div\n class=\"nice-alert-icon\"\n *ngIf=\"showIcon\">\n\n <!-- Custom icon -->\n <div class=\"nice-alert-custom-icon\">\n <ng-content select=\"[niceAlertIcon]\"></ng-content>\n </div>\n\n <!-- Default icons -->\n <div class=\"nice-alert-default-icon\">\n\n <mat-icon\n *ngIf=\"type === 'primary'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'accent'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warn'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'basic'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'info'\"\n [svgIcon]=\"'heroicons_solid:information-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'success'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warning'\"\n [svgIcon]=\"'heroicons_solid:exclamation'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'error'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n </div>\n\n </div>\n\n <!-- Content -->\n <div class=\"nice-alert-content\">\n\n <div class=\"nice-alert-title\">\n <ng-content select=\"[niceAlertTitle]\"></ng-content>\n </div>\n\n <div class=\"nice-alert-message\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n <!-- Dismiss button -->\n <button\n class=\"nice-alert-dismiss-button\"\n mat-icon-button\n (click)=\"dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_solid:x'\"></mat-icon>\n </button>\n\n</div>\n", components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: niceAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
174
+ NiceAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceAlertComponent, selector: "nice-alert", inputs: { appearance: "appearance", dismissed: "dismissed", dismissible: "dismissible", disableAnimation: "disableAnimation", name: "name", showIcon: "showIcon", type: "type", color: "color" }, outputs: { dismissedChanged: "dismissedChanged" }, host: { properties: { "class": "this.classList" } }, exportAs: ["niceAlert"], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"nice-alert-container\"\n *ngIf=\"!dismissible || dismissible && !dismissed\"\n [@fadeIn]=\"!dismissed && !disableAnimation\"\n [@fadeOut]=\"!dismissed && !disableAnimation\">\n\n <!-- Border -->\n <div\n class=\"nice-alert-border\"\n *ngIf=\"appearance === 'border'\"></div>\n\n <!-- Icon -->\n <div\n class=\"nice-alert-icon\"\n *ngIf=\"showIcon\">\n\n <!-- Custom icon -->\n <div class=\"nice-alert-custom-icon\">\n <ng-content select=\"[niceAlertIcon]\"></ng-content>\n </div>\n\n <!-- Default icons -->\n <div class=\"nice-alert-default-icon\">\n\n <mat-icon\n *ngIf=\"type === 'primary'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'accent'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warn'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'basic'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'info'\"\n [svgIcon]=\"'heroicons_solid:information-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'success'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warning'\"\n [svgIcon]=\"'heroicons_solid:exclamation'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'error'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n </div>\n\n </div>\n\n <!-- Content -->\n <div class=\"nice-alert-content\">\n\n <div class=\"nice-alert-title\">\n <ng-content select=\"[niceAlertTitle]\"></ng-content>\n </div>\n\n <div class=\"nice-alert-message\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n <!-- Dismiss button -->\n <button\n class=\"nice-alert-dismiss-button\"\n mat-icon-button\n (click)=\"dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_solid:x'\"></mat-icon>\n </button>\n\n</div>\n", components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: niceAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
165
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAlertComponent, decorators: [{
166
176
  type: Component,
167
177
  args: [{ selector: "nice-alert", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: niceAnimations, exportAs: "niceAlert", template: "<div\n class=\"nice-alert-container\"\n *ngIf=\"!dismissible || dismissible && !dismissed\"\n [@fadeIn]=\"!dismissed && !disableAnimation\"\n [@fadeOut]=\"!dismissed && !disableAnimation\">\n\n <!-- Border -->\n <div\n class=\"nice-alert-border\"\n *ngIf=\"appearance === 'border'\"></div>\n\n <!-- Icon -->\n <div\n class=\"nice-alert-icon\"\n *ngIf=\"showIcon\">\n\n <!-- Custom icon -->\n <div class=\"nice-alert-custom-icon\">\n <ng-content select=\"[niceAlertIcon]\"></ng-content>\n </div>\n\n <!-- Default icons -->\n <div class=\"nice-alert-default-icon\">\n\n <mat-icon\n *ngIf=\"type === 'primary'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'accent'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warn'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'basic'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'info'\"\n [svgIcon]=\"'heroicons_solid:information-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'success'\"\n [svgIcon]=\"'heroicons_solid:check-circle'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'warning'\"\n [svgIcon]=\"'heroicons_solid:exclamation'\"></mat-icon>\n\n <mat-icon\n *ngIf=\"type === 'error'\"\n [svgIcon]=\"'heroicons_solid:x-circle'\"></mat-icon>\n\n </div>\n\n </div>\n\n <!-- Content -->\n <div class=\"nice-alert-content\">\n\n <div class=\"nice-alert-title\">\n <ng-content select=\"[niceAlertTitle]\"></ng-content>\n </div>\n\n <div class=\"nice-alert-message\">\n <ng-content></ng-content>\n </div>\n\n </div>\n\n <!-- Dismiss button -->\n <button\n class=\"nice-alert-dismiss-button\"\n mat-icon-button\n (click)=\"dismiss()\">\n <mat-icon [svgIcon]=\"'heroicons_solid:x'\"></mat-icon>\n </button>\n\n</div>\n" }]
@@ -179,10 +189,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
179
189
  type: Input
180
190
  }], type: [{
181
191
  type: Input
192
+ }], color: [{
193
+ type: Input
182
194
  }], dismissedChanged: [{
183
195
  type: Output
184
196
  }], classList: [{
185
197
  type: HostBinding,
186
198
  args: ["class"]
187
199
  }] } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQVduRCxNQUFNLE9BQU8sa0JBQWtCO0lBb0MzQjs7T0FFRztJQUNILFlBQ1ksa0JBQXFDLEVBQ3JDLGlCQUFtQyxFQUNuQyxpQkFBbUM7UUFGbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUEvQnhDLGVBQVUsR0FBd0IsTUFBTSxDQUFDO1FBR3pDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFH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Y0FBYyxDQUFDLFNBQWtCO1FBQ3JDLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFM0IseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNDLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7K0dBM01RLGtCQUFrQjttR0FBbEIsa0JBQWtCLDBYQzlCL0IsaTFFQWtGQSxzaUJEdkRnQixjQUFjOzJGQUdqQixrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0ksWUFBWSxpQkFFUCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLGNBQWMsWUFDaEIsV0FBVztzS0FhZCxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJVSxnQkFBZ0I7c0JBRC9CLE1BQU07Z0JBc0JJLFNBQVM7c0JBRG5CLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2VyY2lvblwiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBuaWNlQW5pbWF0aW9ucyB9IGZyb20gXCIuLi8uLi9hbmltYXRpb25zXCI7XG5pbXBvcnQgeyBOaWNlVXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3Byb3ZpZGVycy91dGlsc1wiO1xuaW1wb3J0IHsgTmljZUFsZXJ0U2VydmljZSB9IGZyb20gXCIuL2FsZXJ0LnNlcnZpY2VcIjtcbmltcG9ydCB7IE5pY2VBbGVydFR5cGUsIE5pY2VBbGVydEFwcGVhcmFuY2UgfSBmcm9tIFwiLi9hbGVydC50eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFsZXJ0XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9hbGVydC5jb21wb25lbnQuaHRtbFwiLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogbmljZUFuaW1hdGlvbnMsXG4gICAgZXhwb3J0QXM6IFwibmljZUFsZXJ0XCJcbn0pXG5leHBvcnQgY2xhc3MgTmljZUFsZXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc21pc3NpYmxlOiBCb29sZWFuSW5wdXQ7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc21pc3NlZDogQm9vbGVhbklucHV0O1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgcHVibGljIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlQW5pbWF0aW9uOiBCb29sZWFuSW5wdXQ7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Nob3dJY29uOiBCb29sZWFuSW5wdXQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcHBlYXJhbmNlOiBOaWNlQWxlcnRBcHBlYXJhbmNlID0gXCJzb2Z0XCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNtaXNzZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc21pc3NpYmxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlQW5pbWF0aW9uID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSB0aGlzLl9uaWNlVXRpbHNTZXJ2aWNlLnJhbmRvbUlkKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93SWNvbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0eXBlOiBOaWNlQWxlcnRUeXBlID0gXCJwcmltYXJ5XCI7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzbWlzc2VkQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9uaWNlQWxlcnRTZXJ2aWNlOiBOaWNlQWxlcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uaWNlVXRpbHNTZXJ2aWNlOiBOaWNlVXRpbHNTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIEFjY2Vzc29yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBIb3N0IGJpbmRpbmcgZm9yIGNvbXBvbmVudCBjbGFzc2VzXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIilcbiAgICBwdWJsaWMgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LWFwcGVhcmFuY2UtYm9yZGVyXCI6IHRoaXMuYXBwZWFyYW5jZSA9PT0gXCJib3JkZXJcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLWZpbGxcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcImZpbGxcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLW91dGxpbmVcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcIm91dGxpbmVcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLXNvZnRcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcInNvZnRcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1kaXNtaXNzZWRcIjogdGhpcy5kaXNtaXNzZWQsXG4gICAgICAgICAgICBcIm5pY2UtYWxlcnQtZGlzbWlzc2libGVcIjogdGhpcy5kaXNtaXNzaWJsZSxcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1zaG93LWljb25cIjogdGhpcy5zaG93SWNvbixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXByaW1hcnlcIjogdGhpcy50eXBlID09PSBcInByaW1hcnlcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWFjY2VudFwiOiB0aGlzLnR5cGUgPT09IFwiYWNjZW50XCIsXG4gICAgICAgICAgICBcIm5pY2UtYWxlcnQtdHlwZS13YXJuXCI6IHRoaXMudHlwZSA9PT0gXCJ3YXJuXCIsXG4gICAgICAgICAgICBcIm5pY2UtYWxlcnQtdHlwZS1iYXNpY1wiOiB0aGlzLnR5cGUgPT09IFwiYmFzaWNcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWluZm9cIjogdGhpcy50eXBlID09PSBcImluZm9cIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXN1Y2Nlc3NcIjogdGhpcy50eXBlID09PSBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXdhcm5pbmdcIjogdGhpcy50eXBlID09PSBcIndhcm5pbmdcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWVycm9yXCI6IHRoaXMudHlwZSA9PT0gXCJlcnJvclwiXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIExpZmVjeWNsZSBob29rc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBPbiBjaGFuZ2VzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIERpc21pc3NlZFxuICAgICAgICBpZiAoXCJkaXNtaXNzZWRcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxuICAgICAgICAgICAgdGhpcy5kaXNtaXNzZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5kaXNtaXNzZWQuY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgICAgLy8gRGlzbWlzcy9zaG93IHRoZSBhbGVydFxuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRGlzbWlzcyh0aGlzLmRpc21pc3NlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNtaXNzaWJsZVxuICAgICAgICBpZiAoXCJkaXNtaXNzaWJsZVwiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXG4gICAgICAgICAgICB0aGlzLmRpc21pc3NpYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZGlzbWlzc2libGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGUgYW5pbWF0aW9uXG4gICAgICAgIGlmIChcImRpc2FibGVBbmltYXRpb25cIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQW5pbWF0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZGlzYWJsZUFuaW1hdGlvbi5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hvdyBpY29uXG4gICAgICAgIGlmIChcInNob3dJY29uXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgLy8gQ29lcmNlIHRoZSB2YWx1ZSB0byBhIGJvb2xlYW5cbiAgICAgICAgICAgIHRoaXMuc2hvd0ljb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5zaG93SWNvbi5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gaW5pdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBkaXNtaXNzIGNhbGxzXG4gICAgICAgIHRoaXMuX25pY2VBbGVydFNlcnZpY2Uub25EaXNtaXNzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG5hbWUpID0+IHRoaXMubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBEaXNtaXNzIHRoZSBhbGVydFxuICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBzaG93IGNhbGxzXG4gICAgICAgIHRoaXMuX25pY2VBbGVydFNlcnZpY2Uub25TaG93XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG5hbWUpID0+IHRoaXMubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBTaG93IHRoZSBhbGVydFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gZGVzdHJveVxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIFB1YmxpYyBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3MgdGhlIGFsZXJ0XG4gICAgICovXG4gICAgcHVibGljIGRpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYWxlcnQgaXMgYWxyZWFkeSBkaXNtaXNzZWRcbiAgICAgICAgaWYgKHRoaXMuZGlzbWlzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNtaXNzIHRoZSBhbGVydFxuICAgICAgICB0aGlzLl90b2dnbGVEaXNtaXNzKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIGRpc21pc3NlZCBhbGVydFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIGFsZXJ0IGlzIGFscmVhZHkgc2hvd2luZ1xuICAgICAgICBpZiAoIXRoaXMuZGlzbWlzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaG93IHRoZSBhbGVydFxuICAgICAgICB0aGlzLl90b2dnbGVEaXNtaXNzKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEAgUHJpdmF0ZSBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3Mvc2hvdyB0aGUgYWxlcnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXNtaXNzZWRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3RvZ2dsZURpc21pc3MoZGlzbWlzc2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYWxlcnQgaXMgbm90IGRpc21pc3NpYmxlXG4gICAgICAgIGlmICghdGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBkaXNtaXNzZWRcbiAgICAgICAgdGhpcy5kaXNtaXNzZWQgPSBkaXNtaXNzZWQ7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgb2JzZXJ2YWJsZVxuICAgICAgICB0aGlzLmRpc21pc3NlZENoYW5nZWQubmV4dCh0aGlzLmRpc21pc3NlZCk7XG5cbiAgICAgICAgLy8gTm90aWZ5IHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwibmljZS1hbGVydC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiIWRpc21pc3NpYmxlIHx8IGRpc21pc3NpYmxlICYmICFkaXNtaXNzZWRcIlxuICAgIFtAZmFkZUluXT1cIiFkaXNtaXNzZWQgJiYgIWRpc2FibGVBbmltYXRpb25cIlxuICAgIFtAZmFkZU91dF09XCIhZGlzbWlzc2VkICYmICFkaXNhYmxlQW5pbWF0aW9uXCI+XG5cbiAgICA8IS0tIEJvcmRlciAtLT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibmljZS1hbGVydC1ib3JkZXJcIlxuICAgICAgICAqbmdJZj1cImFwcGVhcmFuY2UgPT09ICdib3JkZXInXCI+PC9kaXY+XG5cbiAgICA8IS0tIEljb24gLS0+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm5pY2UtYWxlcnQtaWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0ljb25cIj5cblxuICAgICAgICA8IS0tIEN1c3RvbSBpY29uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS1hbGVydC1jdXN0b20taWNvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25pY2VBbGVydEljb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIERlZmF1bHQgaWNvbnMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLWFsZXJ0LWRlZmF1bHQtaWNvblwiPlxuXG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGVjay1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGVjay1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnd2FybidcIlxuICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6eC1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnYmFzaWMnXCJcbiAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmNoZWNrLWNpcmNsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDppbmZvcm1hdGlvbi1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6Y2hlY2stY2lyY2xlJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmV4Y2xhbWF0aW9uJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDp4LWNpcmNsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm5pY2UtYWxlcnQtY29udGVudFwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLWFsZXJ0LXRpdGxlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmljZUFsZXJ0VGl0bGVdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS1hbGVydC1tZXNzYWdlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERpc21pc3MgYnV0dG9uIC0tPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJuaWNlLWFsZXJ0LWRpc21pc3MtYnV0dG9uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6eCdcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG48L2Rpdj5cbiJdfQ==
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBV25ELE1BQU0sT0FBTyxrQkFBa0I7SUF1QzNCOztPQUVHO0lBQ0gsWUFDWSxrQkFBcUMsRUFDckMsaUJBQW1DLEVBQ25DLGlCQUFtQztRQUZuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQWxDeEMsZUFBVSxHQUF3QixNQUFNLENBQUM7UUFHekMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUds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V0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IG5pY2VBbmltYXRpb25zIH0gZnJvbSBcIi4uLy4uL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IE5pY2VVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vcHJvdmlkZXJzL3V0aWxzXCI7XG5pbXBvcnQgeyBOaWNlQWxlcnRTZXJ2aWNlIH0gZnJvbSBcIi4vYWxlcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgTmljZUFsZXJ0VHlwZSwgTmljZUFsZXJ0QXBwZWFyYW5jZSwgTmljZUFsZXJ0Q29sb3IgfSBmcm9tIFwiLi9hbGVydC50eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFsZXJ0XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9hbGVydC50ZW1wbGF0ZS5odG1sXCIsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBhbmltYXRpb25zOiBuaWNlQW5pbWF0aW9ucyxcbiAgICBleHBvcnRBczogXCJuaWNlQWxlcnRcIlxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzbWlzc2libGU6IEJvb2xlYW5JbnB1dDtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzbWlzc2VkOiBCb29sZWFuSW5wdXQ7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVBbmltYXRpb246IEJvb2xlYW5JbnB1dDtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIHB1YmxpYyBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2hvd0ljb246IEJvb2xlYW5JbnB1dDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFwcGVhcmFuY2U6IE5pY2VBbGVydEFwcGVhcmFuY2UgPSBcInNvZnRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc21pc3NlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzbWlzc2libGUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9IHRoaXMuX25pY2VVdGlsc1NlcnZpY2UucmFuZG9tSWQoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dJY29uID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR5cGU6IE5pY2VBbGVydFR5cGUgPSBcInByaW1hcnlcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbG9yPzogTmljZUFsZXJ0Q29sb3I7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzbWlzc2VkQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9uaWNlQWxlcnRTZXJ2aWNlOiBOaWNlQWxlcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uaWNlVXRpbHNTZXJ2aWNlOiBOaWNlVXRpbHNTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIEFjY2Vzc29yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBIb3N0IGJpbmRpbmcgZm9yIGNvbXBvbmVudCBjbGFzc2VzXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIilcbiAgICBwdWJsaWMgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xuICAgICAgICBsZXQgdHlwZXM6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtcHJpbWFyeVwiOiB0aGlzLnR5cGUgPT09IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtYWNjZW50XCI6IHRoaXMudHlwZSA9PT0gXCJhY2NlbnRcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXdhcm5cIjogdGhpcy50eXBlID09PSBcIndhcm5cIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWJhc2ljXCI6IHRoaXMudHlwZSA9PT0gXCJiYXNpY1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtaW5mb1wiOiB0aGlzLnR5cGUgPT09IFwiaW5mb1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtc3VjY2Vzc1wiOiB0aGlzLnR5cGUgPT09IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtd2FybmluZ1wiOiB0aGlzLnR5cGUgPT09IFwid2FybmluZ1wiLFxuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LXR5cGUtZXJyb3JcIjogdGhpcy50eXBlID09PSBcImVycm9yXCJcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgICAgICB0eXBlcyA9IHtcbiAgICAgICAgICAgICAgICBcIm5pY2UtYWxlcnQtdHlwZS1wcmltYXJ5XCI6IHRoaXMuY29sb3IgPT09IFwicHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLWFjY2VudFwiOiB0aGlzLmNvbG9yID09PSBcImFjY2VudFwiLFxuICAgICAgICAgICAgICAgIFwibmljZS1hbGVydC10eXBlLXdhcm5cIjogdGhpcy5jb2xvciA9PT0gXCJ3YXJuXCJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgXCJuaWNlLWFsZXJ0LWFwcGVhcmFuY2UtYm9yZGVyXCI6IHRoaXMuYXBwZWFyYW5jZSA9PT0gXCJib3JkZXJcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLWZpbGxcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcImZpbGxcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLW91dGxpbmVcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcIm91dGxpbmVcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1hcHBlYXJhbmNlLXNvZnRcIjogdGhpcy5hcHBlYXJhbmNlID09PSBcInNvZnRcIixcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1kaXNtaXNzZWRcIjogdGhpcy5kaXNtaXNzZWQsXG4gICAgICAgICAgICBcIm5pY2UtYWxlcnQtZGlzbWlzc2libGVcIjogdGhpcy5kaXNtaXNzaWJsZSxcbiAgICAgICAgICAgIFwibmljZS1hbGVydC1zaG93LWljb25cIjogdGhpcy5zaG93SWNvbixcbiAgICAgICAgICAgIC4uLnR5cGVzXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIExpZmVjeWNsZSBob29rc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBPbiBjaGFuZ2VzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIERpc21pc3NlZFxuICAgICAgICBpZiAoXCJkaXNtaXNzZWRcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxuICAgICAgICAgICAgdGhpcy5kaXNtaXNzZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5kaXNtaXNzZWQuY3VycmVudFZhbHVlKTtcblxuICAgICAgICAgICAgLy8gRGlzbWlzcy9zaG93IHRoZSBhbGVydFxuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlRGlzbWlzcyh0aGlzLmRpc21pc3NlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNtaXNzaWJsZVxuICAgICAgICBpZiAoXCJkaXNtaXNzaWJsZVwiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXG4gICAgICAgICAgICB0aGlzLmRpc21pc3NpYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZGlzbWlzc2libGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc2FibGUgYW5pbWF0aW9uXG4gICAgICAgIGlmIChcImRpc2FibGVBbmltYXRpb25cIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQW5pbWF0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZGlzYWJsZUFuaW1hdGlvbi5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hvdyBpY29uXG4gICAgICAgIGlmIChcInNob3dJY29uXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgLy8gQ29lcmNlIHRoZSB2YWx1ZSB0byBhIGJvb2xlYW5cbiAgICAgICAgICAgIHRoaXMuc2hvd0ljb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5zaG93SWNvbi5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gaW5pdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBkaXNtaXNzIGNhbGxzXG4gICAgICAgIHRoaXMuX25pY2VBbGVydFNlcnZpY2Uub25EaXNtaXNzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG5hbWUpID0+IHRoaXMubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBEaXNtaXNzIHRoZSBhbGVydFxuICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBzaG93IGNhbGxzXG4gICAgICAgIHRoaXMuX25pY2VBbGVydFNlcnZpY2Uub25TaG93XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG5hbWUpID0+IHRoaXMubmFtZSA9PT0gbmFtZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBTaG93IHRoZSBhbGVydFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gZGVzdHJveVxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIFB1YmxpYyBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3MgdGhlIGFsZXJ0XG4gICAgICovXG4gICAgcHVibGljIGRpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYWxlcnQgaXMgYWxyZWFkeSBkaXNtaXNzZWRcbiAgICAgICAgaWYgKHRoaXMuZGlzbWlzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNtaXNzIHRoZSBhbGVydFxuICAgICAgICB0aGlzLl90b2dnbGVEaXNtaXNzKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIGRpc21pc3NlZCBhbGVydFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KCk6IHZvaWQge1xuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIGFsZXJ0IGlzIGFscmVhZHkgc2hvd2luZ1xuICAgICAgICBpZiAoIXRoaXMuZGlzbWlzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaG93IHRoZSBhbGVydFxuICAgICAgICB0aGlzLl90b2dnbGVEaXNtaXNzKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEAgUHJpdmF0ZSBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3Mvc2hvdyB0aGUgYWxlcnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXNtaXNzZWRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3RvZ2dsZURpc21pc3MoZGlzbWlzc2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYWxlcnQgaXMgbm90IGRpc21pc3NpYmxlXG4gICAgICAgIGlmICghdGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBkaXNtaXNzZWRcbiAgICAgICAgdGhpcy5kaXNtaXNzZWQgPSBkaXNtaXNzZWQ7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgb2JzZXJ2YWJsZVxuICAgICAgICB0aGlzLmRpc21pc3NlZENoYW5nZWQubmV4dCh0aGlzLmRpc21pc3NlZCk7XG5cbiAgICAgICAgLy8gTm90aWZ5IHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwibmljZS1hbGVydC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiIWRpc21pc3NpYmxlIHx8IGRpc21pc3NpYmxlICYmICFkaXNtaXNzZWRcIlxuICAgIFtAZmFkZUluXT1cIiFkaXNtaXNzZWQgJiYgIWRpc2FibGVBbmltYXRpb25cIlxuICAgIFtAZmFkZU91dF09XCIhZGlzbWlzc2VkICYmICFkaXNhYmxlQW5pbWF0aW9uXCI+XG5cbiAgICA8IS0tIEJvcmRlciAtLT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibmljZS1hbGVydC1ib3JkZXJcIlxuICAgICAgICAqbmdJZj1cImFwcGVhcmFuY2UgPT09ICdib3JkZXInXCI+PC9kaXY+XG5cbiAgICA8IS0tIEljb24gLS0+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm5pY2UtYWxlcnQtaWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0ljb25cIj5cblxuICAgICAgICA8IS0tIEN1c3RvbSBpY29uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS1hbGVydC1jdXN0b20taWNvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25pY2VBbGVydEljb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIERlZmF1bHQgaWNvbnMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLWFsZXJ0LWRlZmF1bHQtaWNvblwiPlxuXG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGVjay1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGVjay1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnd2FybidcIlxuICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6eC1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnYmFzaWMnXCJcbiAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmNoZWNrLWNpcmNsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDppbmZvcm1hdGlvbi1jaXJjbGUnXCI+PC9tYXQtaWNvbj5cblxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6Y2hlY2stY2lyY2xlJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmV4Y2xhbWF0aW9uJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDp4LWNpcmNsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm5pY2UtYWxlcnQtY29udGVudFwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLWFsZXJ0LXRpdGxlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbmljZUFsZXJ0VGl0bGVdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibmljZS1hbGVydC1tZXNzYWdlXCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERpc21pc3MgYnV0dG9uIC0tPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJuaWNlLWFsZXJ0LWRpc21pc3MtYnV0dG9uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6eCdcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE5pY2VBbGVydEFwcGVhcmFuY2UgPVxuICAgIHwgXCJib3JkZXJcIlxuICAgIHwgXCJmaWxsXCJcbiAgICB8IFwib3V0bGluZVwiXG4gICAgfCBcInNvZnRcIjtcblxuZXhwb3J0IHR5cGUgTmljZUFsZXJ0VHlwZSA9XG4gICAgfCBcInByaW1hcnlcIlxuICAgIHwgXCJhY2NlbnRcIlxuICAgIHwgXCJ3YXJuXCJcbiAgICB8IFwiYmFzaWNcIlxuICAgIHwgXCJpbmZvXCJcbiAgICB8IFwic3VjY2Vzc1wiXG4gICAgfCBcIndhcm5pbmdcIlxuICAgIHwgXCJlcnJvclwiO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE5pY2VBbGVydEFwcGVhcmFuY2UgPVxuICAgIHwgXCJib3JkZXJcIlxuICAgIHwgXCJmaWxsXCJcbiAgICB8IFwib3V0bGluZVwiXG4gICAgfCBcInNvZnRcIjtcblxuZXhwb3J0IHR5cGUgTmljZUFsZXJ0VHlwZSA9XG4gICAgfCBcInByaW1hcnlcIlxuICAgIHwgXCJhY2NlbnRcIlxuICAgIHwgXCJ3YXJuXCJcbiAgICB8IFwiYmFzaWNcIlxuICAgIHwgXCJpbmZvXCJcbiAgICB8IFwic3VjY2Vzc1wiXG4gICAgfCBcIndhcm5pbmdcIlxuICAgIHwgXCJlcnJvclwiO1xuXG5leHBvcnQgdHlwZSBOaWNlQWxlcnRDb2xvciA9XG4gICAgfCBcInByaW1hcnlcIlxuICAgIHwgXCJhY2NlbnRcIlxuICAgIHwgXCJ3YXJuXCI7XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { coerceBooleanProperty } from "@angular/cdk/coercion";
2
- import { ChangeDetectorRef, Component, ElementRef, HostBinding, Input, NgZone, Optional, Self, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from "@angular/core";
2
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Optional, Output, Self, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from "@angular/core";
3
3
  import { FormControl, FormGroupDirective, NgControl, NgForm, Validators } from "@angular/forms";
4
4
  import { ErrorStateMatcher, MatOption, mixinErrorState } from "@angular/material/core";
5
5
  import { MatFormFieldControl } from "@angular/material/form-field";
@@ -61,6 +61,7 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
61
61
  this.allowNotFoundItems = false;
62
62
  this.panelClass = [];
63
63
  this.bindValue = "id";
64
+ this.selected = new EventEmitter();
64
65
  this._disabled = false;
65
66
  this.id = uuid.v4();
66
67
  this.describedBy = "";
@@ -107,6 +108,7 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
107
108
  this._value = value;
108
109
  this.propagate(value);
109
110
  this.stateChanges.next();
111
+ this.selected.emit(value);
110
112
  }
111
113
  }
112
114
  get value() {
@@ -345,13 +347,13 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
345
347
  }
346
348
  }
347
349
  NiceAsyncTypeaheadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAsyncTypeaheadComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.ErrorStateMatcher }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.NiceAsyncTypeaheadService }], target: i0.ɵɵFactoryTarget.Component });
348
- NiceAsyncTypeaheadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceAsyncTypeaheadComponent, selector: "nice-async-typeahead", inputs: { resource: "resource", searchOptions: "searchOptions", preloadResource: "preloadResource", allowNotFoundItems: "allowNotFoundItems", panelClass: "panelClass", bindValue: "bindValue", bindLabel: "bindLabel", placeholder: "placeholder", emptyPlaceholder: "emptyPlaceholder", optionTemplate: "optionTemplate", filterFn: "filterFn", labelFormatFn: "labelFormatFn", disabled: "disabled", value: "value", required: "required" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [
350
+ NiceAsyncTypeaheadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceAsyncTypeaheadComponent, selector: "nice-async-typeahead", inputs: { resource: "resource", searchOptions: "searchOptions", preloadResource: "preloadResource", allowNotFoundItems: "allowNotFoundItems", panelClass: "panelClass", bindValue: "bindValue", bindLabel: "bindLabel", placeholder: "placeholder", emptyPlaceholder: "emptyPlaceholder", optionTemplate: "optionTemplate", filterFn: "filterFn", labelFormatFn: "labelFormatFn", disabled: "disabled", value: "value", required: "required" }, outputs: { selected: "selected" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [
349
351
  {
350
352
  provide: MatFormFieldControl,
351
353
  useExisting: NiceAsyncTypeaheadComponent
352
354
  },
353
355
  NiceAsyncTypeaheadService
354
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["searchInput"], descendants: true, static: true }, { propertyName: "options", predicate: MatOption, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"{ loading: service.loading$ | async, loadingPage: service.loadingPage$ | async, values: service.filteredItems$ | async } as ctx\">\n <div class=\"flex\" *ngIf=\"!disabled; else disable\">\n <input\n #searchInput\n matInput\n class=\"flex-auto\"\n type=\"text\"\n name=\"mat-autocomplete\"\n [disabled]=\"$any(disabled)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"$any(required)\"\n (focus)=\"focusChanged(true)\"\n />\n <mat-icon *ngIf=\"value && !ctx.loading\" matSuffix class=\"close-button secondary-text\" (click)=\"onRemove($event)\">\n close\n </mat-icon>\n\n <mat-spinner class=\"self-center\" [diameter]=\"16\" *ngIf=\"ctx.loading\"></mat-spinner>\n </div>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth\"\n [class]=\"panelClass\"\n (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n (closed)=\"updateState(false)\"\n (opened)=\"updateState(true)\"\n (optionsScroll)=\"onEndScroll()\"\n autoActiveFirstOption\n >\n <mat-progress-bar *ngIf=\"open && ctx.loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n <mat-option *ngFor=\"let option of ctx.values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\">\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.values?.length && !allowNotFoundItems\" disabled>\n <ng-container *ngIf=\"emptyPlaceholder; else defaultEmptyPlaceholder\">\n {{ emptyPlaceholder }}\n </ng-container>\n <ng-template #defaultEmptyPlaceholder>\n {{ \"components.typeahead.no_item_found\" | translate }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.values?.length && allowNotFoundItems\" id=\"new-value-option\" [value]=\"searchControl.value\">\n <span class=\"italic\">{{ searchControl.value }}</span>\n </mat-option>\n <mat-progress-bar *ngIf=\"open && ctx.loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </mat-autocomplete>\n</ng-container>\n\n<ng-template #disable>\n <input\n matInput\n class=\"disabled-input\"\n type=\"text\"\n [disabled]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [required]=\"$any(required)\"\n />\n</ng-template>\n", styles: ["nice-async-typeahead{width:100%}nice-async-typeahead .close-button{flex:1 1 18px;cursor:pointer;min-height:18px!important;min-width:18px!important;height:18px!important;width:18px!important;font-size:18px!important;align-self:center}nice-async-typeahead .disabled-input{flex:1 1 95%}nice-async-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;user-select:none}nice-async-typeahead .arrow{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.italic{font-style:italic}\n"], components: [{ type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i2.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.MatSuffix, selector: "[matSuffix]" }, { type: i11.OptionsScrollDirective, selector: "mat-autocomplete[optionsScroll]", inputs: ["thresholdPercent"], outputs: ["optionsScroll"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i8.AsyncPipe, "translate": i12.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
356
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "options", predicate: MatOption, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"{ loading: service.loading$ | async, loadingPage: service.loadingPage$ | async, values: service.filteredItems$ | async } as ctx\">\n <div class=\"flex\" *ngIf=\"!disabled; else disable\">\n <input\n #searchInput\n matInput\n class=\"flex-auto\"\n type=\"text\"\n name=\"mat-autocomplete\"\n [disabled]=\"$any(disabled)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"$any(required)\"\n (focus)=\"focusChanged(true)\"\n />\n <mat-icon *ngIf=\"value && !ctx.loading\" matSuffix class=\"close-button secondary-text\" (click)=\"onRemove($event)\">\n close\n </mat-icon>\n\n <mat-spinner class=\"self-center\" [diameter]=\"16\" *ngIf=\"ctx.loading\"></mat-spinner>\n </div>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth\"\n [class]=\"panelClass\"\n (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n (closed)=\"updateState(false)\"\n (opened)=\"updateState(true)\"\n (optionsScroll)=\"onEndScroll()\"\n autoActiveFirstOption\n >\n <mat-progress-bar *ngIf=\"open && ctx.loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n <mat-option *ngFor=\"let option of ctx.values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\">\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.values?.length && !allowNotFoundItems\" disabled>\n <ng-container *ngIf=\"emptyPlaceholder; else defaultEmptyPlaceholder\">\n {{ emptyPlaceholder }}\n </ng-container>\n <ng-template #defaultEmptyPlaceholder>\n {{ \"components.typeahead.no_item_found\" | translate }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.values?.length && allowNotFoundItems\" id=\"new-value-option\" [value]=\"searchControl.value\">\n <span class=\"italic\">{{ searchControl.value }}</span>\n </mat-option>\n <mat-progress-bar *ngIf=\"open && ctx.loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </mat-autocomplete>\n</ng-container>\n\n<ng-template #disable>\n <input\n matInput\n class=\"disabled-input\"\n type=\"text\"\n [disabled]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [required]=\"$any(required)\"\n />\n</ng-template>\n", styles: ["nice-async-typeahead{width:100%}nice-async-typeahead .close-button{flex:1 1 18px;cursor:pointer;min-height:18px!important;min-width:18px!important;height:18px!important;width:18px!important;font-size:18px!important;align-self:center}nice-async-typeahead .disabled-input{flex:1 1 95%}nice-async-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;user-select:none}nice-async-typeahead .arrow{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.italic{font-style:italic}\n"], components: [{ type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i2.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.MatSuffix, selector: "[matSuffix]" }, { type: i11.OptionsScrollDirective, selector: "mat-autocomplete[optionsScroll]", inputs: ["thresholdPercent"], outputs: ["optionsScroll"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i8.AsyncPipe, "translate": i12.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
355
357
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceAsyncTypeaheadComponent, decorators: [{
356
358
  type: Component,
357
359
  args: [{ selector: "nice-async-typeahead", encapsulation: ViewEncapsulation.None, providers: [
@@ -371,7 +373,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
371
373
  type: Optional
372
374
  }] }, { type: i2.ErrorStateMatcher }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i3.NiceAsyncTypeaheadService }]; }, propDecorators: { input: [{
373
375
  type: ViewChild,
374
- args: ["searchInput", { static: true }]
376
+ args: ["searchInput"]
375
377
  }], options: [{
376
378
  type: ViewChildren,
377
379
  args: [MatOption]
@@ -397,6 +399,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
397
399
  type: Input
398
400
  }], filterFn: [{
399
401
  type: Input
402
+ }], selected: [{
403
+ type: Output
400
404
  }], labelFormatFn: [{
401
405
  type: Input
402
406
  }], disabled: [{
@@ -414,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
414
418
  type: HostBinding,
415
419
  args: ["attr.aria-describedby"]
416
420
  }] } });
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFJTixRQUFRLEVBQ1IsSUFBSSxFQUVKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUVoRix3Q0FBd0M7QUFDeEMsb0JBQW9CO0FBQ3BCLE1BQU0sNEJBQTRCLEdBQUcsZUFBZSxDQUNoRDtJQVFJLFlBQ1cseUJBQTRDLEVBQzVDLFdBQW1CLEVBQ25CLGdCQUFvQztJQUMzQzs7OztPQUlHO0lBQ0ksU0FBb0I7UUFScEIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUFtQjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBTXBDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFoQi9COzs7O1dBSUc7UUFDTSxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFZekMsQ0FBQztDQUNQLENBQ0osQ0FBQztBQWVGLDJDQUEyQztBQUMzQyxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsNEJBQTRCO0lBZ0p6RSxZQUN3QixTQUFvQixFQUM1QixVQUFrQixFQUNsQixlQUFtQyxFQUMvQyx3QkFBMkMsRUFDbkMsTUFBYyxFQUNkLGlCQUFvQyxFQUNyQyxPQUFrQztRQUV6QyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUpoRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQyxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQXRKdEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLGdCQUFXLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQixrQkFBYSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBR2YsWUFBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBZS9CLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBR3hCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUczQixlQUFVLEdBQXNCLEVBQUUsQ0FBQztRQUduQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBcURkLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFzQ3JCLE9BQUUsR0FBVyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFHdkIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFhakIsY0FBUyxHQUE0QixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFhakQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUN2QztJQUNMLENBQUM7SUExR0QsSUFDVyxhQUFhLENBQUMsYUFBb0M7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQ1csUUFBUSxDQUFDLEtBQW1CO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDbkQ7UUFFRCw2RUFBNkU7UUFDN0UsbUVBQW1FO1FBQ25FLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztTQUNsQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsSUFDVyxLQUFLLENBQUMsS0FBVTtRQUN2QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFDRCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQ1csUUFBUSxDQUFDLEtBQW1CO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNqRyxDQUFDO0lBR0QsSUFDVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBUUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxDQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUMvRCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzdFLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBb0JNLFFBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNwRDtZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sS0FBSyxVQUFVLENBQUM7Z0JBQ3RDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztpQkFDcEQ7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztpQkFDbkQ7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JILElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO29CQUMxQixPQUFPO2lCQUNWO2dCQUVELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqRSxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDckMsSUFBSSxlQUFlLElBQUksT0FBTyxFQUFFO1lBQzVCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxhQUFhLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQzthQUN6RztTQUNKO1FBRUQsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxhQUFhLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqRDtTQUNKO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQVU7UUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3ZGLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLEVBQUU7WUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLEtBQUssWUFBWSxxQkFBcUIsRUFBRTtZQUN4QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixPQUFPO1NBQ1Y7YUFBTTtZQUNILE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1NBQ2pIO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFNBQWtDO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQy9CLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFPO1FBQzVCLFFBQVE7SUFDWixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0saUJBQWlCLENBQUMsR0FBYTtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFNBQVM7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQW9DO1FBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBbUM7UUFDdkQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxrQkFBa0IsRUFBRTtZQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwRTthQUFNO1lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDN0c7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQWE7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM5RDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDbkI7U0FDSjtJQUNMLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBYTtRQUN6QixJQUFJLEtBQUssRUFBRTtZQUNQLDJCQUEyQjtTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUU7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQVM7UUFDeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNuRDtRQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNuRDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFrQjtRQUNsQyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFekIsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQ3RDO1NBQ0o7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVk7UUFDckIsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFzQjtRQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTztTQUNWO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDOUQ7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQzFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2YsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLFlBQVkscUJBQXFCLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLE9BQU87U0FDVjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEMsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLE9BQU87U0FDVjtJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCO1FBQ2hDLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxxQkFBcUIsRUFBRTtZQUM5QyxPQUFPO1NBQ1Y7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQ25CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUM3RyxDQUFDO1FBQ0YsSUFBSSxJQUFJLEVBQUU7WUFDTixPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7SUFDTCxDQUFDOzt3SEFoYVEsMkJBQTJCOzRHQUEzQiwyQkFBMkIsa21CQVR6QjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixXQUFXLEVBQUUsMkJBQTJCO1NBQzNDO1FBQ0QseUJBQXlCO0tBQzVCLDJKQW1CYSxTQUFTLDRGQ3JGM0IsODZGQXFFQTsyRkRBYSwyQkFBMkI7a0JBZHZDLFNBQVM7K0JBQ0ksc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsNkJBQTZCO3lCQUMzQzt3QkFDRCx5QkFBeUI7cUJBQzVCOzswQkFvSkksUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFFBQVE7eUtBcklOLEtBQUs7c0JBRFgsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUluQyxPQUFPO3NCQURiLFlBQVk7dUJBQUMsU0FBUztnQkFJaEIsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBV0ssUUFBUTtzQkFEbEIsS0FBSztnQkFpQ0ssS0FBSztzQkFEZixLQUFLO2dCQWtCSyxRQUFRO3NCQURsQixLQUFLO2dCQVVLLGdCQUFnQjtzQkFEMUIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBTXRCLEVBQUU7c0JBRFIsV0FBVztnQkFJTCxXQUFXO3NCQURqQixXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2VyY2lvblwiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyLCBNYXRPcHRpb24sIG1peGluRXJyb3JTdGF0ZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE5pY2VUeXBlYWhlYWROZXdWYWx1ZSB9IGZyb20gXCIuLi90eXBlYWhlYWRcIjtcbmltcG9ydCB7IE5pY2VBc3luY1R5cGVhaGVhZFNlcnZpY2UgfSBmcm9tIFwiLi9wcm92aWRlcnMvYXN5bmMtdHlwZWFoZWFkLnNlcnZpY2VcIjtcblxuLy8gQm9pbGVycGxhdGUgZm9yIGFwcGx5aW5nIG1peGlucyB0byApLlxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmNvbnN0IF9CYXNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnQgPSBtaXhpbkVycm9yU3RhdGUoXG4gICAgY2xhc3Mge1xuICAgICAgICAvKipcbiAgICAgICAgICogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBzdGF0ZSBjaGFuZ2VzIGFuZCBzaG91bGQgY2F1c2UgdGhlIHBhcmVudFxuICAgICAgICAgKiBmb3JtIGZpZWxkIHRvIHVwZGF0ZS4gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgTWF0Rm9ybUZpZWxkQ29udHJvbGAuXG4gICAgICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IoXG4gICAgICAgICAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm0gY29udHJvbCBib3VuZCB0byB0aGUgY29tcG9uZW50LlxuICAgICAgICAgICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgTWF0Rm9ybUZpZWxkQ29udHJvbGAuXG4gICAgICAgICAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICAgICAgICApIHt9XG4gICAgfVxuKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS1hc3luYy10eXBlYWhlYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCJhc3luYy10eXBlYWhlYWQudGVtcGxhdGUuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiYXN5bmMtdHlwZWFoZWFkLnN0eWxlLnNjc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBOaWNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnRcbiAgICAgICAgfSxcbiAgICAgICAgTmljZUFzeW5jVHlwZWFoZWFkU2VydmljZVxuICAgIF1cbn0pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG5leHBvcnQgY2xhc3MgTmljZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50IGV4dGVuZHMgX0Jhc2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPGFueT4sIERvQ2hlY2sge1xuICAgIHB1YmxpYyBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHB1YmxpYyBjb250cm9sVHlwZSA9IFwicmVtb3RlLXR5cGVhaGVhZFwiO1xuICAgIHB1YmxpYyBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2VzU3ViJDogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBvcGVuID0gZmFsc2U7XG4gICAgcHVibGljIHBhbmVsV2lkdGggPSAwO1xuICAgIHB1YmxpYyBhY3RpdmVPcHRpb246IE1hdE9wdGlvbjtcblxuICAgIHB1YmxpYyBhY3RpdmUkID0gdGhpcy5zZXJ2aWNlLmFjdGl2ZSQ7XG5cbiAgICBAVmlld0NoaWxkKFwic2VhcmNoSW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkcmVuKE1hdE9wdGlvbilcbiAgICBwdWJsaWMgb3B0aW9uczogTWF0T3B0aW9uW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXNvdXJjZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoT3B0aW9uczogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJlbG9hZFJlc291cmNlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd05vdEZvdW5kSXRlbXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhbmVsQ2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kVmFsdWUgPSBcImlkXCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXB0eVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsdGVyRm46ICh2YWx1ZTogYW55KSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgbGFiZWxGb3JtYXRGbihsYWJlbEZvcm1hdEZuOiAoaXRlbTogYW55KSA9PiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbGFiZWxGb3JtYXRGbiA9IGxhYmVsRm9ybWF0Rm47XG4gICAgfVxuICAgIHByaXZhdGUgX2xhYmVsRm9ybWF0Rm46IChpdGVtOiBhbnkpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCcm93c2VycyBtYXkgbm90IGZpcmUgdGhlIGJsdXIgZXZlbnQgaWYgdGhlIGlucHV0IGlzIGRpc2FibGVkIHRvbyBxdWlja2x5LlxuICAgICAgICAvLyBSZXNldCBmcm9tIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgZG9lc24ndCBiZWNvbWUgc3R1Y2suXG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmRpc2FibGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5mbG9hdGluZ1wiKVxuICAgIHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoKVxuICAgIHB1YmxpYyBpZDogc3RyaW5nID0gdXVpZC52NCgpO1xuXG4gICAgQEhvc3RCaW5kaW5nKFwiYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XCIpXG4gICAgcHVibGljIGRlc2NyaWJlZEJ5ID0gXCJcIjtcblxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIXRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlLmxlbmd0aCkgJiZcbiAgICAgICAgICAgICghdGhpcy5fdmFsdWUgfHwgKHR5cGVvZiB0aGlzLl92YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhdGhpcy5fdmFsdWUubGVuZ3RoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGluaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEluaXRpYWxpemVkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb3BhZ2F0ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHNlcnZpY2U6IE5pY2VBc3luY1R5cGVhaGVhZFNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBuZ0NvbnRyb2wpO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHN0YXR1cyA9PT0gXCJESVNBQkxFRFwiO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWx0ZXJGbikge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEZpbHRlckZuKHRoaXMuZmlsdGVyRm4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWIkID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VhcmNoKHRoaXMucmVzb3VyY2UsIHRleHQsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnByZWxvYWRSZXNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiLCB0aGlzLnNlYXJjaE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YiQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoXCJzZWFyY2hPcHRpb25zXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlcy5zZWFyY2hPcHRpb25zO1xuICAgICAgICAgICAgaWYgKCFjaGFuZ2UuaXNGaXJzdENoYW5nZSgpICYmIGNoYW5nZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiLCBjaGFuZ2UuY3VycmVudFZhbHVlKS50aGVuKCgpID0+IHRoaXMuY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcImZpbHRlckZuXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlcy5maWx0ZXJGbjtcbiAgICAgICAgICAgIGlmICghY2hhbmdlLmlzRmlyc3RDaGFuZ2UoKSAmJiBjaGFuZ2UuY3VycmVudFZhbHVlICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRGaWx0ZXJGbihjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgPT09IHZhbHVlIHx8IChpc051bGxPclVuZGVmaW5lZCh0aGlzLl92YWx1ZSkgJiYgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLl92YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25SZW1vdmUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5zZXRBY3RpdmVJZCh0aGlzLnJlc291cmNlLCB2YWx1ZSwgdGhpcy5zZWFyY2hPcHRpb25zKS50aGVuKCgpID0+IHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UocHJvcGFnYXRlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSA9IHByb3BhZ2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBOTy1PUFxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oXCIgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmU8VCA9IGFueT4oKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0QWN0aXZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uQWN0aXZhdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQub3B0aW9uLmlkID09PSBcIm5ldy12YWx1ZS1vcHRpb25cIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBOaWNlVHlwZWFoZWFkTmV3VmFsdWUodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmUoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmJpbmRWYWx1ZSA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgZXZlbnQub3B0aW9uLnZhbHVlKSA6IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVTdGF0ZShvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW47XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0NoYW5nZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW4gJiYgIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsaXplKHRoaXMucmVzb3VyY2UsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub3BlbiAmJiB0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl92YWx1ZSAmJiB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmUoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEFjdGl2ZShudWxsKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcblxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VhcmNoKHRoaXMucmVzb3VyY2UsIFwiXCIsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdExhYmVsKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLl9sYWJlbEZvcm1hdEZuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxGb3JtYXRGbihpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmJpbmRMYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRMYWJlbCwgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZm9ybWF0KHRoaXMucmVzb3VyY2UsIGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIG9uRW5kU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UubG9hZE1vcmUodGhpcy5yZXNvdXJjZSwgdGhpcy5zZWFyY2hPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNGb2N1c2VkICE9PSB0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcblxuICAgICAgICAgICAgaWYgKGlzRm9jdXNlZCAmJiB0aGlzLmZpbHRlckZuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnJlbG9hZEZpbHRlcmVkSXRlbXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRBY3RpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZT8ucmVsb2FkQWN0aXZlKHRoaXMucmVzb3VyY2UsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuc2VydmljZT8uZ2V0QWN0aXZlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWwoYWN0aXZlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxhYmVsKGl0ZW06IHVua25vd24gfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZm9ybWF0TGFiZWwoaXRlbSk7XG5cbiAgICAgICAgaWYgKGxhYmVsICYmIGxhYmVsICE9PSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKGxhYmVsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9iamVjdEl0ZW0oa2V5OiBzdHJpbmcsIG9iajogb2JqZWN0KTogYW55IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICAgIGxldCBpdGVtID0gb2JqO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXRlbS5oYXNPd25Qcm9wZXJ0eShrKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1ba107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVNlYXJjaElucHV0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwodGhpcy5fdmFsdWUuJG5ldyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLnNlcnZpY2UuZ2V0QWN0aXZlKCk7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoYWN0aXZlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlIGluc3RhbmNlb2YgTmljZVR5cGVhaGVhZE5ld1ZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5maWx0ZXJlZEl0ZW1zJCk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtcy5maW5kKFxuICAgICAgICAgICAgdiA9PiAodGhpcy5iaW5kVmFsdWUgJiYgdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgPyB0aGlzLmdldE9iamVjdEl0ZW0odGhpcy5iaW5kVmFsdWUsIHYpIDogdikgPT09IHRoaXMuX3ZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwgJiYgdGhpcy5fdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5vblJlbW92ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7IGxvYWRpbmc6IHNlcnZpY2UubG9hZGluZyQgfCBhc3luYywgbG9hZGluZ1BhZ2U6IHNlcnZpY2UubG9hZGluZ1BhZ2UkIHwgYXN5bmMsIHZhbHVlczogc2VydmljZS5maWx0ZXJlZEl0ZW1zJCB8IGFzeW5jIH0gYXMgY3R4XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXhcIiAqbmdJZj1cIiFkaXNhYmxlZDsgZWxzZSBkaXNhYmxlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWF1dG9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdC1hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiRhbnkoZGlzYWJsZWQpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiRhbnkocmVxdWlyZWQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJmb2N1c0NoYW5nZWQodHJ1ZSlcIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJ2YWx1ZSAmJiAhY3R4LmxvYWRpbmdcIiBtYXRTdWZmaXggY2xhc3M9XCJjbG9zZS1idXR0b24gc2Vjb25kYXJ5LXRleHRcIiAoY2xpY2spPVwib25SZW1vdmUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgY2xvc2VcbiAgICAgICAgPC9tYXQtaWNvbj5cblxuICAgICAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJzZWxmLWNlbnRlclwiIFtkaWFtZXRlcl09XCIxNlwiICpuZ0lmPVwiY3R4LmxvYWRpbmdcIj48L21hdC1zcGlubmVyPlxuICAgIDwvZGl2PlxuICAgIDxtYXQtYXV0b2NvbXBsZXRlXG4gICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW3BhbmVsV2lkdGhdPVwicGFuZWxXaWR0aFwiXG4gICAgICAgIFtjbGFzc109XCJwYW5lbENsYXNzXCJcbiAgICAgICAgKG9wdGlvbkFjdGl2YXRlZCk9XCJvbk9wdGlvbkFjdGl2YXRlZCgkZXZlbnQpXCJcbiAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIChjbG9zZWQpPVwidXBkYXRlU3RhdGUoZmFsc2UpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJ1cGRhdGVTdGF0ZSh0cnVlKVwiXG4gICAgICAgIChvcHRpb25zU2Nyb2xsKT1cIm9uRW5kU2Nyb2xsKClcIlxuICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cbiAgICA+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwib3BlbiAmJiBjdHgubG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGN0eC52YWx1ZXNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uVGVtcGxhdGU7IGVsc2UgZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybWF0PlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKG9wdGlvbikgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhY3R4LnZhbHVlcz8ubGVuZ3RoICYmICFhbGxvd05vdEZvdW5kSXRlbXNcIiBkaXNhYmxlZD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbXB0eVBsYWNlaG9sZGVyOyBlbHNlIGRlZmF1bHRFbXB0eVBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAge3sgZW1wdHlQbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eVBsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgIHt7IFwiY29tcG9uZW50cy50eXBlYWhlYWQubm9faXRlbV9mb3VuZFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIWN0eC52YWx1ZXM/Lmxlbmd0aCAmJiBhbGxvd05vdEZvdW5kSXRlbXNcIiBpZD1cIm5ldy12YWx1ZS1vcHRpb25cIiBbdmFsdWVdPVwic2VhcmNoQ29udHJvbC52YWx1ZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGFsaWNcIj57eyBzZWFyY2hDb250cm9sLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwib3BlbiAmJiBjdHgubG9hZGluZ1BhZ2VcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L21hdC1hdXRvY29tcGxldGU+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkaXNhYmxlPlxuICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBjbGFzcz1cImRpc2FibGVkLWlucHV0XCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cIiRhbnkocmVxdWlyZWQpXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
421
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBSU4sUUFBUSxFQUFFLE1BQU0sRUFDaEIsSUFBSSxFQUVKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FB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RUFBRSwyQkFBMkI7U0FDM0M7UUFDRCx5QkFBeUI7S0FDNUIsNklBbUJhLFNBQVMsNEZDdEYzQiw4NkZBcUVBOzJGRENhLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDSSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyw2QkFBNkI7eUJBQzNDO3dCQUNELHlCQUF5QjtxQkFDNUI7OzBCQXdKSSxRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQ1IsUUFBUTt5S0F6SU4sS0FBSztzQkFEWCxTQUFTO3VCQUFDLGFBQWE7Z0JBSWpCLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxTQUFTO2dCQUloQixRQUFRO3NCQURkLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxNQUFNO2dCQUlJLGFBQWE7c0JBRHZCLEtBQUs7Z0JBV0ssUUFBUTtzQkFEbEIsS0FBSztnQkFpQ0ssS0FBSztzQkFEZixLQUFLO2dCQW1CSyxRQUFRO3NCQURsQixLQUFLO2dCQVVLLGdCQUFnQjtzQkFEMUIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBTXRCLEVBQUU7c0JBRFIsV0FBVztnQkFJTCxXQUFXO3NCQURqQixXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2VyY2lvblwiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyLCBNYXRPcHRpb24sIG1peGluRXJyb3JTdGF0ZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE5pY2VUeXBlYWhlYWROZXdWYWx1ZSB9IGZyb20gXCIuLi90eXBlYWhlYWRcIjtcbmltcG9ydCB7IE5pY2VBc3luY1R5cGVhaGVhZFNlcnZpY2UgfSBmcm9tIFwiLi9wcm92aWRlcnMvYXN5bmMtdHlwZWFoZWFkLnNlcnZpY2VcIjtcblxuLy8gQm9pbGVycGxhdGUgZm9yIGFwcGx5aW5nIG1peGlucyB0byApLlxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmNvbnN0IF9CYXNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnQgPSBtaXhpbkVycm9yU3RhdGUoXG4gICAgY2xhc3Mge1xuICAgICAgICAvKipcbiAgICAgICAgICogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBzdGF0ZSBjaGFuZ2VzIGFuZCBzaG91bGQgY2F1c2UgdGhlIHBhcmVudFxuICAgICAgICAgKiBmb3JtIGZpZWxkIHRvIHVwZGF0ZS4gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgTWF0Rm9ybUZpZWxkQ29udHJvbGAuXG4gICAgICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IoXG4gICAgICAgICAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm0gY29udHJvbCBib3VuZCB0byB0aGUgY29tcG9uZW50LlxuICAgICAgICAgICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBgTWF0Rm9ybUZpZWxkQ29udHJvbGAuXG4gICAgICAgICAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICAgICAgICApIHt9XG4gICAgfVxuKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS1hc3luYy10eXBlYWhlYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCJhc3luYy10eXBlYWhlYWQudGVtcGxhdGUuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiYXN5bmMtdHlwZWFoZWFkLnN0eWxlLnNjc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBOaWNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnRcbiAgICAgICAgfSxcbiAgICAgICAgTmljZUFzeW5jVHlwZWFoZWFkU2VydmljZVxuICAgIF1cbn0pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG5leHBvcnQgY2xhc3MgTmljZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50IGV4dGVuZHMgX0Jhc2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPGFueT4sIERvQ2hlY2sge1xuICAgIHB1YmxpYyBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHB1YmxpYyBjb250cm9sVHlwZSA9IFwicmVtb3RlLXR5cGVhaGVhZFwiO1xuICAgIHB1YmxpYyBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2VzU3ViJDogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBvcGVuID0gZmFsc2U7XG4gICAgcHVibGljIHBhbmVsV2lkdGggPSAwO1xuICAgIHB1YmxpYyBhY3RpdmVPcHRpb246IE1hdE9wdGlvbjtcblxuICAgIHB1YmxpYyBhY3RpdmUkID0gdGhpcy5zZXJ2aWNlLmFjdGl2ZSQ7XG5cbiAgICBAVmlld0NoaWxkKFwic2VhcmNoSW5wdXRcIilcbiAgICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkcmVuKE1hdE9wdGlvbilcbiAgICBwdWJsaWMgb3B0aW9uczogTWF0T3B0aW9uW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXNvdXJjZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoT3B0aW9uczogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJlbG9hZFJlc291cmNlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd05vdEZvdW5kSXRlbXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhbmVsQ2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kVmFsdWUgPSBcImlkXCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXB0eVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsdGVyRm46ICh2YWx1ZTogYW55KSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBsYWJlbEZvcm1hdEZuKGxhYmVsRm9ybWF0Rm46IChpdGVtOiBhbnkpID0+IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbEZvcm1hdEZuID0gbGFiZWxGb3JtYXRGbjtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbGFiZWxGb3JtYXRGbjogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJyb3dzZXJzIG1heSBub3QgZmlyZSB0aGUgYmx1ciBldmVudCBpZiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgdG9vIHF1aWNrbHkuXG4gICAgICAgIC8vIFJlc2V0IGZyb20gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBkb2Vzbid0IGJlY29tZSBzdHVjay5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5mbG9hdGluZ1wiKVxuICAgIHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoKVxuICAgIHB1YmxpYyBpZDogc3RyaW5nID0gdXVpZC52NCgpO1xuXG4gICAgQEhvc3RCaW5kaW5nKFwiYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XCIpXG4gICAgcHVibGljIGRlc2NyaWJlZEJ5ID0gXCJcIjtcblxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIXRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlLmxlbmd0aCkgJiZcbiAgICAgICAgICAgICghdGhpcy5fdmFsdWUgfHwgKHR5cGVvZiB0aGlzLl92YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhdGhpcy5fdmFsdWUubGVuZ3RoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGluaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEluaXRpYWxpemVkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb3BhZ2F0ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHNlcnZpY2U6IE5pY2VBc3luY1R5cGVhaGVhZFNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBuZ0NvbnRyb2wpO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHN0YXR1cyA9PT0gXCJESVNBQkxFRFwiO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWx0ZXJGbikge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEZpbHRlckZuKHRoaXMuZmlsdGVyRm4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWIkID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VhcmNoKHRoaXMucmVzb3VyY2UsIHRleHQsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnByZWxvYWRSZXNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiLCB0aGlzLnNlYXJjaE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YiQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoXCJzZWFyY2hPcHRpb25zXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlcy5zZWFyY2hPcHRpb25zO1xuICAgICAgICAgICAgaWYgKCFjaGFuZ2UuaXNGaXJzdENoYW5nZSgpICYmIGNoYW5nZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiLCBjaGFuZ2UuY3VycmVudFZhbHVlKS50aGVuKCgpID0+IHRoaXMuY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcImZpbHRlckZuXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlcy5maWx0ZXJGbjtcbiAgICAgICAgICAgIGlmICghY2hhbmdlLmlzRmlyc3RDaGFuZ2UoKSAmJiBjaGFuZ2UuY3VycmVudFZhbHVlICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRGaWx0ZXJGbihjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgPT09IHZhbHVlIHx8IChpc051bGxPclVuZGVmaW5lZCh0aGlzLl92YWx1ZSkgJiYgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLl92YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25SZW1vdmUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5zZXRBY3RpdmVJZCh0aGlzLnJlc291cmNlLCB2YWx1ZSwgdGhpcy5zZWFyY2hPcHRpb25zKS50aGVuKCgpID0+IHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UocHJvcGFnYXRlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSA9IHByb3BhZ2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBOTy1PUFxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oXCIgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmU8VCA9IGFueT4oKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0QWN0aXZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uQWN0aXZhdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQub3B0aW9uLmlkID09PSBcIm5ldy12YWx1ZS1vcHRpb25cIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBOaWNlVHlwZWFoZWFkTmV3VmFsdWUodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmUoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmJpbmRWYWx1ZSA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgZXZlbnQub3B0aW9uLnZhbHVlKSA6IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVTdGF0ZShvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW47XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0NoYW5nZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW4gJiYgIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsaXplKHRoaXMucmVzb3VyY2UsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub3BlbiAmJiB0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMub3Blbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl92YWx1ZSAmJiB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmUoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEFjdGl2ZShudWxsKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcblxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VhcmNoKHRoaXMucmVzb3VyY2UsIFwiXCIsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdExhYmVsKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLl9sYWJlbEZvcm1hdEZuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxGb3JtYXRGbihpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmJpbmRMYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRMYWJlbCwgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZm9ybWF0KHRoaXMucmVzb3VyY2UsIGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIG9uRW5kU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UubG9hZE1vcmUodGhpcy5yZXNvdXJjZSwgdGhpcy5zZWFyY2hPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNDaGFuZ2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNGb2N1c2VkICE9PSB0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcblxuICAgICAgICAgICAgaWYgKGlzRm9jdXNlZCAmJiB0aGlzLmZpbHRlckZuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnJlbG9hZEZpbHRlcmVkSXRlbXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRBY3RpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZT8ucmVsb2FkQWN0aXZlKHRoaXMucmVzb3VyY2UsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuc2VydmljZT8uZ2V0QWN0aXZlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlTGFiZWwoYWN0aXZlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxhYmVsKGl0ZW06IHVua25vd24gfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZm9ybWF0TGFiZWwoaXRlbSk7XG5cbiAgICAgICAgaWYgKGxhYmVsICYmIGxhYmVsICE9PSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKGxhYmVsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9iamVjdEl0ZW0oa2V5OiBzdHJpbmcsIG9iajogb2JqZWN0KTogYW55IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICAgIGxldCBpdGVtID0gb2JqO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXRlbS5oYXNPd25Qcm9wZXJ0eShrKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1ba107XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVNlYXJjaElucHV0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwodGhpcy5fdmFsdWUuJG5ldyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLnNlcnZpY2UuZ2V0QWN0aXZlKCk7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoYWN0aXZlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlIGluc3RhbmNlb2YgTmljZVR5cGVhaGVhZE5ld1ZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5maWx0ZXJlZEl0ZW1zJCk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtcy5maW5kKFxuICAgICAgICAgICAgdiA9PiAodGhpcy5iaW5kVmFsdWUgJiYgdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgPyB0aGlzLmdldE9iamVjdEl0ZW0odGhpcy5iaW5kVmFsdWUsIHYpIDogdikgPT09IHRoaXMuX3ZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT09IG51bGwgJiYgdGhpcy5fdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5vblJlbW92ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7IGxvYWRpbmc6IHNlcnZpY2UubG9hZGluZyQgfCBhc3luYywgbG9hZGluZ1BhZ2U6IHNlcnZpY2UubG9hZGluZ1BhZ2UkIHwgYXN5bmMsIHZhbHVlczogc2VydmljZS5maWx0ZXJlZEl0ZW1zJCB8IGFzeW5jIH0gYXMgY3R4XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXhcIiAqbmdJZj1cIiFkaXNhYmxlZDsgZWxzZSBkaXNhYmxlXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWF1dG9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdC1hdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiRhbnkoZGlzYWJsZWQpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiRhbnkocmVxdWlyZWQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJmb2N1c0NoYW5nZWQodHJ1ZSlcIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJ2YWx1ZSAmJiAhY3R4LmxvYWRpbmdcIiBtYXRTdWZmaXggY2xhc3M9XCJjbG9zZS1idXR0b24gc2Vjb25kYXJ5LXRleHRcIiAoY2xpY2spPVwib25SZW1vdmUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgY2xvc2VcbiAgICAgICAgPC9tYXQtaWNvbj5cblxuICAgICAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJzZWxmLWNlbnRlclwiIFtkaWFtZXRlcl09XCIxNlwiICpuZ0lmPVwiY3R4LmxvYWRpbmdcIj48L21hdC1zcGlubmVyPlxuICAgIDwvZGl2PlxuICAgIDxtYXQtYXV0b2NvbXBsZXRlXG4gICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW3BhbmVsV2lkdGhdPVwicGFuZWxXaWR0aFwiXG4gICAgICAgIFtjbGFzc109XCJwYW5lbENsYXNzXCJcbiAgICAgICAgKG9wdGlvbkFjdGl2YXRlZCk9XCJvbk9wdGlvbkFjdGl2YXRlZCgkZXZlbnQpXCJcbiAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIChjbG9zZWQpPVwidXBkYXRlU3RhdGUoZmFsc2UpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJ1cGRhdGVTdGF0ZSh0cnVlKVwiXG4gICAgICAgIChvcHRpb25zU2Nyb2xsKT1cIm9uRW5kU2Nyb2xsKClcIlxuICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cbiAgICA+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwib3BlbiAmJiBjdHgubG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGN0eC52YWx1ZXNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uVGVtcGxhdGU7IGVsc2UgZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybWF0PlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKG9wdGlvbikgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhY3R4LnZhbHVlcz8ubGVuZ3RoICYmICFhbGxvd05vdEZvdW5kSXRlbXNcIiBkaXNhYmxlZD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbXB0eVBsYWNlaG9sZGVyOyBlbHNlIGRlZmF1bHRFbXB0eVBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAge3sgZW1wdHlQbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eVBsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgIHt7IFwiY29tcG9uZW50cy50eXBlYWhlYWQubm9faXRlbV9mb3VuZFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIWN0eC52YWx1ZXM/Lmxlbmd0aCAmJiBhbGxvd05vdEZvdW5kSXRlbXNcIiBpZD1cIm5ldy12YWx1ZS1vcHRpb25cIiBbdmFsdWVdPVwic2VhcmNoQ29udHJvbC52YWx1ZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGFsaWNcIj57eyBzZWFyY2hDb250cm9sLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwib3BlbiAmJiBjdHgubG9hZGluZ1BhZ2VcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L21hdC1hdXRvY29tcGxldGU+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkaXNhYmxlPlxuICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBjbGFzcz1cImRpc2FibGVkLWlucHV0XCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cIiRhbnkocmVxdWlyZWQpXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  import { CdkStepper } from "@angular/cdk/stepper";
2
- import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
2
+ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from "@angular/core";
3
3
  import { GeneratedFormGroup } from "@recursyve/ngx-form-generator";
4
4
  import { Subject } from "rxjs";
5
5
  import { takeUntil } from "rxjs/operators";
6
+ import { KeyboardCodes } from "../../utils";
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@recursyve/ngx-form-generator";
8
9
  export class NiceBaseFormComponent {
@@ -14,6 +15,13 @@ export class NiceBaseFormComponent {
14
15
  this.unsubscribeAll$ = new Subject();
15
16
  this.propagate = () => { };
16
17
  }
18
+ onChange(event) {
19
+ if (event) {
20
+ if (event.code === KeyboardCodes.Enter) {
21
+ this.clickSubmit();
22
+ }
23
+ }
24
+ }
17
25
  ngOnInit() {
18
26
  this.formGroup.valueChanges.pipe(takeUntil(this.unsubscribeAll$)).subscribe(() => {
19
27
  this.onValueChange(this.formGroup.getRawValue());
@@ -74,7 +82,7 @@ export class NiceBaseFormComponent {
74
82
  }
75
83
  }
76
84
  NiceBaseFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceBaseFormComponent, deps: [{ token: i1.GeneratedFormGroup }], target: i0.ɵɵFactoryTarget.Component });
77
- NiceBaseFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceBaseFormComponent, selector: "ng-component", inputs: { loading: "loading" }, outputs: { submit: "submit" }, viewQueries: [{ propertyName: "stepper", first: true, predicate: CdkStepper, descendants: true }], ngImport: i0, template: ``, isInline: true });
85
+ NiceBaseFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceBaseFormComponent, selector: "ng-component", inputs: { loading: "loading" }, outputs: { submit: "submit" }, host: { listeners: { "keyup": "onChange($event)" } }, viewQueries: [{ propertyName: "stepper", first: true, predicate: CdkStepper, descendants: true }], ngImport: i0, template: ``, isInline: true });
78
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceBaseFormComponent, decorators: [{
79
87
  type: Component,
80
88
  args: [{
@@ -87,5 +95,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
87
95
  type: Input
88
96
  }], submit: [{
89
97
  type: Output
98
+ }], onChange: [{
99
+ type: HostListener,
100
+ args: ["keyup", ["$event"]]
90
101
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWZvcm0vYmFzZS1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLM0MsTUFBTSxPQUFnQixxQkFBcUI7SUFldkMsWUFBbUIsU0FBbUM7UUFBbkMsY0FBUyxHQUFULFNBQVMsQ0FBMEI7UUFWL0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV2Qiw0Q0FBNEM7UUFFckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0Isb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXhDLGNBQVMsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRU0sQ0FBQztJQUVuRCxRQUFRO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEVBQXdCO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUF3QjtRQUM3QyxRQUFRO0lBQ1osQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFVO1FBQ3hCLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxTQUFTLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVTLGFBQWEsQ0FBQyxLQUFXO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDbEMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVTLFlBQVksQ0FBQyxLQUFhO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVTLG1CQUFtQixDQUFDLEtBQWE7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7a0hBckZpQixxQkFBcUI7c0dBQXJCLHFCQUFxQiw0SkFDNUIsVUFBVSxnREFIWCxFQUFFOzJGQUVNLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsRUFBRTtpQkFDZjt5R0FHVyxPQUFPO3NCQURkLFNBQVM7dUJBQUMsVUFBVTtnQkFJZCxPQUFPO3NCQURiLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrU3RlcHBlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvc3RlcHBlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgR2VuZXJhdGVkRm9ybUdyb3VwIH0gZnJvbSBcIkByZWN1cnN5dmUvbmd4LWZvcm0tZ2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogYGBcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmljZUJhc2VGb3JtQ29tcG9uZW50PEZvcm0+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBAVmlld0NoaWxkKENka1N0ZXBwZXIpXG4gICAgcHJpdmF0ZSBzdGVwcGVyOiBDZGtTdGVwcGVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtPigpO1xuXG4gICAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlQWxsJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZTogKGZvcm06IEZvcm0pID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtR3JvdXA6IEdlbmVyYXRlZEZvcm1Hcm91cDxGb3JtPikge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSh0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJD8ubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJD8uY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGZvcm06IEZvcm0pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IChmb3JtOiBGb3JtKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIC8vIE5PLU9QXG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUoZm9ybTogRm9ybSk6IHZvaWQge1xuICAgICAgICBpZiAoZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZShmb3JtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja1N1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Ym1pdC5lbWl0KHRoaXMuZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja05leHQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlU3RlcChpbmRleCk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tQcmV2aW91cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHBlcikge1xuICAgICAgICAgICAgdGhpcy5zdGVwcGVyLnByZXZpb3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25WYWx1ZUNoYW5nZSh2YWx1ZTogRm9ybSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWxpZGF0ZVN0ZXAoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ2V0Q3VycmVudFN0ZXBHcm91cChpbmRleCk7XG4gICAgICAgIGlmIChncm91cD8udmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGdyb3VwPy5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q3VycmVudFN0ZXBHcm91cChpbmRleDogbnVtYmVyKTogRm9ybUdyb3VwIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWZvcm0vYmFzZS1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFLNUMsTUFBTSxPQUFnQixxQkFBcUI7SUFldkMsWUFBbUIsU0FBbUM7UUFBbkMsY0FBUyxHQUFULFNBQVMsQ0FBMEI7UUFWL0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV2Qiw0Q0FBNEM7UUFFckMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0Isb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXhDLGNBQVMsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRU0sQ0FBQztJQUduRCxRQUFRLENBQUMsS0FBb0I7UUFDaEMsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO1NBQ0o7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3RSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUF3QjtRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBd0I7UUFDN0MsUUFBUTtJQUNaLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBVTtRQUN4QixJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2xCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVNLGFBQWE7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFUyxhQUFhLENBQUMsS0FBVztRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxZQUFZLENBQUMsS0FBYTtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxLQUFhO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O2tIQTlGaUIscUJBQXFCO3NHQUFyQixxQkFBcUIsa05BQzVCLFVBQVUsZ0RBSFgsRUFBRTsyRkFFTSxxQkFBcUI7a0JBSDFDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7eUdBR1csT0FBTztzQkFEZCxTQUFTO3VCQUFDLFVBQVU7Z0JBSWQsT0FBTztzQkFEYixLQUFLO2dCQUtDLE1BQU07c0JBRFosTUFBTTtnQkFVQSxRQUFRO3NCQURkLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrU3RlcHBlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvc3RlcHBlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBHZW5lcmF0ZWRGb3JtR3JvdXAgfSBmcm9tIFwiQHJlY3Vyc3l2ZS9uZ3gtZm9ybS1nZW5lcmF0b3JcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBLZXlib2FyZENvZGVzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlOiBgYFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOaWNlQmFzZUZvcm1Db21wb25lbnQ8Rm9ybT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIEBWaWV3Q2hpbGQoQ2RrU3RlcHBlcilcbiAgICBwcml2YXRlIHN0ZXBwZXI6IENka1N0ZXBwZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm0+KCk7XG5cbiAgICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVBbGwkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgcHJvcGFnYXRlOiAoZm9ybTogRm9ybSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGZvcm1Hcm91cDogR2VuZXJhdGVkRm9ybUdyb3VwPEZvcm0+KSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleXVwXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gS2V5Ym9hcmRDb2Rlcy5FbnRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xpY2tTdWJtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVBbGwkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSh0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJD8ubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlQWxsJD8uY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGZvcm06IEZvcm0pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IChmb3JtOiBGb3JtKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIC8vIE5PLU9QXG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUoZm9ybTogRm9ybSk6IHZvaWQge1xuICAgICAgICBpZiAoZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZShmb3JtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja1N1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Ym1pdC5lbWl0KHRoaXMuZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja05leHQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlU3RlcChpbmRleCk7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHBlci5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tQcmV2aW91cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHBlcikge1xuICAgICAgICAgICAgdGhpcy5zdGVwcGVyLnByZXZpb3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25WYWx1ZUNoYW5nZSh2YWx1ZTogRm9ybSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWxpZGF0ZVN0ZXAoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ2V0Q3VycmVudFN0ZXBHcm91cChpbmRleCk7XG4gICAgICAgIGlmIChncm91cD8udmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGdyb3VwPy5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q3VycmVudFN0ZXBHcm91cChpbmRleDogbnVtYmVyKTogRm9ybUdyb3VwIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
@@ -14,7 +14,7 @@ export class NiceToastComponent {
14
14
  }
15
15
  }
16
16
  NiceToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceToastComponent, deps: [{ token: MAT_SNACK_BAR_DATA }, { token: i1.MatSnackBarRef }], target: i0.ɵɵFactoryTarget.Component });
17
- NiceToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceToastComponent, selector: "nice-toast", ngImport: i0, template: "<nice-alert disableAnimation [type]=\"data.type\" [appearance]=\"data.appearance || 'outline'\" (click)=\"dismiss()\">\n <span niceAlertTitle *ngIf=\"data.title\">{{ data.title }}</span>\n <span [innerHtml]=\"data.message\" *ngIf=\"data.message\"></span>\n</nice-alert>\n", styles: [".message-box{background-color:transparent!important;box-shadow:none!important}\n"], components: [{ type: i2.NiceAlertComponent, selector: "nice-alert", inputs: ["appearance", "dismissed", "dismissible", "disableAnimation", "name", "showIcon", "type"], outputs: ["dismissedChanged"], exportAs: ["niceAlert"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
17
+ NiceToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: NiceToastComponent, selector: "nice-toast", ngImport: i0, template: "<nice-alert disableAnimation [type]=\"data.type\" [appearance]=\"data.appearance || 'outline'\" (click)=\"dismiss()\">\n <span niceAlertTitle *ngIf=\"data.title\">{{ data.title }}</span>\n <span [innerHtml]=\"data.message\" *ngIf=\"data.message\"></span>\n</nice-alert>\n", styles: [".message-box{background-color:transparent!important;box-shadow:none!important}\n"], components: [{ type: i2.NiceAlertComponent, selector: "nice-alert", inputs: ["appearance", "dismissed", "dismissible", "disableAnimation", "name", "showIcon", "type", "color"], outputs: ["dismissedChanged"], exportAs: ["niceAlert"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceToastComponent, decorators: [{
19
19
  type: Component,
20
20
  args: [{ selector: "nice-toast", encapsulation: ViewEncapsulation.None, template: "<nice-alert disableAnimation [type]=\"data.type\" [appearance]=\"data.appearance || 'outline'\" (click)=\"dismiss()\">\n <span niceAlertTitle *ngIf=\"data.title\">{{ data.title }}</span>\n <span [innerHtml]=\"data.message\" *ngIf=\"data.message\"></span>\n</nice-alert>\n", styles: [".message-box{background-color:transparent!important;box-shadow:none!important}\n"] }]
@@ -0,0 +1,39 @@
1
+ import { Directive, ElementRef, EventEmitter, Output, } from "@angular/core";
2
+ import { Subject } from "rxjs";
3
+ import { filter, takeUntil } from "rxjs/operators";
4
+ import { NiceAsyncTypeaheadComponent } from "../../components";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../components";
7
+ export class NiceChipAsyncTypeaheadDirective {
8
+ constructor(typeahead, elementRef) {
9
+ this.typeahead = typeahead;
10
+ this.elementRef = elementRef;
11
+ this.niceChipAsyncTypeaheadTokenEnd = new EventEmitter();
12
+ this.unsubscribeAll$ = new Subject();
13
+ }
14
+ ngOnInit() {
15
+ this.typeahead.selected
16
+ .pipe(takeUntil(this.unsubscribeAll$), filter((selected) => selected))
17
+ .subscribe((_) => {
18
+ this.niceChipAsyncTypeaheadTokenEnd.emit(this.typeahead.getActive());
19
+ this.typeahead.writeValue(null);
20
+ });
21
+ this.elementRef.nativeElement.classList.add("nice-chip-async-typeahead");
22
+ }
23
+ ngOnDestroy() {
24
+ this.unsubscribeAll$.next(null);
25
+ this.unsubscribeAll$.complete();
26
+ }
27
+ }
28
+ NiceChipAsyncTypeaheadDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceChipAsyncTypeaheadDirective, deps: [{ token: i1.NiceAsyncTypeaheadComponent }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
29
+ NiceChipAsyncTypeaheadDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: NiceChipAsyncTypeaheadDirective, selector: "[niceChipAsyncTypeahead]", outputs: { niceChipAsyncTypeaheadTokenEnd: "niceChipAsyncTypeaheadTokenEnd" }, exportAs: ["niceChipAsyncTypeahead"], ngImport: i0 });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: NiceChipAsyncTypeaheadDirective, decorators: [{
31
+ type: Directive,
32
+ args: [{
33
+ selector: "[niceChipAsyncTypeahead]",
34
+ exportAs: "niceChipAsyncTypeahead",
35
+ }]
36
+ }], ctorParameters: function () { return [{ type: i1.NiceAsyncTypeaheadComponent }, { type: i0.ElementRef }]; }, propDecorators: { niceChipAsyncTypeaheadTokenEnd: [{
37
+ type: Output
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1hc3luYy10eXBlYWhlYWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9kaXJlY3RpdmVzL2NoaXAtYXN5bmMtdHlwZWFoZWFkL2NoaXAtYXN5bmMtdHlwZWFoZWFkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQXFCLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQU0vRCxNQUFNLE9BQU8sK0JBQStCO0lBTXhDLFlBQ1ksU0FBc0MsRUFDdEMsVUFBbUM7UUFEbkMsY0FBUyxHQUFULFNBQVMsQ0FBNkI7UUFDdEMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFOeEMsbUNBQThCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV4RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFNeEMsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7YUFDbEIsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQy9CLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ2pDO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVQLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7NEhBN0JRLCtCQUErQjtnSEFBL0IsK0JBQStCOzJGQUEvQiwrQkFBK0I7a0JBSjNDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsUUFBUSxFQUFFLHdCQUF3QjtpQkFDckM7MklBR1UsOEJBQThCO3NCQURwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltuaWNlQ2hpcEFzeW5jVHlwZWFoZWFkXVwiLFxuICAgIGV4cG9ydEFzOiBcIm5pY2VDaGlwQXN5bmNUeXBlYWhlYWRcIixcbn0pXG5leHBvcnQgY2xhc3MgTmljZUNoaXBBc3luY1R5cGVhaGVhZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbmljZUNoaXBBc3luY1R5cGVhaGVhZFRva2VuRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0eXBlYWhlYWQ6IE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuc2VsZWN0ZWRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlQWxsJCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChzZWxlY3RlZCkgPT4gc2VsZWN0ZWQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uaWNlQ2hpcEFzeW5jVHlwZWFoZWFkVG9rZW5FbmQuZW1pdCh0aGlzLnR5cGVhaGVhZC5nZXRBY3RpdmUoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy50eXBlYWhlYWQud3JpdGVWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJuaWNlLWNoaXAtYXN5bmMtdHlwZWFoZWFkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUFsbCQubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUFsbCQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=