@progress-chef/platform-shared-components 0.0.157 → 0.0.159

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.
@@ -16,6 +16,7 @@ export class TextboxComponent {
16
16
  this.showPassword = false;
17
17
  this.showEyeIcon = false;
18
18
  this.clearButton = true;
19
+ this.isSearchBox = false;
19
20
  this.placeholder = '';
20
21
  this.width = '300';
21
22
  this.isDisabled = false;
@@ -25,7 +26,7 @@ export class TextboxComponent {
25
26
  this.fillMode = "outline";
26
27
  this.control = new FormControl();
27
28
  this.value = '';
28
- this.type = '';
29
+ this.type = 'text';
29
30
  this.showError = false;
30
31
  this.errorMessage = "Error";
31
32
  this.focus = false;
@@ -33,6 +34,7 @@ export class TextboxComponent {
33
34
  this.inputChange = new EventEmitter();
34
35
  this.focusEvent = new EventEmitter();
35
36
  this.blurEvent = new EventEmitter();
37
+ this.searchClick = new EventEmitter();
36
38
  }
37
39
  ngOnChanges(changes) {
38
40
  if (changes['isDisabled']) {
@@ -71,12 +73,20 @@ export class TextboxComponent {
71
73
  onBlur() {
72
74
  this.blurEvent.emit();
73
75
  }
76
+ onKeyDown() {
77
+ if (this.isSearchBox) {
78
+ this.searchClick.emit();
79
+ }
80
+ }
81
+ onSearchClick() {
82
+ this.searchClick.emit();
83
+ }
74
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TextboxComponent, deps: [{ token: i1.ThemesService }], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.18", type: TextboxComponent, isStandalone: true, selector: "lib-textbox", inputs: { showEyeIcon: ["showEyeIcon", "showEyeIcon", (value) => value === true || value === 'true'], clearButton: ["clearButton", "clearButton", (value) => value === true || value === 'true'], placeholder: "placeholder", width: ["width", "width", (value) => {
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.18", type: TextboxComponent, isStandalone: true, selector: "lib-textbox", inputs: { showEyeIcon: ["showEyeIcon", "showEyeIcon", (value) => value === true || value === 'true'], clearButton: ["clearButton", "clearButton", (value) => value === true || value === 'true'], isSearchBox: ["isSearchBox", "isSearchBox", (value) => value === true || value === 'true'], placeholder: "placeholder", width: ["width", "width", (value) => {
76
86
  if (value === undefined || value === null)
77
87
  return '300';
78
88
  return typeof value === 'string' ? (isNaN(Number(value)) ? value : Number(value)) : value;
79
- }], isDisabled: ["isDisabled", "isDisabled", (value) => value === true || value === 'true'], readonly: ["readonly", "readonly", (value) => value === true || value === 'true'], size: "size", rounded: "rounded", fillMode: "fillMode", control: "control", value: "value", type: "type", showError: ["showError", "showError", (value) => value === true || value === 'true'], errorMessage: "errorMessage", focus: "focus", model: "model" }, outputs: { modelChange: "modelChange", inputChange: "inputChange", focusEvent: "focusEvent", blurEvent: "blurEvent" }, viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textbox"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div title=\"{{isDisabled ? value : ''}}\">\n <kendo-textbox #textbox [style.width.px]=\"width\" [placeholder]=\"placeholder\" [clearButton]=\"clearButton\"\n [fillMode]=\"fillMode\" [readonly]=\"readonly\" [size]=\"size\" [rounded]=\"rounded\" [formControl]=\"control\"\n [(ngModel)]=\"value\" (ngModelChange)=\"emitValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\n <ng-template *ngIf=\"this.type === 'password' && showEyeIcon\" kendoTextBoxSuffixTemplate>\n <lib-icon name=\"eye-open\" (click)=\"toggleVisibility()\" *ngIf=\"showPassword\"></lib-icon>\n <lib-icon name=\"eye-closed\" (click)=\"toggleVisibility()\" *ngIf=\"!showPassword\"></lib-icon>\n </ng-template>\n </kendo-textbox>\n <div *ngIf=\"showError\">\n <lib-typography [defaultText]=\"errorMessage\" class=\"error-text\" />\n </div>\n</div>\n", styles: ["kendo-textbox lib-icon{padding:7px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: InputsModule }, { kind: "component", type: i2.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: i2.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: ["showSeparator"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TypographyComponent, selector: "lib-typography", inputs: ["type", "defaultText", "isLabel", "hiddenLabel"] }, { kind: "component", type: IconComponent, selector: "lib-icon", inputs: ["name", "projectedIcon", "fontSize", "type"] }] }); }
89
+ }], isDisabled: ["isDisabled", "isDisabled", (value) => value === true || value === 'true'], readonly: ["readonly", "readonly", (value) => value === true || value === 'true'], size: "size", rounded: "rounded", fillMode: "fillMode", control: "control", value: "value", type: "type", showError: ["showError", "showError", (value) => value === true || value === 'true'], errorMessage: "errorMessage", focus: "focus", model: "model" }, outputs: { modelChange: "modelChange", inputChange: "inputChange", focusEvent: "focusEvent", blurEvent: "blurEvent", searchClick: "searchClick" }, viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textbox"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div title=\"{{isDisabled ? value : ''}}\">\n <kendo-textbox #textbox [style.width.px]=\"width\" [placeholder]=\"placeholder\" [clearButton]=\"clearButton\"\n [fillMode]=\"fillMode\" [readonly]=\"readonly\" [size]=\"size\" [rounded]=\"rounded\" [formControl]=\"control\"\n [(ngModel)]=\"value\" (ngModelChange)=\"emitValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n (keydown.enter)=\"onKeyDown()\">\n\n <!-- Password visibility toggle -->\n <ng-template *ngIf=\"type === 'password' && showEyeIcon && !isSearchBox\" kendoTextBoxSuffixTemplate>\n <lib-icon name=\"eye-open\" class=\"password\" (click)=\"toggleVisibility()\" *ngIf=\"showPassword\"></lib-icon>\n <lib-icon name=\"eye-closed\" class=\"password\" (click)=\"toggleVisibility()\" *ngIf=\"!showPassword\"></lib-icon>\n </ng-template>\n <ng-template *ngIf=\"isSearchBox\" kendoTextBoxSuffixTemplate>\n <div class=\"search-divider search-divider-{{size}} search-divider-{{fillMode}}\"></div>\n <lib-icon name=\"search\" fontSize=\"14\" class=\"search-icon\" (click)=\"onSearchClick()\"></lib-icon>\n </ng-template>\n </kendo-textbox>\n <div *ngIf=\"showError\">\n <lib-typography [defaultText]=\"errorMessage\" class=\"error-text\" />\n </div>\n</div>\n", styles: ["kendo-textbox lib-icon.password{padding-right:7px;margin-top:.1rem}kendo-textbox lib-icon{cursor:pointer}.search-divider{width:.055rem;background-color:var(--search-divider-color, #6F7A85);height:var(--search-divider-height, 2.25rem)}.search-divider-solid,.search-divider-flat{--search-divider-color: #CACED2}.search-divider-outline{--search-divider-color: #6F7A85}.search-divider-none{--search-divider-color: #374247}.search-divider-small{--search-divider-height: 1.75rem}.search-divider-medium{--search-divider-height: 2.25rem}.search-divider-large{--search-divider-height: 2.5rem}.search-icon{color:#374247;margin-left:.65rem;margin-right:.65rem;margin-top:.1rem}\n"], dependencies: [{ kind: "ngmodule", type: InputsModule }, { kind: "component", type: i2.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: i2.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: ["showSeparator"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TypographyComponent, selector: "lib-typography", inputs: ["type", "defaultText", "isLabel", "hiddenLabel"] }, { kind: "component", type: IconComponent, selector: "lib-icon", inputs: ["name", "projectedIcon", "fontSize", "type"] }] }); }
80
90
  }
81
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TextboxComponent, decorators: [{
82
92
  type: Component,
@@ -87,7 +97,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
87
97
  CommonModule,
88
98
  TypographyComponent,
89
99
  IconComponent
90
- ], template: "<div title=\"{{isDisabled ? value : ''}}\">\n <kendo-textbox #textbox [style.width.px]=\"width\" [placeholder]=\"placeholder\" [clearButton]=\"clearButton\"\n [fillMode]=\"fillMode\" [readonly]=\"readonly\" [size]=\"size\" [rounded]=\"rounded\" [formControl]=\"control\"\n [(ngModel)]=\"value\" (ngModelChange)=\"emitValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\">\n <ng-template *ngIf=\"this.type === 'password' && showEyeIcon\" kendoTextBoxSuffixTemplate>\n <lib-icon name=\"eye-open\" (click)=\"toggleVisibility()\" *ngIf=\"showPassword\"></lib-icon>\n <lib-icon name=\"eye-closed\" (click)=\"toggleVisibility()\" *ngIf=\"!showPassword\"></lib-icon>\n </ng-template>\n </kendo-textbox>\n <div *ngIf=\"showError\">\n <lib-typography [defaultText]=\"errorMessage\" class=\"error-text\" />\n </div>\n</div>\n", styles: ["kendo-textbox lib-icon{padding:7px;cursor:pointer}\n"] }]
100
+ ], template: "<div title=\"{{isDisabled ? value : ''}}\">\n <kendo-textbox #textbox [style.width.px]=\"width\" [placeholder]=\"placeholder\" [clearButton]=\"clearButton\"\n [fillMode]=\"fillMode\" [readonly]=\"readonly\" [size]=\"size\" [rounded]=\"rounded\" [formControl]=\"control\"\n [(ngModel)]=\"value\" (ngModelChange)=\"emitValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n (keydown.enter)=\"onKeyDown()\">\n\n <!-- Password visibility toggle -->\n <ng-template *ngIf=\"type === 'password' && showEyeIcon && !isSearchBox\" kendoTextBoxSuffixTemplate>\n <lib-icon name=\"eye-open\" class=\"password\" (click)=\"toggleVisibility()\" *ngIf=\"showPassword\"></lib-icon>\n <lib-icon name=\"eye-closed\" class=\"password\" (click)=\"toggleVisibility()\" *ngIf=\"!showPassword\"></lib-icon>\n </ng-template>\n <ng-template *ngIf=\"isSearchBox\" kendoTextBoxSuffixTemplate>\n <div class=\"search-divider search-divider-{{size}} search-divider-{{fillMode}}\"></div>\n <lib-icon name=\"search\" fontSize=\"14\" class=\"search-icon\" (click)=\"onSearchClick()\"></lib-icon>\n </ng-template>\n </kendo-textbox>\n <div *ngIf=\"showError\">\n <lib-typography [defaultText]=\"errorMessage\" class=\"error-text\" />\n </div>\n</div>\n", styles: ["kendo-textbox lib-icon.password{padding-right:7px;margin-top:.1rem}kendo-textbox lib-icon{cursor:pointer}.search-divider{width:.055rem;background-color:var(--search-divider-color, #6F7A85);height:var(--search-divider-height, 2.25rem)}.search-divider-solid,.search-divider-flat{--search-divider-color: #CACED2}.search-divider-outline{--search-divider-color: #6F7A85}.search-divider-none{--search-divider-color: #374247}.search-divider-small{--search-divider-height: 1.75rem}.search-divider-medium{--search-divider-height: 2.25rem}.search-divider-large{--search-divider-height: 2.5rem}.search-icon{color:#374247;margin-left:.65rem;margin-right:.65rem;margin-top:.1rem}\n"] }]
91
101
  }], ctorParameters: () => [{ type: i1.ThemesService }], propDecorators: { textbox: [{
92
102
  type: ViewChild,
93
103
  args: ['textbox', { static: false }]
@@ -97,6 +107,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
97
107
  }], clearButton: [{
98
108
  type: Input,
99
109
  args: [{ transform: (value) => value === true || value === 'true' }]
110
+ }], isSearchBox: [{
111
+ type: Input,
112
+ args: [{ transform: (value) => value === true || value === 'true' }]
100
113
  }], placeholder: [{
101
114
  type: Input
102
115
  }], width: [{
@@ -141,5 +154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
141
154
  type: Output
142
155
  }], blurEvent: [{
143
156
  type: Output
157
+ }], searchClick: [{
158
+ type: Output
144
159
  }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9hdG9tcy90ZXh0Ym94L3RleHRib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvYXRvbXMvdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFtQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQWlCdkQsTUFBTSxPQUFPLGdCQUFnQjtJQTZCM0IsWUFBb0IsYUFBMkI7UUFBM0Isa0JBQWEsR0FBYixhQUFhLENBQWM7UUExQi9DLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRXlELGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzFHLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBSTdCLFVBQUssR0FBb0IsS0FBSyxDQUFDO1FBQ21ELGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUN4RyxTQUFJLEdBQWlDLFFBQVEsQ0FBQztR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T0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQzVGLENBQUMsRUFBRTtnQkFDb0YsVUFBVTtzQkFBaEcsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtnQkFDRSxRQUFRO3NCQUE5RixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUM1RSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ2lGLFNBQVM7c0JBQS9GLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUF1QixFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7Z0JBQzVFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGhlbWVzU2VydmljZSB9IGZyb20gJ0Bwcm9ncmVzcy1jaGVmL3BsYXRmb3JtLXRoZW1lcy1zZXJ2aWNlJztcbmltcG9ydCB7IFRleHRCb3hDb21wb25lbnQgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1pbnB1dHMnO1xuaW1wb3J0IHsgSW5wdXRzTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItaW5wdXRzJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFR5cG9ncmFwaHlDb21wb25lbnQgfSBmcm9tICcuLi90eXBvZ3JhcGh5L3R5cG9ncmFwaHkuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnbGliLXRleHRib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHRib3guY29tcG9uZW50LnNjc3MnXVxuLFxuICBpbXBvcnRzOiBbXG4gICAgSW5wdXRzTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFR5cG9ncmFwaHlDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRleHRib3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCd0ZXh0Ym94JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyB0ZXh0Ym94ITogVGV4dEJveENvbXBvbmVudDtcbiAgc2hvd1Bhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpID0+IHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZScgfSkgc2hvd0V5ZUljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpID0+IHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZScgfSkgY2xlYXJCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpID0+IHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICczMDAnO1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gKGlzTmFOKE51bWJlcih2YWx1ZSkpID8gdmFsdWUgOiBOdW1iZXIodmFsdWUpKSA6IHZhbHVlO1xuICB9IH0pIHdpZHRoOiBzdHJpbmcgfCBudW1iZXIgPSAnMzAwJztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpID0+IHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZScgfSkgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykgPT4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJyB9KSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaXplOiBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiID0gXCJtZWRpdW1cIjtcbiAgQElucHV0KCkgcm91bmRlZDogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIiB8IFwiZnVsbFwiIHwgXCJub25lXCIgPSBcIm1lZGl1bVwiO1xuICBASW5wdXQoKSBmaWxsTW9kZTogXCJzb2xpZFwiIHwgXCJmbGF0XCIgfCBcIm91dGxpbmVcIiB8IFwibm9uZVwiID0gXCJvdXRsaW5lXCI7XG4gIEBJbnB1dCgpIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gICcnO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykgPT4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09ICd0cnVlJyB9KSBzaG93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBcIkVycm9yXCJcbiAgQElucHV0KCkgZm9jdXMgPSBmYWxzZTtcbiAgQElucHV0KCkgbW9kZWwhOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBibHVyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0aGVtZXNTZXJ2aWNlOlRoZW1lc1NlcnZpY2UpIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpe1xuICAgIGlmKGNoYW5nZXNbJ2lzRGlzYWJsZWQnXSkge1xuICAgICAgaWYoY2hhbmdlc1snaXNEaXNhYmxlZCddPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGV4dGJveC5pbnB1dC5uYXRpdmVFbGVtZW50LnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgaWYgKHRoaXMuZm9jdXMpIHtcbiAgICAgIHRoaXMudGV4dGJveC5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZVZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy50ZXh0Ym94LmlucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGlucHV0RWxlbWVudC50eXBlID09PSBcInBhc3N3b3JkXCIpIHtcbiAgICAgIGlucHV0RWxlbWVudC50eXBlID0gXCJ0ZXh0XCI7XG4gICAgICB0aGlzLnNob3dQYXNzd29yZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0RWxlbWVudC50eXBlID0gXCJwYXNzd29yZFwiO1xuICAgICAgdGhpcy5zaG93UGFzc3dvcmQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBlbWl0VmFsdWVDaGFuZ2UoZXY6IHN0cmluZykge1xuICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdChldik7XG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KGV2KTtcbiAgfVxuXG4gIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5mb2N1c0V2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLmJsdXJFdmVudC5lbWl0KCk7XG4gIH1cblxufVxuIiwiPGRpdiB0aXRsZT1cInt7aXNEaXNhYmxlZCA/IHZhbHVlIDogJyd9fVwiPlxuICA8a2VuZG8tdGV4dGJveCAjdGV4dGJveCBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbY2xlYXJCdXR0b25dPVwiY2xlYXJCdXR0b25cIlxuICAgIFtmaWxsTW9kZV09XCJmaWxsTW9kZVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtzaXplXT1cInNpemVcIiBbcm91bmRlZF09XCJyb3VuZGVkXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJlbWl0VmFsdWVDaGFuZ2UoJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiBzaG93RXllSWNvblwiIGtlbmRvVGV4dEJveFN1ZmZpeFRlbXBsYXRlPlxuICAgICAgPGxpYi1pY29uIG5hbWU9XCJleWUtb3BlblwiIChjbGljayk9XCJ0b2dnbGVWaXNpYmlsaXR5KClcIiAqbmdJZj1cInNob3dQYXNzd29yZFwiPjwvbGliLWljb24+XG4gICAgICA8bGliLWljb24gbmFtZT1cImV5ZS1jbG9zZWRcIiAoY2xpY2spPVwidG9nZ2xlVmlzaWJpbGl0eSgpXCIgKm5nSWY9XCIhc2hvd1Bhc3N3b3JkXCI+PC9saWItaWNvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2tlbmRvLXRleHRib3g+XG4gIDxkaXYgKm5nSWY9XCJzaG93RXJyb3JcIj5cbiAgICA8bGliLXR5cG9ncmFwaHkgW2RlZmF1bHRUZXh0XT1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwiZXJyb3ItdGV4dFwiIC8+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9hdG9tcy90ZXh0Ym94L3RleHRib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvYXRvbXMvdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFtQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQWdCdkQsTUFBTSxPQUFPLGdCQUFnQjtJQStCM0IsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1QmhELGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRXlELGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzNHLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBSTdCLFVBQUssR0FBb0IsS0FBSyxDQUFDO1FBQ21ELGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFZLEtBQUssQ0FBQztR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S0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNpRixTQUFTO3NCQUEvRixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUM1RSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGhlbWVzU2VydmljZSB9IGZyb20gJ0Bwcm9ncmVzcy1jaGVmL3BsYXRmb3JtLXRoZW1lcy1zZXJ2aWNlJztcbmltcG9ydCB7IFRleHRCb3hDb21wb25lbnQgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1pbnB1dHMnO1xuaW1wb3J0IHsgSW5wdXRzTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItaW5wdXRzJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFR5cG9ncmFwaHlDb21wb25lbnQgfSBmcm9tICcuLi90eXBvZ3JhcGh5L3R5cG9ncmFwaHkuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnbGliLXRleHRib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHRib3guY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIElucHV0c01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUeXBvZ3JhcGh5Q29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0Ym94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgndGV4dGJveCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgdGV4dGJveCE6IFRleHRCb3hDb21wb25lbnQ7XG4gIHNob3dQYXNzd29yZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSA9PiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnIH0pIHNob3dFeWVJY29uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSA9PiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnIH0pIGNsZWFyQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpID0+IHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZScgfSkgaXNTZWFyY2hCb3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiAnMzAwJztcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IChpc05hTihOdW1iZXIodmFsdWUpKSA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKSkgOiB2YWx1ZTtcbiAgfSB9KSB3aWR0aDogc3RyaW5nIHwgbnVtYmVyID0gJzMwMCc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSA9PiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnIH0pIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpID0+IHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSAndHJ1ZScgfSkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIiA9IFwibWVkaXVtXCI7XG4gIEBJbnB1dCgpIHJvdW5kZWQ6IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCIgfCBcImZ1bGxcIiB8IFwibm9uZVwiID0gXCJtZWRpdW1cIjtcbiAgQElucHV0KCkgZmlsbE1vZGU6IFwic29saWRcIiB8IFwiZmxhdFwiIHwgXCJvdXRsaW5lXCIgfCBcIm5vbmVcIiA9IFwib3V0bGluZVwiO1xuICBASW5wdXQoKSBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICAndGV4dCc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSA9PiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gJ3RydWUnIH0pIHNob3dFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IFwiRXJyb3JcIlxuICBASW5wdXQoKSBmb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSBtb2RlbCE6IHN0cmluZztcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZm9jdXNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGJsdXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlYXJjaENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGhlbWVzU2VydmljZTogVGhlbWVzU2VydmljZSkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpc0Rpc2FibGVkJ10pIHtcbiAgICAgIGlmIChjaGFuZ2VzWydpc0Rpc2FibGVkJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0Ym94LmlucHV0Lm5hdGl2ZUVsZW1lbnQudHlwZSA9IHRoaXMudHlwZTtcbiAgICBpZiAodGhpcy5mb2N1cykge1xuICAgICAgdGhpcy50ZXh0Ym94LmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLnRleHRib3guaW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoaW5wdXRFbGVtZW50LnR5cGUgPT09IFwicGFzc3dvcmRcIikge1xuICAgICAgaW5wdXRFbGVtZW50LnR5cGUgPSBcInRleHRcIjtcbiAgICAgIHRoaXMuc2hvd1Bhc3N3b3JkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRFbGVtZW50LnR5cGUgPSBcInBhc3N3b3JkXCI7XG4gICAgICB0aGlzLnNob3dQYXNzd29yZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGVtaXRWYWx1ZUNoYW5nZShldjogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KGV2KTtcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoZXYpO1xuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICB0aGlzLmZvY3VzRXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMuYmx1ckV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIG9uS2V5RG93bigpIHtcbiAgICBpZiAodGhpcy5pc1NlYXJjaEJveCkge1xuICAgICAgdGhpcy5zZWFyY2hDbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2hDbGljaygpIHtcbiAgICB0aGlzLnNlYXJjaENsaWNrLmVtaXQoKTtcbiAgfVxuXG59XG4iLCI8ZGl2IHRpdGxlPVwie3tpc0Rpc2FibGVkID8gdmFsdWUgOiAnJ319XCI+XG4gIDxrZW5kby10ZXh0Ym94ICN0ZXh0Ym94IFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtjbGVhckJ1dHRvbl09XCJjbGVhckJ1dHRvblwiXG4gICAgW2ZpbGxNb2RlXT1cImZpbGxNb2RlXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW3NpemVdPVwic2l6ZVwiIFtyb3VuZGVkXT1cInJvdW5kZWRcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cImVtaXRWYWx1ZUNoYW5nZSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJvbktleURvd24oKVwiPlxuXG4gICAgPCEtLSBQYXNzd29yZCB2aXNpYmlsaXR5IHRvZ2dsZSAtLT5cbiAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0eXBlID09PSAncGFzc3dvcmQnICYmIHNob3dFeWVJY29uICYmICFpc1NlYXJjaEJveFwiIGtlbmRvVGV4dEJveFN1ZmZpeFRlbXBsYXRlPlxuICAgICAgPGxpYi1pY29uIG5hbWU9XCJleWUtb3BlblwiIGNsYXNzPVwicGFzc3dvcmRcIiAoY2xpY2spPVwidG9nZ2xlVmlzaWJpbGl0eSgpXCIgKm5nSWY9XCJzaG93UGFzc3dvcmRcIj48L2xpYi1pY29uPlxuICAgICAgPGxpYi1pY29uIG5hbWU9XCJleWUtY2xvc2VkXCIgY2xhc3M9XCJwYXNzd29yZFwiIChjbGljayk9XCJ0b2dnbGVWaXNpYmlsaXR5KClcIiAqbmdJZj1cIiFzaG93UGFzc3dvcmRcIj48L2xpYi1pY29uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNTZWFyY2hCb3hcIiBrZW5kb1RleHRCb3hTdWZmaXhUZW1wbGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtZGl2aWRlciBzZWFyY2gtZGl2aWRlci17e3NpemV9fSBzZWFyY2gtZGl2aWRlci17e2ZpbGxNb2RlfX1cIj48L2Rpdj5cbiAgICAgIDxsaWItaWNvbiBuYW1lPVwic2VhcmNoXCIgZm9udFNpemU9XCIxNFwiIGNsYXNzPVwic2VhcmNoLWljb25cIiAoY2xpY2spPVwib25TZWFyY2hDbGljaygpXCI+PC9saWItaWNvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2tlbmRvLXRleHRib3g+XG4gIDxkaXYgKm5nSWY9XCJzaG93RXJyb3JcIj5cbiAgICA8bGliLXR5cG9ncmFwaHkgW2RlZmF1bHRUZXh0XT1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwiZXJyb3ItdGV4dFwiIC8+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=