@alfresco/adf-core 8.1.0-15782677066 → 8.1.0-15845587958

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.
@@ -33,6 +33,8 @@ import { MatFormFieldModule } from '@angular/material/form-field';
33
33
  import { MatDatepickerModule } from '@angular/material/datepicker';
34
34
  import { MatSnackBarModule } from '@angular/material/snack-bar';
35
35
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
36
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
37
+ import { MatInputModule } from '@angular/material/input';
36
38
  import * as i0 from "@angular/core";
37
39
  import * as i1 from "@angular/material/core";
38
40
  import * as i2 from "../../../common/services/user-preferences.service";
@@ -43,7 +45,8 @@ import * as i6 from "@ngx-translate/core";
43
45
  import * as i7 from "@angular/material/icon";
44
46
  import * as i8 from "@mat-datetimepicker/core";
45
47
  import * as i9 from "@angular/material/chips";
46
- import * as i10 from "@angular/material/form-field";
48
+ import * as i10 from "@angular/material/input";
49
+ import * as i11 from "@angular/material/form-field";
47
50
  export class CardViewDateItemComponent extends BaseCardView {
48
51
  constructor(dateAdapter, userPreferencesService, clipboardService, translateService) {
49
52
  super();
@@ -53,6 +56,7 @@ export class CardViewDateItemComponent extends BaseCardView {
53
56
  this.translateService = translateService;
54
57
  this.displayEmpty = true;
55
58
  this.displayClearAction = true;
59
+ this.cardViewDateTimeControl = new FormControl(null);
56
60
  this.destroyRef = inject(DestroyRef);
57
61
  }
58
62
  ngOnInit() {
@@ -147,7 +151,7 @@ export class CardViewDateItemComponent extends BaseCardView {
147
151
  { provide: MAT_DATETIME_FORMATS, useValue: ADF_DATETIME_FORMATS },
148
152
  { provide: DateAdapter, useClass: AdfDateFnsAdapter },
149
153
  { provide: DatetimeAdapter, useClass: AdfDateTimeFnsAdapter }
150
- ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datetimePicker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<label\n class=\"adf-property-label\"\n [attr.data-automation-id]=\"'card-dateitem-label-' + property.key\"\n *ngIf=\"showProperty || isEditable\"\n [attr.for]=\"'card-view-dateitem-' + property.key\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty, 'adf-property-value-editable': editable }\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n>\n {{ property.label | translate }}\n</label>\n<div class=\"adf-property-value\" [ngClass]=\"{ 'adf-property-value-editable': editable, 'adf-property-readonly-value': isReadonlyProperty }\">\n <span *ngIf=\"!isEditable && !property.multivalued\" [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n <span\n *ngIf=\"showProperty\"\n [attr.data-automation-id]=\"'card-dateitem-' + property.key\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n >{{ property.displayValue }}</span\n >\n </span>\n <div *ngIf=\"isEditable && !property.multivalued\" class=\"adf-dateitem-editable\">\n <div class=\"adf-dateitem-editable-controls\">\n <span\n class=\"adf-datepicker-toggle\"\n [attr.data-automation-id]=\"'datepicker-label-toggle-' + property.key\"\n (click)=\"showDatePicker()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"showDatePicker()\"\n >\n <span *ngIf=\"showProperty; else elseEmptyValueBlock\" [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n {{ property.displayValue }}</span\n >\n </span>\n\n <mat-icon\n *ngIf=\"showClearAction\"\n class=\"adf-date-reset-icon\"\n (click)=\"onDateClear()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.CLEAR' | translate\"\n [attr.data-automation-id]=\"'datepicker-date-clear-' + property.key\"\n >\n clear\n </mat-icon>\n\n <mat-datetimepicker-toggle\n [attr.tabindex]=\"-1\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n [for]=\"datetimePicker\"\n />\n </div>\n\n <input\n class=\"adf-invisible-date-input\"\n [attr.tabIndex]=\"-1\"\n [matDatetimepicker]=\"datetimePicker\"\n [value]=\"valueDate\"\n (dateChange)=\"onDateChanged($event)\"\n [attr.id]=\"'card-view-dateitem-' + property.key\"\n />\n\n <mat-datetimepicker\n #datetimePicker\n [type]=\"$any(property).type\"\n [timeInterval]=\"5\"\n [attr.data-automation-id]=\"'datepicker-' + property.key\"\n [startAt]=\"valueDate\"\n />\n </div>\n <ng-template #elseEmptyValueBlock>\n {{ property.default | translate }}\n </ng-template>\n\n <div *ngIf=\"property.multivalued\"\n class=\"adf-property-field adf-dateitem-chip-list-container adf-dateitem-editable\">\n <mat-chip-listbox #chipList class=\"adf-textitem-chip-list\">\n <mat-chip-option\n *ngFor=\"let propertyValue of property.displayValue; let idx = index\"\n [removable]=\"isEditable\"\n (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-option>\n </mat-chip-listbox>\n\n <div\n *ngIf=\"isEditable\"\n class=\"adf-property-field adf-dateitem-editable-controls\"\n (click)=\"showDatePicker()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"showDatePicker()\"\n >\n <input\n class=\"adf-invisible-date-input\"\n [attr.tabIndex]=\"-1\"\n [matDatetimepicker]=\"datetimePicker\"\n (dateChange)=\"addDateToList($event)\"\n [attr.id]=\"'card-view-dateitem-' + property.key\"\n />\n <mat-datetimepicker-toggle\n [attr.tabindex]=\"-1\"\n matSuffix\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n [for]=\"datetimePicker\"\n />\n <mat-datetimepicker\n #datetimePicker\n [type]=\"$any(property).type\"\n [timeInterval]=\"5\"\n [attr.data-automation-id]=\"'datepicker-' + property.key\"\n [startAt]=\"valueDate\"\n />\n </div>\n </div>\n</div>\n", styles: [".adf-card-view-dateitem .adf-property-value{padding-top:6px;padding-bottom:6px;line-height:20px;color:var(--adf-metadata-property-panel-title-color);border-bottom:1px solid var(--adf-metadata-property-panel-border-color);margin-top:10px}.adf-card-view-dateitem .adf-property-value.adf-property-value-editable{display:flex;align-items:center;border-radius:6px;border-bottom:inherit;margin-bottom:18px}.adf-card-view-dateitem .adf-property-value.adf-property-readonly-value{padding:0 0 0 12px}.adf-card-view-dateitem .adf-invisible-date-input{height:2px;width:0;overflow:hidden;opacity:0;border:none;margin:0;padding:0;float:right}.adf-card-view-dateitem .adf-dateitem-chip-list-container.adf-property-field{margin-bottom:-7px;border-bottom:0;cursor:pointer}.adf-card-view-dateitem .adf-dateitem-editable{cursor:pointer;width:100%;padding:0 5px}.adf-card-view-dateitem .adf-dateitem-editable-controls{display:flex;align-items:center;justify-content:space-between}.adf-card-view-dateitem .adf-dateitem-editable-controls .mat-icon{opacity:.5}.adf-card-view-dateitem .adf-dateitem-editable-controls .mat-icon:hover{opacity:1}.adf-card-view-dateitem .adf-dateitem-editable-controls mat-datetimepicker-toggle{transform:scale(.8)}.adf-card-view-dateitem .adf-dateitem-editable-controls .adf-datepicker-toggle{flex:1 0 auto;font-size:14px}.adf-card-view-dateitem .adf-dateitem-editable-controls .adf-date-reset-icon{position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDatetimepickerModule }, { kind: "component", type: i8.MatDatetimepickerComponent, selector: "mat-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "startView", "mode", "timeInterval", "ariaNextMonthLabel", "ariaPrevMonthLabel", "ariaNextYearLabel", "ariaPrevYearLabel", "preventSameDateTimeSelection", "panelClass", "startAt", "openOnFocus", "type", "touchUi", "disabled"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["matDatetimepicker"] }, { kind: "component", type: i8.MatDatetimepickerToggleComponent, selector: "mat-datetimepicker-toggle", inputs: ["for", "disabled"], exportAs: ["matDatetimepickerToggle"] }, { kind: "directive", type: i8.MatDatetimepickerInputDirective, selector: "input[matDatetimepicker]", inputs: ["matDatetimepicker", "matDatepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i9.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i9.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i9.MatChipRemove, selector: "[matChipRemove]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i10.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatSnackBarModule }], encapsulation: i0.ViewEncapsulation.None }); }
154
+ ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datetimePicker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-label\n class=\"adf-property-label\"\n [attr.data-automation-id]=\"'card-dateitem-label-' + property.key\"\n *ngIf=\"showProperty && !isEditable\"\n [attr.for]=\"'card-view-dateitem-' + property.key\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty, 'adf-property-value-editable': editable }\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n>\n {{ property.label | translate }}\n</mat-label>\n\n<div class=\"adf-property-value\" [ngClass]=\"{ 'adf-property-value-editable': editable, 'adf-property-readonly-value': isReadonlyProperty }\">\n <span *ngIf=\"!isEditable && !property.multivalued\" [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n <span\n *ngIf=\"showProperty\"\n [attr.data-automation-id]=\"'card-dateitem-' + property.key\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n >{{ property.displayValue }}</span\n >\n </span>\n <mat-form-field *ngIf=\"isEditable && !property.multivalued\" class=\"adf-dateitem-editable hxp-input\">\n <mat-label\n class=\"adf-property-label\"\n [attr.data-automation-id]=\"'card-dateitem-label-' + property.key\"\n *ngIf=\"isEditable\"\n [attr.for]=\"'card-view-dateitem-' + property.key\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty, 'adf-property-value-editable': editable }\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n >\n {{ property.label | translate }}\n </mat-label>\n <div class=\"adf-dateitem-editable-controls\">\n <span\n class=\"adf-datepicker-span-button\"\n [attr.data-automation-id]=\"'datepicker-label-toggle-' + property.key\"\n (click)=\"showDatePicker()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"showDatePicker()\"\n >\n <span *ngIf=\"showProperty; else elseEmptyValueBlock\" [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n {{ property.displayValue }}</span\n >\n </span>\n </div>\n <input\n matInput\n class=\"adf-invisible-date-input\"\n [attr.tabIndex]=\"-1\"\n [matDatetimepicker]=\"datetimePicker\"\n [value]=\"valueDate\"\n (dateChange)=\"onDateChanged($event)\"\n [attr.id]=\"'card-view-dateitem-' + property.key\"\n />\n <mat-icon\n matIconSuffix\n *ngIf=\"showClearAction\"\n class=\"adf-date-reset-icon\"\n (click)=\"onDateClear()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.CLEAR' | translate\"\n [attr.data-automation-id]=\"'datepicker-date-clear-' + property.key\"\n >\n clear\n </mat-icon>\n <mat-datetimepicker-toggle\n matIconSuffix\n [attr.tabindex]=\"-1\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n [for]=\"datetimePicker\"\n />\n\n <mat-datetimepicker\n #datetimePicker\n [type]=\"$any(property).type\"\n [timeInterval]=\"5\"\n [attr.data-automation-id]=\"'datepicker-' + property.key\"\n [startAt]=\"valueDate\"\n />\n </mat-form-field>\n <ng-template #elseEmptyValueBlock>\n {{ property.default | translate }}\n </ng-template>\n\n <div *ngIf=\"property.multivalued\" class=\"adf-property-field adf-dateitem-chip-list-container adf-dateitem-editable\">\n <mat-chip-listbox #chipList class=\"adf-textitem-chip-list\">\n <mat-chip-option\n *ngFor=\"let propertyValue of property.displayValue; let idx = index\"\n [removable]=\"isEditable\"\n (removed)=\"removeValueFromList(idx)\"\n >\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-option>\n </mat-chip-listbox>\n\n <div\n *ngIf=\"isEditable\"\n class=\"adf-property-field adf-dateitem-editable-controls\"\n (click)=\"showDatePicker()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"showDatePicker()\"\n >\n <input\n class=\"adf-invisible-date-input\"\n [attr.tabIndex]=\"-1\"\n [matDatetimepicker]=\"datetimePicker\"\n (dateChange)=\"addDateToList($event)\"\n [attr.id]=\"'card-view-dateitem-' + property.key\"\n />\n <mat-datetimepicker-toggle\n [attr.tabindex]=\"-1\"\n matSuffix\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n [for]=\"datetimePicker\"\n />\n <mat-datetimepicker\n #datetimePicker\n [type]=\"$any(property).type\"\n [timeInterval]=\"5\"\n [attr.data-automation-id]=\"'datepicker-' + property.key\"\n [startAt]=\"valueDate\"\n />\n </div>\n </div>\n</div>\n", styles: [".adf-card-view-dateitem .adf-property-value{padding-top:6px;padding-bottom:6px;line-height:20px;color:var(--adf-metadata-property-panel-title-color);margin-top:10px}.adf-card-view-dateitem .adf-property-value.adf-property-value-editable{display:flex;align-items:center;border-radius:6px;border-bottom:inherit;margin-bottom:18px}.adf-card-view-dateitem .adf-property-value.adf-property-readonly-value{padding:0 0 0 12px}.adf-card-view-dateitem .adf-invisible-date-input{height:2px;width:0;overflow:hidden;opacity:0;border:none;margin:0;padding:0;float:right}.adf-card-view-dateitem .adf-dateitem-chip-list-container.adf-property-field{margin-bottom:-7px;border-bottom:0;cursor:pointer}.adf-card-view-dateitem .adf-dateitem-editable{cursor:pointer;width:100%}.adf-card-view-dateitem .adf-dateitem-editable-controls{display:flex;align-items:center;justify-content:space-between}.adf-card-view-dateitem .adf-dateitem-editable-controls .mat-icon{opacity:.5}.adf-card-view-dateitem .adf-dateitem-editable-controls .mat-icon:hover{opacity:1}.adf-card-view-dateitem .adf-dateitem-editable-controls mat-datetimepicker-toggle{transform:scale(.8)}.adf-card-view-dateitem .adf-dateitem-editable-controls .adf-datepicker-span-button{flex:1 0 auto;font-size:14px}.adf-card-view-dateitem .adf-dateitem-editable-controls .adf-date-reset-icon{position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDatetimepickerModule }, { kind: "component", type: i8.MatDatetimepickerComponent, selector: "mat-datetimepicker", inputs: ["multiYearSelector", "twelvehour", "startView", "mode", "timeInterval", "ariaNextMonthLabel", "ariaPrevMonthLabel", "ariaNextYearLabel", "ariaPrevYearLabel", "preventSameDateTimeSelection", "panelClass", "startAt", "openOnFocus", "type", "touchUi", "disabled"], outputs: ["selectedChanged", "opened", "closed", "viewChanged"], exportAs: ["matDatetimepicker"] }, { kind: "component", type: i8.MatDatetimepickerToggleComponent, selector: "mat-datetimepicker-toggle", inputs: ["for", "disabled"], exportAs: ["matDatetimepickerToggle"] }, { kind: "directive", type: i8.MatDatetimepickerInputDirective, selector: "input[matDatetimepicker]", inputs: ["matDatetimepicker", "matDatepickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i9.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i9.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i9.MatChipRemove, selector: "[matChipRemove]" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "directive", type: i11.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: ReactiveFormsModule }], encapsulation: i0.ViewEncapsulation.None }); }
151
155
  }
152
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardViewDateItemComponent, decorators: [{
153
157
  type: Component,
@@ -162,10 +166,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
162
166
  MatIconModule,
163
167
  MatDatetimepickerModule,
164
168
  MatChipsModule,
169
+ MatInputModule,
165
170
  MatFormFieldModule,
166
171
  MatDatepickerModule,
167
- MatSnackBarModule
168
- ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-dateitem' }, template: "<label\n class=\"adf-property-label\"\n [attr.data-automation-id]=\"'card-dateitem-label-' + property.key\"\n *ngIf=\"showProperty || isEditable\"\n [attr.for]=\"'card-view-dateitem-' + property.key\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty, 'adf-property-value-editable': editable }\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n>\n {{ property.label | translate }}\n</label>\n<div class=\"adf-property-value\" [ngClass]=\"{ 'adf-property-value-editable': editable, 'adf-property-readonly-value': isReadonlyProperty }\">\n <span *ngIf=\"!isEditable && !property.multivalued\" [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n <span\n *ngIf=\"showProperty\"\n [attr.data-automation-id]=\"'card-dateitem-' + property.key\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n >{{ property.displayValue }}</span\n >\n </span>\n <div *ngIf=\"isEditable && !property.multivalued\" class=\"adf-dateitem-editable\">\n <div class=\"adf-dateitem-editable-controls\">\n <span\n class=\"adf-datepicker-toggle\"\n [attr.data-automation-id]=\"'datepicker-label-toggle-' + property.key\"\n (click)=\"showDatePicker()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"showDatePicker()\"\n >\n <span *ngIf=\"showProperty; else elseEmptyValueBlock\" [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n {{ property.displayValue }}</span\n >\n </span>\n\n <mat-icon\n *ngIf=\"showClearAction\"\n class=\"adf-date-reset-icon\"\n (click)=\"onDateClear()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.CLEAR' | translate\"\n [attr.data-automation-id]=\"'datepicker-date-clear-' + property.key\"\n >\n clear\n </mat-icon>\n\n <mat-datetimepicker-toggle\n [attr.tabindex]=\"-1\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n [for]=\"datetimePicker\"\n />\n </div>\n\n <input\n class=\"adf-invisible-date-input\"\n [attr.tabIndex]=\"-1\"\n [matDatetimepicker]=\"datetimePicker\"\n [value]=\"valueDate\"\n (dateChange)=\"onDateChanged($event)\"\n [attr.id]=\"'card-view-dateitem-' + property.key\"\n />\n\n <mat-datetimepicker\n #datetimePicker\n [type]=\"$any(property).type\"\n [timeInterval]=\"5\"\n [attr.data-automation-id]=\"'datepicker-' + property.key\"\n [startAt]=\"valueDate\"\n />\n </div>\n <ng-template #elseEmptyValueBlock>\n {{ property.default | translate }}\n </ng-template>\n\n <div *ngIf=\"property.multivalued\"\n class=\"adf-property-field adf-dateitem-chip-list-container adf-dateitem-editable\">\n <mat-chip-listbox #chipList class=\"adf-textitem-chip-list\">\n <mat-chip-option\n *ngFor=\"let propertyValue of property.displayValue; let idx = index\"\n [removable]=\"isEditable\"\n (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-option>\n </mat-chip-listbox>\n\n <div\n *ngIf=\"isEditable\"\n class=\"adf-property-field adf-dateitem-editable-controls\"\n (click)=\"showDatePicker()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"showDatePicker()\"\n >\n <input\n class=\"adf-invisible-date-input\"\n [attr.tabIndex]=\"-1\"\n [matDatetimepicker]=\"datetimePicker\"\n (dateChange)=\"addDateToList($event)\"\n [attr.id]=\"'card-view-dateitem-' + property.key\"\n />\n <mat-datetimepicker-toggle\n [attr.tabindex]=\"-1\"\n matSuffix\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n [for]=\"datetimePicker\"\n />\n <mat-datetimepicker\n #datetimePicker\n [type]=\"$any(property).type\"\n [timeInterval]=\"5\"\n [attr.data-automation-id]=\"'datepicker-' + property.key\"\n [startAt]=\"valueDate\"\n />\n </div>\n </div>\n</div>\n", styles: [".adf-card-view-dateitem .adf-property-value{padding-top:6px;padding-bottom:6px;line-height:20px;color:var(--adf-metadata-property-panel-title-color);border-bottom:1px solid var(--adf-metadata-property-panel-border-color);margin-top:10px}.adf-card-view-dateitem .adf-property-value.adf-property-value-editable{display:flex;align-items:center;border-radius:6px;border-bottom:inherit;margin-bottom:18px}.adf-card-view-dateitem .adf-property-value.adf-property-readonly-value{padding:0 0 0 12px}.adf-card-view-dateitem .adf-invisible-date-input{height:2px;width:0;overflow:hidden;opacity:0;border:none;margin:0;padding:0;float:right}.adf-card-view-dateitem .adf-dateitem-chip-list-container.adf-property-field{margin-bottom:-7px;border-bottom:0;cursor:pointer}.adf-card-view-dateitem .adf-dateitem-editable{cursor:pointer;width:100%;padding:0 5px}.adf-card-view-dateitem .adf-dateitem-editable-controls{display:flex;align-items:center;justify-content:space-between}.adf-card-view-dateitem .adf-dateitem-editable-controls .mat-icon{opacity:.5}.adf-card-view-dateitem .adf-dateitem-editable-controls .mat-icon:hover{opacity:1}.adf-card-view-dateitem .adf-dateitem-editable-controls mat-datetimepicker-toggle{transform:scale(.8)}.adf-card-view-dateitem .adf-dateitem-editable-controls .adf-datepicker-toggle{flex:1 0 auto;font-size:14px}.adf-card-view-dateitem .adf-dateitem-editable-controls .adf-date-reset-icon{position:relative}\n"] }]
172
+ MatSnackBarModule,
173
+ ReactiveFormsModule
174
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-dateitem' }, template: "<mat-label\n class=\"adf-property-label\"\n [attr.data-automation-id]=\"'card-dateitem-label-' + property.key\"\n *ngIf=\"showProperty && !isEditable\"\n [attr.for]=\"'card-view-dateitem-' + property.key\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty, 'adf-property-value-editable': editable }\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n>\n {{ property.label | translate }}\n</mat-label>\n\n<div class=\"adf-property-value\" [ngClass]=\"{ 'adf-property-value-editable': editable, 'adf-property-readonly-value': isReadonlyProperty }\">\n <span *ngIf=\"!isEditable && !property.multivalued\" [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n <span\n *ngIf=\"showProperty\"\n [attr.data-automation-id]=\"'card-dateitem-' + property.key\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n >{{ property.displayValue }}</span\n >\n </span>\n <mat-form-field *ngIf=\"isEditable && !property.multivalued\" class=\"adf-dateitem-editable hxp-input\">\n <mat-label\n class=\"adf-property-label\"\n [attr.data-automation-id]=\"'card-dateitem-label-' + property.key\"\n *ngIf=\"isEditable\"\n [attr.for]=\"'card-view-dateitem-' + property.key\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty, 'adf-property-value-editable': editable }\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n >\n {{ property.label | translate }}\n </mat-label>\n <div class=\"adf-dateitem-editable-controls\">\n <span\n class=\"adf-datepicker-span-button\"\n [attr.data-automation-id]=\"'datepicker-label-toggle-' + property.key\"\n (click)=\"showDatePicker()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"showDatePicker()\"\n >\n <span *ngIf=\"showProperty; else elseEmptyValueBlock\" [attr.data-automation-id]=\"'card-' + property.type + '-value-' + property.key\">\n {{ property.displayValue }}</span\n >\n </span>\n </div>\n <input\n matInput\n class=\"adf-invisible-date-input\"\n [attr.tabIndex]=\"-1\"\n [matDatetimepicker]=\"datetimePicker\"\n [value]=\"valueDate\"\n (dateChange)=\"onDateChanged($event)\"\n [attr.id]=\"'card-view-dateitem-' + property.key\"\n />\n <mat-icon\n matIconSuffix\n *ngIf=\"showClearAction\"\n class=\"adf-date-reset-icon\"\n (click)=\"onDateClear()\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.CLEAR' | translate\"\n [attr.data-automation-id]=\"'datepicker-date-clear-' + property.key\"\n >\n clear\n </mat-icon>\n <mat-datetimepicker-toggle\n matIconSuffix\n [attr.tabindex]=\"-1\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n [for]=\"datetimePicker\"\n />\n\n <mat-datetimepicker\n #datetimePicker\n [type]=\"$any(property).type\"\n [timeInterval]=\"5\"\n [attr.data-automation-id]=\"'datepicker-' + property.key\"\n [startAt]=\"valueDate\"\n />\n </mat-form-field>\n <ng-template #elseEmptyValueBlock>\n {{ property.default | translate }}\n </ng-template>\n\n <div *ngIf=\"property.multivalued\" class=\"adf-property-field adf-dateitem-chip-list-container adf-dateitem-editable\">\n <mat-chip-listbox #chipList class=\"adf-textitem-chip-list\">\n <mat-chip-option\n *ngFor=\"let propertyValue of property.displayValue; let idx = index\"\n [removable]=\"isEditable\"\n (removed)=\"removeValueFromList(idx)\"\n >\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-option>\n </mat-chip-listbox>\n\n <div\n *ngIf=\"isEditable\"\n class=\"adf-property-field adf-dateitem-editable-controls\"\n (click)=\"showDatePicker()\"\n tabindex=\"0\"\n role=\"button\"\n (keyup.enter)=\"showDatePicker()\"\n >\n <input\n class=\"adf-invisible-date-input\"\n [attr.tabIndex]=\"-1\"\n [matDatetimepicker]=\"datetimePicker\"\n (dateChange)=\"addDateToList($event)\"\n [attr.id]=\"'card-view-dateitem-' + property.key\"\n />\n <mat-datetimepicker-toggle\n [attr.tabindex]=\"-1\"\n matSuffix\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'datepickertoggle-' + property.key\"\n [for]=\"datetimePicker\"\n />\n <mat-datetimepicker\n #datetimePicker\n [type]=\"$any(property).type\"\n [timeInterval]=\"5\"\n [attr.data-automation-id]=\"'datepicker-' + property.key\"\n [startAt]=\"valueDate\"\n />\n </div>\n </div>\n</div>\n", styles: [".adf-card-view-dateitem .adf-property-value{padding-top:6px;padding-bottom:6px;line-height:20px;color:var(--adf-metadata-property-panel-title-color);margin-top:10px}.adf-card-view-dateitem .adf-property-value.adf-property-value-editable{display:flex;align-items:center;border-radius:6px;border-bottom:inherit;margin-bottom:18px}.adf-card-view-dateitem .adf-property-value.adf-property-readonly-value{padding:0 0 0 12px}.adf-card-view-dateitem .adf-invisible-date-input{height:2px;width:0;overflow:hidden;opacity:0;border:none;margin:0;padding:0;float:right}.adf-card-view-dateitem .adf-dateitem-chip-list-container.adf-property-field{margin-bottom:-7px;border-bottom:0;cursor:pointer}.adf-card-view-dateitem .adf-dateitem-editable{cursor:pointer;width:100%}.adf-card-view-dateitem .adf-dateitem-editable-controls{display:flex;align-items:center;justify-content:space-between}.adf-card-view-dateitem .adf-dateitem-editable-controls .mat-icon{opacity:.5}.adf-card-view-dateitem .adf-dateitem-editable-controls .mat-icon:hover{opacity:1}.adf-card-view-dateitem .adf-dateitem-editable-controls mat-datetimepicker-toggle{transform:scale(.8)}.adf-card-view-dateitem .adf-dateitem-editable-controls .adf-datepicker-span-button{flex:1 0 auto;font-size:14px}.adf-card-view-dateitem .adf-dateitem-editable-controls .adf-date-reset-icon{position:relative}\n"] }]
169
175
  }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.UserPreferencesService }, { type: i3.ClipboardService }, { type: i4.TranslationService }], propDecorators: { displayEmpty: [{
170
176
  type: Input
171
177
  }], displayClearAction: [{
@@ -174,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
174
180
  type: ViewChild,
175
181
  args: ['datetimePicker']
176
182
  }] } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC12aWV3LWRhdGVpdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvY2FyZC12aWV3L2NvbXBvbmVudHMvY2FyZC12aWV3LWRhdGVpdGVtL2NhcmQtdmlldy1kYXRlaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2NhcmQtdmlldy9jb21wb25lbnRzL2NhcmQtdmlldy1kYXRlaXRlbS9jYXJkLXZpZXctZGF0ZWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUUxQix1QkFBdUIsRUFDMUIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekcs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RSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7WUFDakUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtZQUNyRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO1NBQ2hFLCtKQ2xETCw2NkpBc0hBLDQ4Q0RoRVEsWUFBWSw2VkFDWixlQUFlLDJGQUNmLGFBQWEsbUxBQ2IsdUJBQXVCLGc2QkFDdkIsY0FBYywwaEJBQ2Qsa0JBQWtCLGdLQUNsQixtQkFBbUIsOEJBQ25CLGlCQUFpQjs7NEZBT1oseUJBQXlCO2tCQXhCckMsU0FBUztnQ0FDSzt3QkFDUCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUU7d0JBQ3pELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTt3QkFDakUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTt3QkFDckQsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRTtxQkFDaEUsWUFDUyx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNwQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFO3FMQUl6QyxZQUFZO3NCQURYLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gICAgRGF0ZXRpbWVBZGFwdGVyLFxuICAgIE1BVF9EQVRFVElNRV9GT1JNQVRTLFxuICAgIE1hdERhdGV0aW1lcGlja2VyQ29tcG9uZW50LFxuICAgIE1hdERhdGV0aW1lcGlja2VySW5wdXRFdmVudCxcbiAgICBNYXREYXRldGltZXBpY2tlck1vZHVsZVxufSBmcm9tICdAbWF0LWRhdGV0aW1lcGlja2VyL2NvcmUnO1xuaW1wb3J0IHsgQ2FyZFZpZXdEYXRlSXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NhcmQtdmlldy1kYXRlaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZVZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZUNhcmRWaWV3IH0gZnJvbSAnLi4vYmFzZS1jYXJkLXZpZXcnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NsaXBib2FyZC9jbGlwYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFERl9EQVRFX0ZPUk1BVFMsIEFkZkRhdGVGbnNBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL2RhdGUtZm5zLWFkYXB0ZXInO1xuaW1wb3J0IHsgQURGX0RBVEVUSU1FX0ZPUk1BVFMsIEFkZkRhdGVUaW1lRm5zQWRhcHRlciB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlscy9kYXRldGltZS1mbnMtYWRhcHRlcic7XG5pbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgRGF0ZUZuc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL2RhdGUtZm5zLXV0aWxzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBBREZfREFURV9GT1JNQVRTIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVUSU1FX0ZPUk1BVFMsIHVzZVZhbHVlOiBBREZfREFURVRJTUVfRk9STUFUUyB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQWRmRGF0ZUZuc0FkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBEYXRldGltZUFkYXB0ZXIsIHVzZUNsYXNzOiBBZGZEYXRlVGltZUZuc0FkYXB0ZXIgfVxuICAgIF0sXG4gICAgc2VsZWN0b3I6ICdhZGYtY2FyZC12aWV3LWRhdGVpdGVtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE1hdERhdGV0aW1lcGlja2VyTW9kdWxlLFxuICAgICAgICBNYXRDaGlwc01vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgICAgICBNYXRTbmFja0Jhck1vZHVsZVxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtdmlldy1kYXRlaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FyZC12aWV3LWRhdGVpdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLWNhcmQtdmlldy1kYXRlaXRlbScgfVxufSlcbmV4cG9ydCBjbGFzcyBDYXJkVmlld0RhdGVJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNhcmRWaWV3PENhcmRWaWV3RGF0ZUl0ZW1Nb2RlbD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUVtcHR5ID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUNsZWFyQWN0aW9uID0gdHJ1ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2RhdGV0aW1lUGlja2VyJylcbiAgICBwdWJsaWMgZGF0ZXBpY2tlcjogTWF0RGF0ZXRpbWVwaWNrZXJDb21wb25lbnQ8YW55PjtcblxuICAgIHZhbHVlRGF0ZTogRGF0ZTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEYXRlPixcbiAgICAgICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZVxuICAgICAgICAgICAgLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5Mb2NhbGUpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHkubG9jYWxlID0gbG9jYWxlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgKHRoaXMuZGF0ZUFkYXB0ZXIgYXMgQWRmRGF0ZUZuc0FkYXB0ZXIpLmRpc3BsYXlGb3JtYXQgPSAnTU1NIEREJztcblxuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5tdWx0aXZhbHVlZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0TXVsdGl2YWx1ZWRQcm9wZXJ0eSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0U2luZ2xlVmFsdWVQcm9wZXJ0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHNob3dQcm9wZXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheUVtcHR5IHx8ICF0aGlzLnByb3BlcnR5LmlzRW1wdHkoKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0NsZWFyQWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5Q2xlYXJBY3Rpb24gJiYgKCF0aGlzLnByb3BlcnR5LmlzRW1wdHkoKSB8fCAhIXRoaXMucHJvcGVydHkuZGVmYXVsdCk7XG4gICAgfVxuXG4gICAgc2hvd0RhdGVQaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5vcGVuKCk7XG4gICAgfVxuXG4gICAgb25EYXRlQ2hhbmdlZChldmVudDogTWF0RGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50PERhdGU+KSB7XG4gICAgICAgIGlmIChldmVudC52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWQoZXZlbnQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZSA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlRGF0ZSA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS50eXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZSA9IERhdGVGbnNVdGlscy5mb3JjZVV0YyhldmVudC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVEYXRlID0gRGF0ZUZuc1V0aWxzLmZvcmNlTG9jYWwoZXZlbnQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EYXRlQ2xlYXIoKSB7XG4gICAgICAgIHRoaXMudmFsdWVEYXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5jYXJkVmlld1VwZGF0ZVNlcnZpY2UudXBkYXRlKHsgLi4udGhpcy5wcm9wZXJ0eSB9IGFzIENhcmRWaWV3RGF0ZUl0ZW1Nb2RlbCwgbnVsbCk7XG4gICAgICAgIHRoaXMucHJvcGVydHkudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnByb3BlcnR5LmRlZmF1bHQgPSBudWxsO1xuICAgIH1cblxuICAgIGNvcHlUb0NsaXBib2FyZCh2YWx1ZVRvQ29weTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVRvQ29weSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaXBib2FyZE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09SRS5NRVRBREFUQS5BQ0NFU1NJQklMSVRZLkNPUFlfVE9fQ0xJUEJPQVJEX01FU1NBR0UnKTtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jb3B5Q29udGVudFRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBjbGlwYm9hcmRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZERhdGVUb0xpc3QoZXZlbnQ6IE1hdERhdGV0aW1lcGlja2VySW5wdXRFdmVudDxEYXRlPikge1xuICAgICAgICBpZiAoZXZlbnQudmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKGV2ZW50LnZhbHVlKSAmJiB0aGlzLnByb3BlcnR5Lm11bHRpdmFsdWVkICYmIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wZXJ0eS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgbG9jYWxEYXRlID0gbmV3IERhdGUoZXZlbnQudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5LnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbERhdGUgPSBEYXRlRm5zVXRpbHMuZm9yY2VVdGMoZXZlbnQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlLnB1c2gobG9jYWxEYXRlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlVmFsdWVGcm9tTGlzdChpdGVtSW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5tdWx0aXZhbHVlZCAmJiBBcnJheS5pc0FycmF5KHRoaXMucHJvcGVydHkudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5jYXJkVmlld1VwZGF0ZVNlcnZpY2UudXBkYXRlKHsgLi4udGhpcy5wcm9wZXJ0eSB9IGFzIENhcmRWaWV3RGF0ZUl0ZW1Nb2RlbCwgdGhpcy5wcm9wZXJ0eS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2luZ2xlVmFsdWVQcm9wZXJ0eSgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHkudmFsdWUgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5wcm9wZXJ0eS52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLnByb3BlcnR5LnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHkudmFsdWUgPSBkYXRlO1xuICAgICAgICAgICAgdGhpcy52YWx1ZURhdGUgPSB0aGlzLnByb3BlcnR5LnR5cGUgPT09ICdkYXRlJyA/IERhdGVGbnNVdGlscy5mb3JjZUxvY2FsKGRhdGUpIDogZGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdE11bHRpdmFsdWVkUHJvcGVydHkoKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wZXJ0eS52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucHJvcGVydHkudmFsdWUpICYmIHRoaXMucHJvcGVydHkudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZSA9IHRoaXMucHJvcGVydHkudmFsdWUubWFwKChkYXRlOiBEYXRlIHwgc3RyaW5nKSA9PiBuZXcgRGF0ZShkYXRlKSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlRGF0ZSA9IHRoaXMucHJvcGVydHkudHlwZSA9PT0gJ2RhdGUnID8gRGF0ZUZuc1V0aWxzLmZvcmNlTG9jYWwodGhpcy5wcm9wZXJ0eS52YWx1ZVswXSkgOiB0aGlzLnByb3BlcnR5LnZhbHVlWzBdO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGxhYmVsXG4gICAgY2xhc3M9XCJhZGYtcHJvcGVydHktbGFiZWxcIlxuICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC1kYXRlaXRlbS1sYWJlbC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAqbmdJZj1cInNob3dQcm9wZXJ0eSB8fCBpc0VkaXRhYmxlXCJcbiAgICBbYXR0ci5mb3JdPVwiJ2NhcmQtdmlldy1kYXRlaXRlbS0nICsgcHJvcGVydHkua2V5XCJcbiAgICBbbmdDbGFzc109XCJ7ICdhZGYtcHJvcGVydHktcmVhZG9ubHktdmFsdWUnOiBpc1JlYWRvbmx5UHJvcGVydHksICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBlZGl0YWJsZSB9XCJcbiAgICBbdGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5DT1BZX1RPX0NMSVBCT0FSRCcgfCB0cmFuc2xhdGVcIlxuPlxuICAgIHt7IHByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XG48L2xhYmVsPlxuPGRpdiBjbGFzcz1cImFkZi1wcm9wZXJ0eS12YWx1ZVwiIFtuZ0NsYXNzXT1cInsgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1lZGl0YWJsZSc6IGVkaXRhYmxlLCAnYWRmLXByb3BlcnR5LXJlYWRvbmx5LXZhbHVlJzogaXNSZWFkb25seVByb3BlcnR5IH1cIj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpc0VkaXRhYmxlICYmICFwcm9wZXJ0eS5tdWx0aXZhbHVlZFwiIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC0nICsgcHJvcGVydHkudHlwZSArICctdmFsdWUtJyArIHByb3BlcnR5LmtleVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJzaG93UHJvcGVydHlcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLWRhdGVpdGVtLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZChwcm9wZXJ0eS5kaXNwbGF5VmFsdWUpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkNPUFlfVE9fQ0xJUEJPQVJEJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+e3sgcHJvcGVydHkuZGlzcGxheVZhbHVlIH19PC9zcGFuXG4gICAgICAgID5cbiAgICA8L3NwYW4+XG4gICAgPGRpdiAqbmdJZj1cImlzRWRpdGFibGUgJiYgIXByb3BlcnR5Lm11bHRpdmFsdWVkXCIgY2xhc3M9XCJhZGYtZGF0ZWl0ZW0tZWRpdGFibGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1kYXRlaXRlbS1lZGl0YWJsZS1jb250cm9sc1wiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1kYXRlcGlja2VyLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidkYXRlcGlja2VyLWxhYmVsLXRvZ2dsZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2hvd0RhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93UHJvcGVydHk7IGVsc2UgZWxzZUVtcHR5VmFsdWVCbG9ja1wiIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC0nICsgcHJvcGVydHkudHlwZSArICctdmFsdWUtJyArIHByb3BlcnR5LmtleVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcm9wZXJ0eS5kaXNwbGF5VmFsdWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0NsZWFyQWN0aW9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1kYXRlLXJlc2V0LWljb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRhdGVDbGVhcigpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInQ09SRS5NRVRBREFUQS5BQ1RJT05TLkNMRUFSJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidkYXRlcGlja2VyLWRhdGUtY2xlYXItJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgY2xlYXJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XG5cbiAgICAgICAgICAgIDxtYXQtZGF0ZXRpbWVwaWNrZXItdG9nZ2xlXG4gICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuRURJVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZGF0ZXBpY2tlcnRvZ2dsZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICBbZm9yXT1cImRhdGV0aW1lUGlja2VyXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtaW52aXNpYmxlLWRhdGUtaW5wdXRcIlxuICAgICAgICAgICAgW2F0dHIudGFiSW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgW21hdERhdGV0aW1lcGlja2VyXT1cImRhdGV0aW1lUGlja2VyXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZURhdGVcIlxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIidjYXJkLXZpZXctZGF0ZWl0ZW0tJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPG1hdC1kYXRldGltZXBpY2tlclxuICAgICAgICAgICAgI2RhdGV0aW1lUGlja2VyXG4gICAgICAgICAgICBbdHlwZV09XCIkYW55KHByb3BlcnR5KS50eXBlXCJcbiAgICAgICAgICAgIFt0aW1lSW50ZXJ2YWxdPVwiNVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2RhdGVwaWNrZXItJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICBbc3RhcnRBdF09XCJ2YWx1ZURhdGVcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUVtcHR5VmFsdWVCbG9jaz5cbiAgICAgICAge3sgcHJvcGVydHkuZGVmYXVsdCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicHJvcGVydHkubXVsdGl2YWx1ZWRcIlxuICAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktZmllbGQgYWRmLWRhdGVpdGVtLWNoaXAtbGlzdC1jb250YWluZXIgYWRmLWRhdGVpdGVtLWVkaXRhYmxlXCI+XG4gICAgICAgIDxtYXQtY2hpcC1saXN0Ym94ICNjaGlwTGlzdCBjbGFzcz1cImFkZi10ZXh0aXRlbS1jaGlwLWxpc3RcIj5cbiAgICAgICAgICAgIDxtYXQtY2hpcC1vcHRpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvcGVydHlWYWx1ZSBvZiBwcm9wZXJ0eS5kaXNwbGF5VmFsdWU7IGxldCBpZHggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVWYWx1ZUZyb21MaXN0KGlkeClcIj5cbiAgICAgICAgICAgICAgICB7eyBwcm9wZXJ0eVZhbHVlIH19XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXNFZGl0YWJsZVwiIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWNoaXAtb3B0aW9uPlxuICAgICAgICA8L21hdC1jaGlwLWxpc3Rib3g+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWZpZWxkIGFkZi1kYXRlaXRlbS1lZGl0YWJsZS1jb250cm9sc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd0RhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2hvd0RhdGVQaWNrZXIoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWludmlzaWJsZS1kYXRlLWlucHV0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci50YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgW21hdERhdGV0aW1lcGlja2VyXT1cImRhdGV0aW1lUGlja2VyXCJcbiAgICAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJhZGREYXRlVG9MaXN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidjYXJkLXZpZXctZGF0ZWl0ZW0tJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG1hdC1kYXRldGltZXBpY2tlci10b2dnbGVcbiAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5FRElUJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidkYXRlcGlja2VydG9nZ2xlLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgIFtmb3JdPVwiZGF0ZXRpbWVQaWNrZXJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxtYXQtZGF0ZXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICAjZGF0ZXRpbWVQaWNrZXJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCIkYW55KHByb3BlcnR5KS50eXBlXCJcbiAgICAgICAgICAgICAgICBbdGltZUludGVydmFsXT1cIjVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZGF0ZXBpY2tlci0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICBbc3RhcnRBdF09XCJ2YWx1ZURhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC12aWV3LWRhdGVpdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvY2FyZC12aWV3L2NvbXBvbmVudHMvY2FyZC12aWV3LWRhdGVpdGVtL2NhcmQtdmlldy1kYXRlaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2NhcmQtdmlldy9jb21wb25lbnRzL2NhcmQtdmlldy1kYXRlaXRlbS9jYXJkLXZpZXctZGF0ZWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUUxQix1QkFBdUIsRUFDMUIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekcs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LEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUYsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2RixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5SCxDQUFDO0lBQ0wsQ0FBQzsrR0ExSFEseUJBQXlCO21HQUF6Qix5QkFBeUIsNk1BekJ2QjtZQUNQLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTtZQUN6RCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7WUFDakUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtZQUNyRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO1NBQ2hFLCtKQ3BETCxxbExBaUlBLDIzQ0R6RVEsWUFBWSw2VkFDWixlQUFlLDJGQUNmLGFBQWEsbUxBQ2IsdUJBQXVCLGc2QkFDdkIsY0FBYywwaEJBQ2QsY0FBYywydkJBQ2Qsa0JBQWtCLDhCQUNsQixtQkFBbUIsOEJBQ25CLGlCQUFpQiw4QkFDakIsbUJBQW1COzs0RkFPZCx5QkFBeUI7a0JBMUJyQyxTQUFTO2dDQUNLO3dCQUNQLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTt3QkFDekQsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO3dCQUNqRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO3dCQUNyRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO3FCQUNoRSxZQUNTLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixjQUFjO3dCQUNkLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsbUJBQW1CO3FCQUN0QixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFO3FMQUl6QyxZQUFZO3NCQURYLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gICAgRGF0ZXRpbWVBZGFwdGVyLFxuICAgIE1BVF9EQVRFVElNRV9GT1JNQVRTLFxuICAgIE1hdERhdGV0aW1lcGlja2VyQ29tcG9uZW50LFxuICAgIE1hdERhdGV0aW1lcGlja2VySW5wdXRFdmVudCxcbiAgICBNYXREYXRldGltZXBpY2tlck1vZHVsZVxufSBmcm9tICdAbWF0LWRhdGV0aW1lcGlja2VyL2NvcmUnO1xuaW1wb3J0IHsgQ2FyZFZpZXdEYXRlSXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NhcmQtdmlldy1kYXRlaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZVZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZUNhcmRWaWV3IH0gZnJvbSAnLi4vYmFzZS1jYXJkLXZpZXcnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NsaXBib2FyZC9jbGlwYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFERl9EQVRFX0ZPUk1BVFMsIEFkZkRhdGVGbnNBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL2RhdGUtZm5zLWFkYXB0ZXInO1xuaW1wb3J0IHsgQURGX0RBVEVUSU1FX0ZPUk1BVFMsIEFkZkRhdGVUaW1lRm5zQWRhcHRlciB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlscy9kYXRldGltZS1mbnMtYWRhcHRlcic7XG5pbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgRGF0ZUZuc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL2RhdGUtZm5zLXV0aWxzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogQURGX0RBVEVfRk9STUFUUyB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFVElNRV9GT1JNQVRTLCB1c2VWYWx1ZTogQURGX0RBVEVUSU1FX0ZPUk1BVFMgfSxcbiAgICAgICAgeyBwcm92aWRlOiBEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IEFkZkRhdGVGbnNBZGFwdGVyIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLCB1c2VDbGFzczogQWRmRGF0ZVRpbWVGbnNBZGFwdGVyIH1cbiAgICBdLFxuICAgIHNlbGVjdG9yOiAnYWRmLWNhcmQtdmlldy1kYXRlaXRlbScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXREYXRldGltZXBpY2tlck1vZHVsZSxcbiAgICAgICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgICAgIE1hdFNuYWNrQmFyTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC12aWV3LWRhdGVpdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYXJkLXZpZXctZGF0ZWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtY2FyZC12aWV3LWRhdGVpdGVtJyB9XG59KVxuZXhwb3J0IGNsYXNzIENhcmRWaWV3RGF0ZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ2FyZFZpZXc8Q2FyZFZpZXdEYXRlSXRlbU1vZGVsPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RW1wdHkgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5Q2xlYXJBY3Rpb24gPSB0cnVlO1xuXG4gICAgQFZpZXdDaGlsZCgnZGF0ZXRpbWVQaWNrZXInKVxuICAgIHB1YmxpYyBkYXRlcGlja2VyOiBNYXREYXRldGltZXBpY2tlckNvbXBvbmVudDxhbnk+O1xuXG4gICAgdmFsdWVEYXRlOiBEYXRlO1xuXG4gICAgY2FyZFZpZXdEYXRlVGltZUNvbnRyb2w6IEZvcm1Db250cm9sPERhdGU+ID0gbmV3IEZvcm1Db250cm9sPERhdGU+KG51bGwpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICAgICAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2xpcGJvYXJkU2VydmljZTogQ2xpcGJvYXJkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG4gICAgICAgICAgICAuc2VsZWN0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobG9jYWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS5sb2NhbGUgPSBsb2NhbGU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAodGhpcy5kYXRlQWRhcHRlciBhcyBBZGZEYXRlRm5zQWRhcHRlcikuZGlzcGxheUZvcm1hdCA9ICdNTU0gREQnO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5Lm11bHRpdmFsdWVkKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRNdWx0aXZhbHVlZFByb3BlcnR5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluaXRTaW5nbGVWYWx1ZVByb3BlcnR5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgc2hvd1Byb3BlcnR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5RW1wdHkgfHwgIXRoaXMucHJvcGVydHkuaXNFbXB0eSgpO1xuICAgIH1cblxuICAgIGdldCBzaG93Q2xlYXJBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlDbGVhckFjdGlvbiAmJiAoIXRoaXMucHJvcGVydHkuaXNFbXB0eSgpIHx8ICEhdGhpcy5wcm9wZXJ0eS5kZWZhdWx0KTtcbiAgICB9XG5cbiAgICBzaG93RGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLm9wZW4oKTtcbiAgICB9XG5cbiAgICBvbkRhdGVDaGFuZ2VkKGV2ZW50OiBNYXREYXRldGltZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pIHtcbiAgICAgICAgaWYgKGV2ZW50LnZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZChldmVudC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlID0gbmV3IERhdGUoZXZlbnQudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVEYXRlID0gbmV3IERhdGUoZXZlbnQudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5LnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlID0gRGF0ZUZuc1V0aWxzLmZvcmNlVXRjKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZURhdGUgPSBEYXRlRm5zVXRpbHMuZm9yY2VMb2NhbChldmVudC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRhdGVDbGVhcigpIHtcbiAgICAgICAgdGhpcy52YWx1ZURhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLmNhcmRWaWV3VXBkYXRlU2VydmljZS51cGRhdGUoeyAuLi50aGlzLnByb3BlcnR5IH0gYXMgQ2FyZFZpZXdEYXRlSXRlbU1vZGVsLCBudWxsKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMucHJvcGVydHkuZGVmYXVsdCA9IG51bGw7XG4gICAgfVxuXG4gICAgY29weVRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5OiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlVG9Db3B5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgY2xpcGJvYXJkTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdDT1JFLk1FVEFEQVRBLkFDQ0VTU0lCSUxJVFkuQ09QWV9UT19DTElQQk9BUkRfTUVTU0FHRScpO1xuICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmNvcHlDb250ZW50VG9DbGlwYm9hcmQodmFsdWVUb0NvcHksIGNsaXBib2FyZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkRGF0ZVRvTGlzdChldmVudDogTWF0RGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50PERhdGU+KSB7XG4gICAgICAgIGlmIChldmVudC52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWQoZXZlbnQudmFsdWUpICYmIHRoaXMucHJvcGVydHkubXVsdGl2YWx1ZWQgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnByb3BlcnR5LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBsb2NhbERhdGUgPSBuZXcgRGF0ZShldmVudC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcGVydHkudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsRGF0ZSA9IERhdGVGbnNVdGlscy5mb3JjZVV0YyhldmVudC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHkudmFsdWUucHVzaChsb2NhbERhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVWYWx1ZUZyb21MaXN0KGl0ZW1JbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5Lm11bHRpdmFsdWVkICYmIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wZXJ0eS52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHkudmFsdWUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlKCkge1xuICAgICAgICB0aGlzLmNhcmRWaWV3VXBkYXRlU2VydmljZS51cGRhdGUoeyAuLi50aGlzLnByb3BlcnR5IH0gYXMgQ2FyZFZpZXdEYXRlSXRlbU1vZGVsLCB0aGlzLnByb3BlcnR5LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTaW5nbGVWYWx1ZVByb3BlcnR5KCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS52YWx1ZSAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLnByb3BlcnR5LnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMucHJvcGVydHkudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZSA9IGRhdGU7XG4gICAgICAgICAgICB0aGlzLnZhbHVlRGF0ZSA9IHRoaXMucHJvcGVydHkudHlwZSA9PT0gJ2RhdGUnID8gRGF0ZUZuc1V0aWxzLmZvcmNlTG9jYWwoZGF0ZSkgOiBkYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TXVsdGl2YWx1ZWRQcm9wZXJ0eSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5LnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5wcm9wZXJ0eS52YWx1ZSkgJiYgdGhpcy5wcm9wZXJ0eS52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlID0gdGhpcy5wcm9wZXJ0eS52YWx1ZS5tYXAoKGRhdGU6IERhdGUgfCBzdHJpbmcpID0+IG5ldyBEYXRlKGRhdGUpKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVEYXRlID0gdGhpcy5wcm9wZXJ0eS50eXBlID09PSAnZGF0ZScgPyBEYXRlRm5zVXRpbHMuZm9yY2VMb2NhbCh0aGlzLnByb3BlcnR5LnZhbHVlWzBdKSA6IHRoaXMucHJvcGVydHkudmFsdWVbMF07XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bWF0LWxhYmVsXG4gICAgY2xhc3M9XCJhZGYtcHJvcGVydHktbGFiZWxcIlxuICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC1kYXRlaXRlbS1sYWJlbC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAqbmdJZj1cInNob3dQcm9wZXJ0eSAmJiAhaXNFZGl0YWJsZVwiXG4gICAgW2F0dHIuZm9yXT1cIidjYXJkLXZpZXctZGF0ZWl0ZW0tJyArIHByb3BlcnR5LmtleVwiXG4gICAgW25nQ2xhc3NdPVwieyAnYWRmLXByb3BlcnR5LXJlYWRvbmx5LXZhbHVlJzogaXNSZWFkb25seVByb3BlcnR5LCAnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogZWRpdGFibGUgfVwiXG4gICAgW3RpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ09QWV9UT19DTElQQk9BUkQnIHwgdHJhbnNsYXRlXCJcbj5cbiAgICB7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuPC9tYXQtbGFiZWw+XG5cbjxkaXYgY2xhc3M9XCJhZGYtcHJvcGVydHktdmFsdWVcIiBbbmdDbGFzc109XCJ7ICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBlZGl0YWJsZSwgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eSB9XCI+XG4gICAgPHNwYW4gKm5nSWY9XCIhaXNFZGl0YWJsZSAmJiAhcHJvcGVydHkubXVsdGl2YWx1ZWRcIiBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtJyArIHByb3BlcnR5LnR5cGUgKyAnLXZhbHVlLScgKyBwcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1Byb3BlcnR5XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC1kYXRlaXRlbS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQocHJvcGVydHkuZGlzcGxheVZhbHVlKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5DT1BZX1RPX0NMSVBCT0FSRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgPnt7IHByb3BlcnR5LmRpc3BsYXlWYWx1ZSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImlzRWRpdGFibGUgJiYgIXByb3BlcnR5Lm11bHRpdmFsdWVkXCIgY2xhc3M9XCJhZGYtZGF0ZWl0ZW0tZWRpdGFibGUgaHhwLWlucHV0XCI+XG4gICAgICAgIDxtYXQtbGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWxhYmVsXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC1kYXRlaXRlbS1sYWJlbC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNFZGl0YWJsZVwiXG4gICAgICAgICAgICBbYXR0ci5mb3JdPVwiJ2NhcmQtdmlldy1kYXRlaXRlbS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eSwgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1lZGl0YWJsZSc6IGVkaXRhYmxlIH1cIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ09QWV9UT19DTElQQk9BUkQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgcHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtZGF0ZWl0ZW0tZWRpdGFibGUtY29udHJvbHNcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZGF0ZXBpY2tlci1zcGFuLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidkYXRlcGlja2VyLWxhYmVsLXRvZ2dsZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2hvd0RhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93UHJvcGVydHk7IGVsc2UgZWxzZUVtcHR5VmFsdWVCbG9ja1wiIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC0nICsgcHJvcGVydHkudHlwZSArICctdmFsdWUtJyArIHByb3BlcnR5LmtleVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcm9wZXJ0eS5kaXNwbGF5VmFsdWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBjbGFzcz1cImFkZi1pbnZpc2libGUtZGF0ZS1pbnB1dFwiXG4gICAgICAgICAgICBbYXR0ci50YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICBbbWF0RGF0ZXRpbWVwaWNrZXJdPVwiZGF0ZXRpbWVQaWNrZXJcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlRGF0ZVwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ2NhcmQtdmlldy1kYXRlaXRlbS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgLz5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgIG1hdEljb25TdWZmaXhcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dDbGVhckFjdGlvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZGF0ZS1yZXNldC1pY29uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EYXRlQ2xlYXIoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5DTEVBUicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZGF0ZXBpY2tlci1kYXRlLWNsZWFyLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIGNsZWFyXG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1kYXRldGltZXBpY2tlci10b2dnbGVcbiAgICAgICAgICAgICAgICBtYXRJY29uU3VmZml4XG4gICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuRURJVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZGF0ZXBpY2tlcnRvZ2dsZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICBbZm9yXT1cImRhdGV0aW1lUGlja2VyXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxtYXQtZGF0ZXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICAjZGF0ZXRpbWVQaWNrZXJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCIkYW55KHByb3BlcnR5KS50eXBlXCJcbiAgICAgICAgICAgICAgICBbdGltZUludGVydmFsXT1cIjVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZGF0ZXBpY2tlci0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICBbc3RhcnRBdF09XCJ2YWx1ZURhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUVtcHR5VmFsdWVCbG9jaz5cbiAgICAgICAge3sgcHJvcGVydHkuZGVmYXVsdCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicHJvcGVydHkubXVsdGl2YWx1ZWRcIiBjbGFzcz1cImFkZi1wcm9wZXJ0eS1maWVsZCBhZGYtZGF0ZWl0ZW0tY2hpcC1saXN0LWNvbnRhaW5lciBhZGYtZGF0ZWl0ZW0tZWRpdGFibGVcIj5cbiAgICAgICAgPG1hdC1jaGlwLWxpc3Rib3ggI2NoaXBMaXN0IGNsYXNzPVwiYWRmLXRleHRpdGVtLWNoaXAtbGlzdFwiPlxuICAgICAgICAgICAgPG1hdC1jaGlwLW9wdGlvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9wZXJ0eVZhbHVlIG9mIHByb3BlcnR5LmRpc3BsYXlWYWx1ZTsgbGV0IGlkeCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cImlzRWRpdGFibGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZVZhbHVlRnJvbUxpc3QoaWR4KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcHJvcGVydHlWYWx1ZSB9fVxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImlzRWRpdGFibGVcIiBtYXRDaGlwUmVtb3ZlPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1jaGlwLW9wdGlvbj5cbiAgICAgICAgPC9tYXQtY2hpcC1saXN0Ym94PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiaXNFZGl0YWJsZVwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1maWVsZCBhZGYtZGF0ZWl0ZW0tZWRpdGFibGUtY29udHJvbHNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEYXRlUGlja2VyKClcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNob3dEYXRlUGlja2VyKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1pbnZpc2libGUtZGF0ZS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGFiSW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgIFttYXREYXRldGltZXBpY2tlcl09XCJkYXRldGltZVBpY2tlclwiXG4gICAgICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwiYWRkRGF0ZVRvTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInY2FyZC12aWV3LWRhdGVpdGVtLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxtYXQtZGF0ZXRpbWVwaWNrZXItdG9nZ2xlXG4gICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuRURJVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInZGF0ZXBpY2tlcnRvZ2dsZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICBbZm9yXT1cImRhdGV0aW1lUGlja2VyXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bWF0LWRhdGV0aW1lcGlja2VyXG4gICAgICAgICAgICAgICAgI2RhdGV0aW1lUGlja2VyXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiJGFueShwcm9wZXJ0eSkudHlwZVwiXG4gICAgICAgICAgICAgICAgW3RpbWVJbnRlcnZhbF09XCI1XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2RhdGVwaWNrZXItJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgW3N0YXJ0QXRdPVwidmFsdWVEYXRlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -114,7 +114,7 @@ export class CardViewSelectItemComponent extends BaseCardView {
114
114
  return this.appConfig.get('content-metadata.selectFilterLimit', CardViewSelectItemComponent.HIDE_FILTER_LIMIT);
115
115
  }
116
116
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardViewSelectItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CardViewSelectItemComponent, isStandalone: true, selector: "adf-card-view-selectitem", inputs: { options$: "options$", displayNoneOption: "displayNoneOption", displayEmpty: "displayEmpty" }, host: { classAttribute: "adf-card-view-selectitem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <div\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >{{ property.label | translate }}\n </div>\n <div class=\"adf-property-field\">\n <div\n *ngIf=\"!isEditable\"\n class=\"adf-property-value adf-property-read-only\"\n [attr.data-automation-id]=\"'select-readonly-value-' + property.key\"\n data-automation-class=\"read-only-value\">{{ (property.displayValue | async) | translate }}\n </div>\n <div *ngIf=\"isEditable\">\n <mat-form-field class=\"adf-property-value\" [ngClass]=\"{'adf-property-value-editable': isEditable}\">\n <mat-select\n [(value)]=\"value\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty }\"\n panelClass=\"adf-select-filter\"\n (selectionChange)=\"onChange($event)\"\n data-automation-class=\"select-box\"\n [aria-label]=\"property.label | translate\">\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\"/>\n <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n <mat-option\n *ngFor=\"let option of list$ | async\"\n [value]=\"option.key\">\n {{ option.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'autocompleteBased'\">\n <mat-form-field\n class=\"adf-property-field adf-card-selectitem-autocomplete\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [floatLabel]=\"'always'\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\">\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [matAutocomplete]=\"auto\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"autocompleteControl\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n />\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\">\n <mat-option *ngFor=\"let option of property.options$ | async\" [value]=\"option.key\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\">\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n</ng-container>\n", styles: [".adf-card-view-selectitem .adf-property-value{width:100%}.adf-card-view-selectitem .adf-select-filter-input{background:var(--adf-theme-background-card-color);position:sticky;top:0;left:0;right:0;z-index:1}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable{padding-left:0}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mdc-text-field--no-label .mat-mdc-form-field-infix{padding:0}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-text-field-wrapper{background-color:unset}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select{margin-top:0;border-radius:6px}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select .mat-mdc-select-value{color:var(--adf-metadata-action-button-clear-color)}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select .mat-mdc-select-trigger{padding:6px 12px 6px 6px}.adf-card-view-selectitem .adf-card-selectitem-autocomplete .adf-property-value-editable{padding-left:10px}.adf-card-view-selectitem .mat-mdc-form-field-subscript-wrapper{display:none}.adf-card-view-selectitem .adf-property-read-only{padding:6px 0;border-bottom:1px solid var(--adf-metadata-property-panel-border-color);color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-selectitem .mdc-line-ripple{display:none}.adf-card-view-selectitem .adf-property-readonly-value{color:var(--adf-metadata-property-panel-label-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: SelectFilterInputComponent, selector: "adf-select-filter-input", outputs: ["change"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CardViewSelectItemComponent, isStandalone: true, selector: "adf-card-view-selectitem", inputs: { options$: "options$", displayNoneOption: "displayNoneOption", displayEmpty: "displayEmpty" }, host: { classAttribute: "adf-card-view-selectitem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <div *ngIf=\"!isEditable\"\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label\"\n >{{ property.label | translate }}\n </div>\n <div class=\"adf-property-field\">\n <div\n *ngIf=\"!isEditable\"\n class=\"adf-property-value adf-property-read-only\"\n [attr.data-automation-id]=\"'select-readonly-value-' + property.key\"\n data-automation-class=\"read-only-value\"\n >\n {{ property.displayValue | async | translate }}\n </div>\n <div *ngIf=\"isEditable\">\n <mat-form-field class=\"adf-property-value\">\n <mat-label\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-value-editable\"\n [ngClass]=\"{\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >{{ property.label | translate }}\n </mat-label>\n <mat-select\n [(value)]=\"value\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty }\"\n panelClass=\"adf-select-filter\"\n (selectionChange)=\"onChange($event)\"\n data-automation-class=\"select-box\"\n [aria-label]=\"property.label | translate\"\n >\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\" />\n <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of list$ | async\" [value]=\"option.key\">\n {{ option.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'autocompleteBased'\">\n <mat-form-field\n class=\"adf-property-field adf-card-selectitem-autocomplete\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [floatLabel]=\"property.default ? 'always' : null\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [matAutocomplete]=\"auto\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"autocompleteControl\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n />\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\">\n <mat-option\n *ngFor=\"let option of property.options$ | async\"\n [value]=\"option.key\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\"\n >\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n</ng-container>\n", styles: [".adf-card-view-selectitem .adf-property-value{width:100%}.adf-card-view-selectitem .adf-select-filter-input{background:var(--adf-theme-background-card-color);position:sticky;top:0;left:0;right:0;z-index:1}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable{padding-left:0}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mdc-text-field--no-label .mat-mdc-form-field-infix{padding:0}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-text-field-wrapper{background-color:unset}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select{margin-top:0;border-radius:6px}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select .mat-mdc-select-value{color:var(--adf-metadata-action-button-clear-color)}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select .mat-mdc-select-trigger{padding-left:6px;padding-right:6px}.adf-card-view-selectitem .adf-card-selectitem-autocomplete .adf-property-value-editable{padding-left:10px}.adf-card-view-selectitem .mat-mdc-form-field-subscript-wrapper{display:none}.adf-card-view-selectitem .adf-property-read-only{padding:6px 0;border-bottom:1px solid var(--adf-metadata-property-panel-border-color);color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-selectitem .mdc-line-ripple{display:none}.adf-card-view-selectitem .adf-property-readonly-value{color:var(--adf-metadata-property-panel-label-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: SelectFilterInputComponent, selector: "adf-select-filter-input", outputs: ["change"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
118
118
  }
119
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardViewSelectItemComponent, decorators: [{
120
120
  type: Component,
@@ -127,7 +127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
127
127
  MatAutocompleteModule,
128
128
  MatInputModule,
129
129
  ReactiveFormsModule
130
- ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-selectitem' }, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <div\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >{{ property.label | translate }}\n </div>\n <div class=\"adf-property-field\">\n <div\n *ngIf=\"!isEditable\"\n class=\"adf-property-value adf-property-read-only\"\n [attr.data-automation-id]=\"'select-readonly-value-' + property.key\"\n data-automation-class=\"read-only-value\">{{ (property.displayValue | async) | translate }}\n </div>\n <div *ngIf=\"isEditable\">\n <mat-form-field class=\"adf-property-value\" [ngClass]=\"{'adf-property-value-editable': isEditable}\">\n <mat-select\n [(value)]=\"value\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty }\"\n panelClass=\"adf-select-filter\"\n (selectionChange)=\"onChange($event)\"\n data-automation-class=\"select-box\"\n [aria-label]=\"property.label | translate\">\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\"/>\n <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n <mat-option\n *ngFor=\"let option of list$ | async\"\n [value]=\"option.key\">\n {{ option.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'autocompleteBased'\">\n <mat-form-field\n class=\"adf-property-field adf-card-selectitem-autocomplete\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [floatLabel]=\"'always'\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\">\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [matAutocomplete]=\"auto\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"autocompleteControl\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n />\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\">\n <mat-option *ngFor=\"let option of property.options$ | async\" [value]=\"option.key\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\">\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n</ng-container>\n", styles: [".adf-card-view-selectitem .adf-property-value{width:100%}.adf-card-view-selectitem .adf-select-filter-input{background:var(--adf-theme-background-card-color);position:sticky;top:0;left:0;right:0;z-index:1}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable{padding-left:0}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mdc-text-field--no-label .mat-mdc-form-field-infix{padding:0}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-text-field-wrapper{background-color:unset}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select{margin-top:0;border-radius:6px}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select .mat-mdc-select-value{color:var(--adf-metadata-action-button-clear-color)}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select .mat-mdc-select-trigger{padding:6px 12px 6px 6px}.adf-card-view-selectitem .adf-card-selectitem-autocomplete .adf-property-value-editable{padding-left:10px}.adf-card-view-selectitem .mat-mdc-form-field-subscript-wrapper{display:none}.adf-card-view-selectitem .adf-property-read-only{padding:6px 0;border-bottom:1px solid var(--adf-metadata-property-panel-border-color);color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-selectitem .mdc-line-ripple{display:none}.adf-card-view-selectitem .adf-property-readonly-value{color:var(--adf-metadata-property-panel-label-color)}\n"] }]
130
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-selectitem' }, template: "<ng-container *ngIf=\"!property.isEmpty() || isEditable\">\n <div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <div *ngIf=\"!isEditable\"\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label\"\n >{{ property.label | translate }}\n </div>\n <div class=\"adf-property-field\">\n <div\n *ngIf=\"!isEditable\"\n class=\"adf-property-value adf-property-read-only\"\n [attr.data-automation-id]=\"'select-readonly-value-' + property.key\"\n data-automation-class=\"read-only-value\"\n >\n {{ property.displayValue | async | translate }}\n </div>\n <div *ngIf=\"isEditable\">\n <mat-form-field class=\"adf-property-value\">\n <mat-label\n [attr.data-automation-id]=\"'card-select-label-' + property.key\"\n class=\"adf-property-label adf-property-value-editable\"\n [ngClass]=\"{\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >{{ property.label | translate }}\n </mat-label>\n <mat-select\n [(value)]=\"value\"\n [ngClass]=\"{ 'adf-property-readonly-value': isReadonlyProperty }\"\n panelClass=\"adf-select-filter\"\n (selectionChange)=\"onChange($event)\"\n data-automation-class=\"select-box\"\n [aria-label]=\"property.label | translate\"\n >\n <adf-select-filter-input *ngIf=\"showInputFilter\" (change)=\"onFilterInputChange($event)\" />\n <mat-option *ngIf=\"displayNoneOption\">{{ 'CORE.CARDVIEW.NONE' | translate }}</mat-option>\n <mat-option *ngFor=\"let option of list$ | async\" [value]=\"option.key\">\n {{ option.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </div>\n <div *ngSwitchCase=\"'autocompleteBased'\">\n <mat-form-field\n class=\"adf-property-field adf-card-selectitem-autocomplete\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [floatLabel]=\"property.default ? 'always' : null\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [matAutocomplete]=\"auto\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': isEditable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"autocompleteControl\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-value-' + property.key\"\n />\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\">\n <mat-option\n *ngFor=\"let option of property.options$ | async\"\n [value]=\"option.key\"\n [attr.data-automation-id]=\"'card-autocomplete-based-selectitem-option-' + property.key\"\n >\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n</ng-container>\n", styles: [".adf-card-view-selectitem .adf-property-value{width:100%}.adf-card-view-selectitem .adf-select-filter-input{background:var(--adf-theme-background-card-color);position:sticky;top:0;left:0;right:0;z-index:1}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable{padding-left:0}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mdc-text-field--no-label .mat-mdc-form-field-infix{padding:0}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-text-field-wrapper{background-color:unset}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select{margin-top:0;border-radius:6px}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select .mat-mdc-select-value{color:var(--adf-metadata-action-button-clear-color)}.adf-card-view-selectitem .adf-property-value-editable.adf-property-value-editable .mat-mdc-select .mat-mdc-select-trigger{padding-left:6px;padding-right:6px}.adf-card-view-selectitem .adf-card-selectitem-autocomplete .adf-property-value-editable{padding-left:10px}.adf-card-view-selectitem .mat-mdc-form-field-subscript-wrapper{display:none}.adf-card-view-selectitem .adf-property-read-only{padding:6px 0;border-bottom:1px solid var(--adf-metadata-property-panel-border-color);color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-selectitem .mdc-line-ripple{display:none}.adf-card-view-selectitem .adf-property-readonly-value{color:var(--adf-metadata-property-panel-label-color)}\n"] }]
131
131
  }], propDecorators: { options$: [{
132
132
  type: Input
133
133
  }], displayNoneOption: [{
@@ -135,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
135
135
  }], displayEmpty: [{
136
136
  type: Input
137
137
  }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC12aWV3LXNlbGVjdGl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9jYXJkLXZpZXcvY29tcG9uZW50cy9jYXJkLXZpZXctc2VsZWN0aXRlbS9jYXJkLXZpZXctc2VsZWN0aXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2NhcmQtdmlldy9jb21wb25lbnRzL2NhcmQtdmlldy1zZWxlY3RpdGVtL2NhcmQtdmlldy1zZWxlY3RpdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsaUJBQWlCLEVBQWlCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFD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R04saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24sIFNpbXBsZUNoYW5nZXMsIERlc3Ryb3lSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhcmRWaWV3U2VsZWN0SXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NhcmQtdmlldy1zZWxlY3RpdGVtLm1vZGVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FyZFZpZXdTZWxlY3RJdGVtT3B0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jYXJkLXZpZXcuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UsIE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBCYXNlQ2FyZFZpZXcgfSBmcm9tICcuLi9iYXNlLWNhcmQtdmlldyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbmZpZy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFNlbGVjdEZpbHRlcklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtZmlsdGVyLWlucHV0L3NlbGVjdC1maWx0ZXItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY2FyZC12aWV3LXNlbGVjdGl0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgICAgIFNlbGVjdEZpbHRlcklucHV0Q29tcG9uZW50LFxuICAgICAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC12aWV3LXNlbGVjdGl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhcmQtdmlldy1zZWxlY3RpdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLWNhcmQtdmlldy1zZWxlY3RpdGVtJyB9XG59KVxuZXhwb3J0IGNsYXNzIENhcmRWaWV3U2VsZWN0SXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VDYXJkVmlldzxDYXJkVmlld1NlbGVjdEl0ZW1Nb2RlbDxzdHJpbmcgfCBudW1iZXI+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIGFwcENvbmZpZyA9IGluamVjdChBcHBDb25maWdTZXJ2aWNlKTtcbiAgICBzdGF0aWMgSElERV9GSUxURVJfTElNSVQgPSA1O1xuXG4gICAgQElucHV0KCkgb3B0aW9ucyQ6IE9ic2VydmFibGU8Q2FyZFZpZXdTZWxlY3RJdGVtT3B0aW9uPHN0cmluZyB8IG51bWJlcj5bXT47XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlOb25lT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUVtcHR5OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgZmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgc2hvd0lucHV0RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgbGlzdCQ6IE9ic2VydmFibGU8Q2FyZFZpZXdTZWxlY3RJdGVtT3B0aW9uPHN0cmluZyB8IG51bWJlcj5bXT4gPSBudWxsO1xuICAgIHRlbXBsYXRlVHlwZSA9ICcnO1xuICAgIGF1dG9jb21wbGV0ZUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gICAgZWRpdGVkVmFsdWU6IHN0cmluZyB8IG51bWJlcjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucHJvcGVydHkudmFsdWU7XG4gICAgICAgIGlmIChjaGFuZ2VzLnByb3BlcnR5Py5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHRleHRJbnB1dFZhbHVlKSA9PiB0ZXh0SW5wdXRWYWx1ZSAhPT0gdGhpcy5lZGl0ZWRWYWx1ZSAmJiB0ZXh0SW5wdXRWYWx1ZSAhPT0gbnVsbCksXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRleHRJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdGVkVmFsdWUgPSB0ZXh0SW5wdXRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJkVmlld1VwZGF0ZVNlcnZpY2UuYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZSQubmV4dCh0ZXh0SW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5hdXRvY29tcGxldGVCYXNlZCkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSAnYXV0b2NvbXBsZXRlQmFzZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nZXRPcHRpb25zKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0lucHV0RmlsdGVyID0gb3B0aW9ucy5sZW5ndGggPiB0aGlzLm9wdGlvbnNMaW1pdDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubGlzdCQgPSB0aGlzLmdldExpc3QoKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKHRoaXMucHJvcGVydHkudmFsdWUpO1xuICAgIH1cblxuICAgIG9uRmlsdGVySW5wdXRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZpbHRlciQubmV4dCh2YWx1ZS50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnMoKTogT2JzZXJ2YWJsZTxDYXJkVmlld1NlbGVjdEl0ZW1PcHRpb248c3RyaW5nIHwgbnVtYmVyPltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMkIHx8IHRoaXMucHJvcGVydHkub3B0aW9ucyQ7XG4gICAgfVxuXG4gICAgZ2V0TGlzdCgpOiBPYnNlcnZhYmxlPENhcmRWaWV3U2VsZWN0SXRlbU9wdGlvbjxzdHJpbmcgfCBudW1iZXI+W10+IHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuZ2V0T3B0aW9ucygpLCB0aGlzLmZpbHRlciRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbaXRlbXMsIHNlYXJjaFRlcm1dKSA9PiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IChmaWx0ZXIgPyBpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSA6IHRydWUpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZE9wdGlvbi5sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLnVwZGF0ZSh7IC4uLnRoaXMucHJvcGVydHkgfSBhcyBDYXJkVmlld1NlbGVjdEl0ZW1Nb2RlbDxzdHJpbmc+LCBzZWxlY3RlZE9wdGlvbi5rZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBldmVudC52YWx1ZSAhPT0gdW5kZWZpbmVkID8gZXZlbnQudmFsdWUgOiBudWxsO1xuICAgICAgICB0aGlzLmNhcmRWaWV3VXBkYXRlU2VydmljZS51cGRhdGUoeyAuLi50aGlzLnByb3BlcnR5IH0gYXMgQ2FyZFZpZXdTZWxlY3RJdGVtTW9kZWw8c3RyaW5nPiwgc2VsZWN0ZWRPcHRpb24pO1xuICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlID0gc2VsZWN0ZWRPcHRpb247XG4gICAgfVxuXG4gICAgZ2V0IHNob3dQcm9wZXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheUVtcHR5IHx8ICF0aGlzLnByb3BlcnR5LmlzRW1wdHkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBvcHRpb25zTGltaXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29uZmlnLmdldDxudW1iZXI+KCdjb250ZW50LW1ldGFkYXRhLnNlbGVjdEZpbHRlckxpbWl0JywgQ2FyZFZpZXdTZWxlY3RJdGVtQ29tcG9uZW50LkhJREVfRklMVEVSX0xJTUlUKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXByb3BlcnR5LmlzRW1wdHkoKSB8fCBpc0VkaXRhYmxlXCI+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwidGVtcGxhdGVUeXBlXCI+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtc2VsZWN0LWxhYmVsLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWxhYmVsXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBpc0VkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXJlYWRvbmx5LXZhbHVlJzogaXNSZWFkb25seVByb3BlcnR5XG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+e3sgcHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1wcm9wZXJ0eS1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNFZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LXZhbHVlIGFkZi1wcm9wZXJ0eS1yZWFkLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ3NlbGVjdC1yZWFkb25seS12YWx1ZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWNsYXNzPVwicmVhZC1vbmx5LXZhbHVlXCI+e3sgKHByb3BlcnR5LmRpc3BsYXlWYWx1ZSB8IGFzeW5jKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0VkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi1wcm9wZXJ0eS12YWx1ZVwiIFtuZ0NsYXNzXT1cInsnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogaXNFZGl0YWJsZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbENsYXNzPVwiYWRmLXNlbGVjdC1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWNsYXNzPVwic2VsZWN0LWJveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwicHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWRmLXNlbGVjdC1maWx0ZXItaW5wdXQgKm5nSWY9XCJzaG93SW5wdXRGaWx0ZXJcIiAoY2hhbmdlKT1cIm9uRmlsdGVySW5wdXRDaGFuZ2UoJGV2ZW50KVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImRpc3BsYXlOb25lT3B0aW9uXCI+e3sgJ0NPUkUuQ0FSRFZJRVcuTk9ORScgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBsaXN0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInYXV0b2NvbXBsZXRlQmFzZWQnXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1maWVsZCBhZGYtY2FyZC1zZWxlY3RpdGVtLWF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWRmLXByb3BlcnR5LXJlYWQtb25seSc6ICFpc0VkaXRhYmxlIH1cIlxuICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cIidhbHdheXMnXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dQcm9wZXJ0eSB8fCBpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLWF1dG9jb21wbGV0ZS1iYXNlZC1zZWxlY3RpdGVtLWxhYmVsLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBpc0VkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LXZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1lZGl0YWJsZSc6IGlzRWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXJlYWRvbmx5LXZhbHVlJzogaXNSZWFkb25seVByb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BlcnR5LmRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImF1dG9jb21wbGV0ZUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5DT1BZX1RPX0NMSVBCT0FSRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtYXV0b2NvbXBsZXRlLWJhc2VkLXNlbGVjdGl0ZW0tdmFsdWUtJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wZXJ0eS5vcHRpb25zJCB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdGlvbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtYXV0b2NvbXBsZXRlLWJhc2VkLXNlbGVjdGl0ZW0tb3B0aW9uLScgKyBwcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC12aWV3LXNlbGVjdGl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9jYXJkLXZpZXcvY29tcG9uZW50cy9jYXJkLXZpZXctc2VsZWN0aXRlbS9jYXJkLXZpZXctc2VsZWN0aXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2NhcmQtdmlldy9jb21wb25lbnRzL2NhcmQtdmlldy1zZWxlY3RpdGVtL2NhcmQtdmlldy1zZWxlY3RpdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsaUJBQWlCLEVBQWlCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHFCQUFxQixFQUFnQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQW9CaEUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLFlBQXNEO0lBbEJ2Rzs7UUFtQlksY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBTTdDLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUdsQyxpQkFBWSxHQUFZLElBQUksQ0FBQztRQUc3QixZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsVUFBSyxHQUE0RCxJQUFJLENBQUM7UUFDdEUsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsd0JBQW1CLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBRzlCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FnRnBEO2FBbEdVLHNCQUFpQixHQUFHLENBQUMsQUFBSixDQUFLO0lBb0I3QixXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVk7aUJBQ2hDLElBQUksQ0FDRCxNQUFNLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLGNBQWMsS0FBSyxJQUFJLENBQUMsV0FBVyxJQUFJLGNBQWMsS0FBSyxJQUFJLENBQUMsRUFDMUYsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUNoQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3RDO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM1RSxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkMsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUM7UUFDNUMsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7YUFDWixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxVQUFVO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ25ELENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN4RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3RJLENBQUM7SUFDTixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBbUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUNaLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25CLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRixJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBcUMsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkgsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFzQjtRQUMzQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQXFDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFZLFlBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBUyxvQ0FBb0MsRUFBRSwyQkFBMkIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNILENBQUM7K0dBbkdRLDJCQUEyQjttR0FBM0IsMkJBQTJCLDhSQ3BEeEMsc3FKQTBGQSx1bUREcERRLFlBQVksOHBCQUNaLGVBQWUsMkZBQ2Ysa0JBQWtCLDBTQUNsQixlQUFlLG9yQkFDZiwwQkFBMEIsd0ZBQzFCLHFCQUFxQix1ckJBQ3JCLGNBQWMsMFdBQ2QsbUJBQW1COzs0RkFPZCwyQkFBMkI7a0JBbEJ2QyxTQUFTOytCQUNJLDBCQUEwQixjQUN4QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsY0FBYzt3QkFDZCxtQkFBbUI7cUJBQ3RCLGlCQUdjLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUU7OEJBTWxDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR04saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24sIFNpbXBsZUNoYW5nZXMsIERlc3Ryb3lSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhcmRWaWV3U2VsZWN0SXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NhcmQtdmlldy1zZWxlY3RpdGVtLm1vZGVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FyZFZpZXdTZWxlY3RJdGVtT3B0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jYXJkLXZpZXcuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UsIE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBCYXNlQ2FyZFZpZXcgfSBmcm9tICcuLi9iYXNlLWNhcmQtdmlldyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbmZpZy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFNlbGVjdEZpbHRlcklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtZmlsdGVyLWlucHV0L3NlbGVjdC1maWx0ZXItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY2FyZC12aWV3LXNlbGVjdGl0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgICAgIFNlbGVjdEZpbHRlcklucHV0Q29tcG9uZW50LFxuICAgICAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC12aWV3LXNlbGVjdGl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhcmQtdmlldy1zZWxlY3RpdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLWNhcmQtdmlldy1zZWxlY3RpdGVtJyB9XG59KVxuZXhwb3J0IGNsYXNzIENhcmRWaWV3U2VsZWN0SXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VDYXJkVmlldzxDYXJkVmlld1NlbGVjdEl0ZW1Nb2RlbDxzdHJpbmcgfCBudW1iZXI+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIGFwcENvbmZpZyA9IGluamVjdChBcHBDb25maWdTZXJ2aWNlKTtcbiAgICBzdGF0aWMgSElERV9GSUxURVJfTElNSVQgPSA1O1xuXG4gICAgQElucHV0KCkgb3B0aW9ucyQ6IE9ic2VydmFibGU8Q2FyZFZpZXdTZWxlY3RJdGVtT3B0aW9uPHN0cmluZyB8IG51bWJlcj5bXT47XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlOb25lT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUVtcHR5OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgZmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgc2hvd0lucHV0RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgbGlzdCQ6IE9ic2VydmFibGU8Q2FyZFZpZXdTZWxlY3RJdGVtT3B0aW9uPHN0cmluZyB8IG51bWJlcj5bXT4gPSBudWxsO1xuICAgIHRlbXBsYXRlVHlwZSA9ICcnO1xuICAgIGF1dG9jb21wbGV0ZUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gICAgZWRpdGVkVmFsdWU6IHN0cmluZyB8IG51bWJlcjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucHJvcGVydHkudmFsdWU7XG4gICAgICAgIGlmIChjaGFuZ2VzLnByb3BlcnR5Py5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHRleHRJbnB1dFZhbHVlKSA9PiB0ZXh0SW5wdXRWYWx1ZSAhPT0gdGhpcy5lZGl0ZWRWYWx1ZSAmJiB0ZXh0SW5wdXRWYWx1ZSAhPT0gbnVsbCksXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRleHRJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdGVkVmFsdWUgPSB0ZXh0SW5wdXRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJkVmlld1VwZGF0ZVNlcnZpY2UuYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZSQubmV4dCh0ZXh0SW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5hdXRvY29tcGxldGVCYXNlZCkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSAnYXV0b2NvbXBsZXRlQmFzZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nZXRPcHRpb25zKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0lucHV0RmlsdGVyID0gb3B0aW9ucy5sZW5ndGggPiB0aGlzLm9wdGlvbnNMaW1pdDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubGlzdCQgPSB0aGlzLmdldExpc3QoKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKHRoaXMucHJvcGVydHkudmFsdWUpO1xuICAgIH1cblxuICAgIG9uRmlsdGVySW5wdXRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZpbHRlciQubmV4dCh2YWx1ZS50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnMoKTogT2JzZXJ2YWJsZTxDYXJkVmlld1NlbGVjdEl0ZW1PcHRpb248c3RyaW5nIHwgbnVtYmVyPltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMkIHx8IHRoaXMucHJvcGVydHkub3B0aW9ucyQ7XG4gICAgfVxuXG4gICAgZ2V0TGlzdCgpOiBPYnNlcnZhYmxlPENhcmRWaWV3U2VsZWN0SXRlbU9wdGlvbjxzdHJpbmcgfCBudW1iZXI+W10+IHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuZ2V0T3B0aW9ucygpLCB0aGlzLmZpbHRlciRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbaXRlbXMsIHNlYXJjaFRlcm1dKSA9PiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IChmaWx0ZXIgPyBpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSA6IHRydWUpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZE9wdGlvbi5sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLnVwZGF0ZSh7IC4uLnRoaXMucHJvcGVydHkgfSBhcyBDYXJkVmlld1NlbGVjdEl0ZW1Nb2RlbDxzdHJpbmc+LCBzZWxlY3RlZE9wdGlvbi5rZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBldmVudC52YWx1ZSAhPT0gdW5kZWZpbmVkID8gZXZlbnQudmFsdWUgOiBudWxsO1xuICAgICAgICB0aGlzLmNhcmRWaWV3VXBkYXRlU2VydmljZS51cGRhdGUoeyAuLi50aGlzLnByb3BlcnR5IH0gYXMgQ2FyZFZpZXdTZWxlY3RJdGVtTW9kZWw8c3RyaW5nPiwgc2VsZWN0ZWRPcHRpb24pO1xuICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlID0gc2VsZWN0ZWRPcHRpb247XG4gICAgfVxuXG4gICAgZ2V0IHNob3dQcm9wZXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheUVtcHR5IHx8ICF0aGlzLnByb3BlcnR5LmlzRW1wdHkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBvcHRpb25zTGltaXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29uZmlnLmdldDxudW1iZXI+KCdjb250ZW50LW1ldGFkYXRhLnNlbGVjdEZpbHRlckxpbWl0JywgQ2FyZFZpZXdTZWxlY3RJdGVtQ29tcG9uZW50LkhJREVfRklMVEVSX0xJTUlUKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXByb3BlcnR5LmlzRW1wdHkoKSB8fCBpc0VkaXRhYmxlXCI+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwidGVtcGxhdGVUeXBlXCI+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC1zZWxlY3QtbGFiZWwtJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1sYWJlbFwiXG4gICAgICAgICAgICA+e3sgcHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXByb3BlcnR5LWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktdmFsdWUgYWRmLXByb3BlcnR5LXJlYWQtb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInc2VsZWN0LXJlYWRvbmx5LXZhbHVlLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24tY2xhc3M9XCJyZWFkLW9ubHktdmFsdWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcHJvcGVydHkuZGlzcGxheVZhbHVlIHwgYXN5bmMgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhZGYtcHJvcGVydHktdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtc2VsZWN0LWxhYmVsLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWxhYmVsIGFkZi1wcm9wZXJ0eS12YWx1ZS1lZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXJlYWRvbmx5LXZhbHVlJzogaXNSZWFkb25seVByb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IHByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbENsYXNzPVwiYWRmLXNlbGVjdC1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWNsYXNzPVwic2VsZWN0LWJveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwicHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtc2VsZWN0LWZpbHRlci1pbnB1dCAqbmdJZj1cInNob3dJbnB1dEZpbHRlclwiIChjaGFuZ2UpPVwib25GaWx0ZXJJbnB1dENoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImRpc3BsYXlOb25lT3B0aW9uXCI+e3sgJ0NPUkUuQ0FSRFZJRVcuTk9ORScgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBsaXN0JCB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdGlvbi5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInYXV0b2NvbXBsZXRlQmFzZWQnXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1maWVsZCBhZGYtY2FyZC1zZWxlY3RpdGVtLWF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWRmLXByb3BlcnR5LXJlYWQtb25seSc6ICFpc0VkaXRhYmxlIH1cIlxuICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cInByb3BlcnR5LmRlZmF1bHQgPyAnYWx3YXlzJyA6IG51bGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93UHJvcGVydHkgfHwgaXNFZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC1hdXRvY29tcGxldGUtYmFzZWQtc2VsZWN0aXRlbS1sYWJlbC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogaXNFZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktcmVhZG9ubHktdmFsdWUnOiBpc1JlYWRvbmx5UHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS12YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBpc0VkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wZXJ0eS5kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJhdXRvY29tcGxldGVDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ09QWV9UT19DTElQQk9BUkQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLWF1dG9jb21wbGV0ZS1iYXNlZC1zZWxlY3RpdGVtLXZhbHVlLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wZXJ0eS5vcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC1hdXRvY29tcGxldGUtYmFzZWQtc2VsZWN0aXRlbS1vcHRpb24tJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==