@alfresco/adf-core 8.1.0-16346981764 → 8.1.0-16445172226

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/esm2022/lib/app-config/app-config.module.mjs +1 -1
  2. package/esm2022/lib/app-config/provide-app-config.mjs +44 -0
  3. package/esm2022/lib/app-config/public-api.mjs +2 -1
  4. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +3 -3
  5. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +3 -3
  6. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +3 -3
  7. package/esm2022/lib/core.module.mjs +146 -164
  8. package/esm2022/lib/form/components/form-renderer.component.mjs +3 -3
  9. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +3 -3
  10. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +1 -1
  11. package/esm2022/lib/form/form-base.module.mjs +3 -18
  12. package/esm2022/lib/testing/core.testing.module.mjs +2 -1
  13. package/esm2022/lib/testing/noop-translate.module.mjs +22 -8
  14. package/esm2022/lib/translation/translate-loader.service.mjs +7 -2
  15. package/esm2022/lib/viewer/components/viewer.component.mjs +8 -8
  16. package/esm2022/shell/index.mjs +2 -1
  17. package/esm2022/shell/lib/shell.module.mjs +8 -12
  18. package/esm2022/shell/lib/shell.routes.mjs +26 -1
  19. package/fesm2022/adf-core.mjs +167 -133
  20. package/fesm2022/adf-core.mjs.map +1 -1
  21. package/fesm2022/alfresco-adf-core-shell.mjs +32 -11
  22. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  23. package/lib/app-config/app-config.module.d.ts +1 -0
  24. package/lib/app-config/provide-app-config.d.ts +23 -0
  25. package/lib/app-config/public-api.d.ts +1 -0
  26. package/lib/card-view/components/card-view/card-view.component.scss +0 -9
  27. package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +1 -2
  28. package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +1 -5
  29. package/lib/core.module.d.ts +124 -128
  30. package/lib/form/components/form-renderer.component.scss +4 -5
  31. package/lib/form/components/widgets/amount/amount.widget.scss +0 -8
  32. package/lib/form/form-base.module.d.ts +1 -0
  33. package/lib/testing/core.testing.module.d.ts +1 -0
  34. package/lib/testing/noop-translate.module.d.ts +1 -2
  35. package/lib/viewer/components/viewer.component.d.ts +3 -3
  36. package/package.json +3 -3
  37. package/shell/README.md +10 -6
  38. package/shell/index.d.ts +1 -0
  39. package/shell/lib/shell.module.d.ts +4 -7
  40. package/shell/lib/shell.routes.d.ts +13 -1
@@ -209,7 +209,7 @@ export class CardViewTextItemComponent extends BaseCardView {
209
209
  return String(Math.trunc(Number(value)));
210
210
  }
211
211
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardViewTextItemComponent, deps: [{ token: i1.ClipboardService }, { token: i2.TranslationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CardViewTextItemComponent, isStandalone: true, selector: "adf-card-view-textitem", inputs: { displayEmpty: "displayEmpty", copyToClipboardAction: "copyToClipboardAction", useChipsForMultiValueProperty: "useChipsForMultiValueProperty", multiValueSeparator: "multiValueSeparator", displayLabelForChips: "displayLabelForChips" }, host: { classAttribute: "adf-card-view-textitem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <mat-form-field\n class=\"adf-property-field adf-card-textitem-field\"\n [ngClass]=\"{\n 'adf-property-read-only': !isEditable\n }\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n\n <input\n matInput\n *ngIf=\"!property.multiline\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n (keydown)=\"undoText($event)\"\n />\n <textarea\n matInput\n *ngIf=\"property.multiline\"\n title=\"{{ property.label | translate }}\"\n [cdkTextareaAutosize]=\"true\"\n [cdkAutosizeMinRows]=\"1\"\n [cdkAutosizeMaxRows]=\"5\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'chipsTemplate'\"\n class=\"adf-property-field adf-textitem-chip-list-container\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <mat-label\n *ngIf=\"showLabelForChips\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n\n <mat-form-field\n *ngIf=\"isEditable\"\n class=\"adf-property-field adf-textitem-chip-list-input\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <input\n matInput\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n [attr.aria-label]=\"property.label | translate\"\n [matChipInputFor]=\"chipElement\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValueToList($event)\"\n [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n />\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'clickableTemplate'\"\n role=\"button\"\n class=\"adf-textitem-clickable\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n tabindex=\"0\"\n (keyup.enter)=\"clicked()\"\n (click)=\"clicked()\"\n >\n <mat-form-field class=\"adf-property-field adf-card-textitem-field\" [floatLabel]=\"property.default ? 'always' : null\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [type]=\"property.inputType\"\n class=\"adf-property-value\"\n title=\"{{ property.label | translate }}\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-textitem-clickable-value': isClickable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-has-icon-suffix': showClickableIcon\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [(ngModel)]=\"editedValue\"\n (blur)=\"update()\"\n (keydown.enter)=\"update()\"\n [readonly]=\"!isEditable\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n />\n <button\n mat-icon-button\n matSuffix\n *ngIf=\"showClickableIcon\"\n class=\"adf-textitem-action\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n >\n <mat-icon class=\"adf-textitem-icon\">{{ property?.icon }}</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'emptyTemplate'\">\n <span class=\"adf-textitem-default-value\">{{ property.default | translate }}</span>\n </div>\n\n <mat-error *ngIf=\"isEditable && hasErrors\" class=\"adf-textitem-error\" [attr.data-automation-id]=\"'card-textitem-error-' + property.key\">\n <ul>\n <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n </ul>\n </mat-error>\n</div>\n", styles: [".adf-card-view-textitem .adf-textitem-error{font-size:var(--theme-caption-font-size);padding-top:6px}.adf-card-view-textitem .adf-textitem-error ul{margin:0;padding:0;list-style-type:none}.adf-card-view-textitem .adf-textitem-error ul li{margin:0;padding:0}.adf-card-view-textitem .adf-textitem-action{width:30px;height:30px;padding:0;line-height:20px;color:var(--adf-theme-foreground-text-color-025)}.adf-card-view-textitem .adf-textitem-action:hover,.adf-card-view-textitem .adf-textitem-action:focus{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-action .mat-mdc-button-touch-target{width:30px;height:30px}.adf-card-view-textitem .mat-mdc-form-field-icon-suffix{position:absolute;right:1px;bottom:7px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-floating-label{margin-top:6px}.adf-card-view-textitem .adf-textitem-clickable{cursor:pointer;padding-top:3px}.adf-card-view-textitem .adf-textitem-clickable .adf-textitem-action:hover{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-clickable .adf-property-field .mat-mdc-input-element{color:var(--theme-primary-color);cursor:pointer}.adf-card-view-textitem .adf-textitem-default-value{color:var(--adf-theme-foreground-text-color-054)}.adf-card-view-textitem .adf-property-read-only:not(:has(.adf-property-readonly-value)){border-bottom:1px solid var(--adf-metadata-property-panel-border-color)}.adf-card-view-textitem .adf-property-readonly-value:disabled{color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-editable:not(:disabled){color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-has-icon-suffix{padding-right:34px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adf-card-view-textitem .mdc-line-ripple:before,.adf-card-view-textitem .mdc-line-ripple:after{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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: "directive", type: i6.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i8.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i8.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i8.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatSnackBarModule }], encapsulation: i0.ViewEncapsulation.None }); }
212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CardViewTextItemComponent, isStandalone: true, selector: "adf-card-view-textitem", inputs: { displayEmpty: "displayEmpty", copyToClipboardAction: "copyToClipboardAction", useChipsForMultiValueProperty: "useChipsForMultiValueProperty", multiValueSeparator: "multiValueSeparator", displayLabelForChips: "displayLabelForChips" }, host: { classAttribute: "adf-card-view-textitem" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <mat-form-field\n class=\"adf-property-field adf-card-textitem-field\"\n [ngClass]=\"{\n 'adf-property-read-only': !isEditable\n }\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n\n <input\n matInput\n *ngIf=\"!property.multiline\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-not-editable': !editable\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n (keydown)=\"undoText($event)\"\n />\n <textarea\n matInput\n *ngIf=\"property.multiline\"\n title=\"{{ property.label | translate }}\"\n [cdkTextareaAutosize]=\"true\"\n [cdkAutosizeMinRows]=\"1\"\n [cdkAutosizeMaxRows]=\"5\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'chipsTemplate'\"\n class=\"adf-property-field adf-textitem-chip-list-container\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <mat-label\n *ngIf=\"showLabelForChips\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n\n <mat-form-field\n *ngIf=\"isEditable\"\n class=\"adf-property-field adf-textitem-chip-list-input\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <input\n matInput\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n [attr.aria-label]=\"property.label | translate\"\n [matChipInputFor]=\"chipElement\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValueToList($event)\"\n [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n />\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'clickableTemplate'\"\n role=\"button\"\n class=\"adf-textitem-clickable\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n tabindex=\"0\"\n (keyup.enter)=\"clicked()\"\n (click)=\"clicked()\"\n >\n <mat-form-field class=\"adf-property-field adf-card-textitem-field\" [floatLabel]=\"property.default ? 'always' : null\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [type]=\"property.inputType\"\n class=\"adf-property-value\"\n title=\"{{ property.label | translate }}\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-textitem-clickable-value': isClickable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-has-icon-suffix': showClickableIcon\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [(ngModel)]=\"editedValue\"\n (blur)=\"update()\"\n (keydown.enter)=\"update()\"\n [readonly]=\"!isEditable\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n />\n <button\n mat-icon-button\n matSuffix\n *ngIf=\"showClickableIcon\"\n class=\"adf-textitem-action\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n >\n <mat-icon class=\"adf-textitem-icon\">{{ property?.icon }}</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'emptyTemplate'\">\n <span class=\"adf-textitem-default-value\">{{ property.default | translate }}</span>\n </div>\n\n <mat-error *ngIf=\"isEditable && hasErrors\" class=\"adf-textitem-error\" [attr.data-automation-id]=\"'card-textitem-error-' + property.key\">\n <ul>\n <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n </ul>\n </mat-error>\n</div>\n", styles: [".adf-card-view-textitem .adf-textitem-error{font-size:var(--theme-caption-font-size);padding-top:6px}.adf-card-view-textitem .adf-textitem-error ul{margin:0;padding:0;list-style-type:none}.adf-card-view-textitem .adf-textitem-error ul li{margin:0;padding:0}.adf-card-view-textitem .adf-textitem-action{width:30px;height:30px;padding:0;line-height:20px;color:var(--adf-theme-foreground-text-color-025)}.adf-card-view-textitem .adf-textitem-action:hover,.adf-card-view-textitem .adf-textitem-action:focus{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-action .mat-mdc-button-touch-target{width:30px;height:30px}.adf-card-view-textitem .mat-mdc-form-field-icon-suffix{position:absolute;right:1px;bottom:7px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-floating-label{margin-top:6px}.adf-card-view-textitem .adf-textitem-clickable{cursor:pointer;padding-top:3px}.adf-card-view-textitem .adf-textitem-clickable .adf-textitem-action:hover{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-clickable .adf-property-field .mat-mdc-input-element{color:var(--theme-primary-color);cursor:pointer}.adf-card-view-textitem .adf-textitem-default-value{color:var(--adf-theme-foreground-text-color-054)}.adf-card-view-textitem .adf-property-read-only:not(:has(.adf-property-readonly-value)){border-bottom:1px solid var(--adf-metadata-property-panel-border-color)}.adf-card-view-textitem .adf-property-value-not-editable{color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-has-icon-suffix{padding-right:34px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adf-card-view-textitem .mdc-line-ripple:before,.adf-card-view-textitem .mdc-line-ripple:after{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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: "directive", type: i6.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i8.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i8.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i8.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatSnackBarModule }], encapsulation: i0.ViewEncapsulation.None }); }
213
213
  }
214
214
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardViewTextItemComponent, decorators: [{
215
215
  type: Component,
@@ -224,7 +224,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
224
224
  FormsModule,
225
225
  MatButtonModule,
226
226
  MatSnackBarModule
227
- ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-textitem' }, template: "<div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <mat-form-field\n class=\"adf-property-field adf-card-textitem-field\"\n [ngClass]=\"{\n 'adf-property-read-only': !isEditable\n }\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n\n <input\n matInput\n *ngIf=\"!property.multiline\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n (keydown)=\"undoText($event)\"\n />\n <textarea\n matInput\n *ngIf=\"property.multiline\"\n title=\"{{ property.label | translate }}\"\n [cdkTextareaAutosize]=\"true\"\n [cdkAutosizeMinRows]=\"1\"\n [cdkAutosizeMaxRows]=\"5\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'chipsTemplate'\"\n class=\"adf-property-field adf-textitem-chip-list-container\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <mat-label\n *ngIf=\"showLabelForChips\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n\n <mat-form-field\n *ngIf=\"isEditable\"\n class=\"adf-property-field adf-textitem-chip-list-input\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <input\n matInput\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n [attr.aria-label]=\"property.label | translate\"\n [matChipInputFor]=\"chipElement\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValueToList($event)\"\n [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n />\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'clickableTemplate'\"\n role=\"button\"\n class=\"adf-textitem-clickable\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n tabindex=\"0\"\n (keyup.enter)=\"clicked()\"\n (click)=\"clicked()\"\n >\n <mat-form-field class=\"adf-property-field adf-card-textitem-field\" [floatLabel]=\"property.default ? 'always' : null\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [type]=\"property.inputType\"\n class=\"adf-property-value\"\n title=\"{{ property.label | translate }}\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-textitem-clickable-value': isClickable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-has-icon-suffix': showClickableIcon\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [(ngModel)]=\"editedValue\"\n (blur)=\"update()\"\n (keydown.enter)=\"update()\"\n [readonly]=\"!isEditable\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n />\n <button\n mat-icon-button\n matSuffix\n *ngIf=\"showClickableIcon\"\n class=\"adf-textitem-action\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n >\n <mat-icon class=\"adf-textitem-icon\">{{ property?.icon }}</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'emptyTemplate'\">\n <span class=\"adf-textitem-default-value\">{{ property.default | translate }}</span>\n </div>\n\n <mat-error *ngIf=\"isEditable && hasErrors\" class=\"adf-textitem-error\" [attr.data-automation-id]=\"'card-textitem-error-' + property.key\">\n <ul>\n <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n </ul>\n </mat-error>\n</div>\n", styles: [".adf-card-view-textitem .adf-textitem-error{font-size:var(--theme-caption-font-size);padding-top:6px}.adf-card-view-textitem .adf-textitem-error ul{margin:0;padding:0;list-style-type:none}.adf-card-view-textitem .adf-textitem-error ul li{margin:0;padding:0}.adf-card-view-textitem .adf-textitem-action{width:30px;height:30px;padding:0;line-height:20px;color:var(--adf-theme-foreground-text-color-025)}.adf-card-view-textitem .adf-textitem-action:hover,.adf-card-view-textitem .adf-textitem-action:focus{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-action .mat-mdc-button-touch-target{width:30px;height:30px}.adf-card-view-textitem .mat-mdc-form-field-icon-suffix{position:absolute;right:1px;bottom:7px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-floating-label{margin-top:6px}.adf-card-view-textitem .adf-textitem-clickable{cursor:pointer;padding-top:3px}.adf-card-view-textitem .adf-textitem-clickable .adf-textitem-action:hover{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-clickable .adf-property-field .mat-mdc-input-element{color:var(--theme-primary-color);cursor:pointer}.adf-card-view-textitem .adf-textitem-default-value{color:var(--adf-theme-foreground-text-color-054)}.adf-card-view-textitem .adf-property-read-only:not(:has(.adf-property-readonly-value)){border-bottom:1px solid var(--adf-metadata-property-panel-border-color)}.adf-card-view-textitem .adf-property-readonly-value:disabled{color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-editable:not(:disabled){color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-has-icon-suffix{padding-right:34px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adf-card-view-textitem .mdc-line-ripple:before,.adf-card-view-textitem .mdc-line-ripple:after{display:none}\n"] }]
227
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-card-view-textitem' }, template: "<div [ngSwitch]=\"templateType\">\n <div *ngSwitchDefault>\n <mat-form-field\n class=\"adf-property-field adf-card-textitem-field\"\n [ngClass]=\"{\n 'adf-property-read-only': !isEditable\n }\"\n >\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n >\n {{ property.label | translate }}\n </mat-label>\n\n <input\n matInput\n *ngIf=\"!property.multiline\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-not-editable': !editable\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n (dblclick)=\"copyToClipboard(property.displayValue)\"\n [title]=\"'CORE.METADATA.ACTIONS.COPY_TO_CLIPBOARD' | translate\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n (keydown)=\"undoText($event)\"\n />\n <textarea\n matInput\n *ngIf=\"property.multiline\"\n title=\"{{ property.label | translate }}\"\n [cdkTextareaAutosize]=\"true\"\n [cdkAutosizeMinRows]=\"1\"\n [cdkAutosizeMaxRows]=\"5\"\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [formControl]=\"textInput\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n >\n </textarea>\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'chipsTemplate'\"\n class=\"adf-property-field adf-textitem-chip-list-container\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <mat-label\n *ngIf=\"showLabelForChips\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <mat-chip-grid #chipElement class=\"adf-textitem-chip-list\">\n <mat-chip-row *ngFor=\"let propertyValue of editedValue; let idx = index\" [removable]=\"isEditable\" (removed)=\"removeValueFromList(idx)\">\n {{ propertyValue }}\n <mat-icon *ngIf=\"isEditable\" matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n\n <mat-form-field\n *ngIf=\"isEditable\"\n class=\"adf-property-field adf-textitem-chip-list-input\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n >\n <input\n matInput\n class=\"adf-property-value\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-property-readonly-value': isReadonlyProperty\n }\"\n title=\"{{ property.label | translate }}\"\n [placeholder]=\"editedValue ? '' : (property.default | translate)\"\n [attr.aria-label]=\"property.label | translate\"\n [matChipInputFor]=\"chipElement\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValueToList($event)\"\n [attr.data-automation-id]=\"'card-textitem-editchipinput-' + property.key\"\n />\n </mat-form-field>\n </div>\n\n <div\n *ngSwitchCase=\"'clickableTemplate'\"\n role=\"button\"\n class=\"adf-textitem-clickable\"\n [ngClass]=\"{ 'adf-property-read-only': !isEditable }\"\n [attr.data-automation-id]=\"'card-textitem-toggle-' + property.key\"\n tabindex=\"0\"\n (keyup.enter)=\"clicked()\"\n (click)=\"clicked()\"\n >\n <mat-form-field class=\"adf-property-field adf-card-textitem-field\" [floatLabel]=\"property.default ? 'always' : null\">\n <mat-label\n *ngIf=\"showProperty || isEditable\"\n [attr.data-automation-id]=\"'card-textitem-label-' + property.key\"\n class=\"adf-property-label\"\n [ngClass]=\"{ 'adf-property-value-editable': editable }\"\n >\n {{ property.label | translate }}\n </mat-label>\n <input\n matInput\n [type]=\"property.inputType\"\n class=\"adf-property-value\"\n title=\"{{ property.label | translate }}\"\n [ngClass]=\"{\n 'adf-property-value-editable': editable,\n 'adf-textitem-clickable-value': isClickable,\n 'adf-property-readonly-value': isReadonlyProperty,\n 'adf-property-value-has-error': isEditable && hasErrors,\n 'adf-property-value-has-icon-suffix': showClickableIcon\n }\"\n [placeholder]=\"property.default\"\n [attr.aria-label]=\"property.label | translate\"\n [(ngModel)]=\"editedValue\"\n (blur)=\"update()\"\n (keydown.enter)=\"update()\"\n [readonly]=\"!isEditable\"\n [attr.data-automation-id]=\"'card-textitem-value-' + property.key\"\n />\n <button\n mat-icon-button\n matSuffix\n *ngIf=\"showClickableIcon\"\n class=\"adf-textitem-action\"\n [attr.title]=\"'CORE.METADATA.ACTIONS.EDIT' | translate\"\n [attr.data-automation-id]=\"'card-textitem-clickable-icon-' + property.key\"\n >\n <mat-icon class=\"adf-textitem-icon\">{{ property?.icon }}</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"'emptyTemplate'\">\n <span class=\"adf-textitem-default-value\">{{ property.default | translate }}</span>\n </div>\n\n <mat-error *ngIf=\"isEditable && hasErrors\" class=\"adf-textitem-error\" [attr.data-automation-id]=\"'card-textitem-error-' + property.key\">\n <ul>\n <li *ngFor=\"let error of errors\">{{ error.message | translate : error }}</li>\n </ul>\n </mat-error>\n</div>\n", styles: [".adf-card-view-textitem .adf-textitem-error{font-size:var(--theme-caption-font-size);padding-top:6px}.adf-card-view-textitem .adf-textitem-error ul{margin:0;padding:0;list-style-type:none}.adf-card-view-textitem .adf-textitem-error ul li{margin:0;padding:0}.adf-card-view-textitem .adf-textitem-action{width:30px;height:30px;padding:0;line-height:20px;color:var(--adf-theme-foreground-text-color-025)}.adf-card-view-textitem .adf-textitem-action:hover,.adf-card-view-textitem .adf-textitem-action:focus{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-action .mat-mdc-button-touch-target{width:30px;height:30px}.adf-card-view-textitem .mat-mdc-form-field-icon-suffix{position:absolute;right:1px;bottom:7px}.adf-card-view-textitem .adf-textitem-chip-list-container .mat-mdc-floating-label{margin-top:6px}.adf-card-view-textitem .adf-textitem-clickable{cursor:pointer;padding-top:3px}.adf-card-view-textitem .adf-textitem-clickable .adf-textitem-action:hover{color:var(--adf-theme-foreground-text-color)}.adf-card-view-textitem .adf-textitem-clickable .adf-property-field .mat-mdc-input-element{color:var(--theme-primary-color);cursor:pointer}.adf-card-view-textitem .adf-textitem-default-value{color:var(--adf-theme-foreground-text-color-054)}.adf-card-view-textitem .adf-property-read-only:not(:has(.adf-property-readonly-value)){border-bottom:1px solid var(--adf-metadata-property-panel-border-color)}.adf-card-view-textitem .adf-property-value-not-editable{color:var(--adf-metadata-property-panel-title-color)}.adf-card-view-textitem .adf-property-value-has-icon-suffix{padding-right:34px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adf-card-view-textitem .mdc-line-ripple:before,.adf-card-view-textitem .mdc-line-ripple:after{display:none}\n"] }]
228
228
  }], ctorParameters: () => [{ type: i1.ClipboardService }, { type: i2.TranslationService }, { type: i0.ChangeDetectorRef }], propDecorators: { displayEmpty: [{
229
229
  type: Input
230
230
  }], copyToClipboardAction: [{
@@ -236,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
236
236
  }], displayLabelForChips: [{
237
237
  type: Input
238
238
  }] } });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC12aWV3LXRleHRpdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvY2FyZC12aWV3L2NvbXBvbmVudHMvY2FyZC12aWV3LXRleHRpdGVtL2NhcmQtdmlldy10ZXh0aXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2NhcmQtdmlldy9jb21wb25lbnRzL2NhcmQtdmlldy10ZXh0aXRlbS9jYXJkLXZpZXctdGV4dGl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBNEIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBcUIsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUs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c0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXJkVmlld1RleHRJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2FyZC12aWV3LXRleHRpdGVtLm1vZGVsJztcbmltcG9ydCB7IEJhc2VDYXJkVmlldyB9IGZyb20gJy4uL2Jhc2UtY2FyZC12aWV3JztcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50LCBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IENsaXBib2FyZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jbGlwYm9hcmQvY2xpcGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDYXJkVmlld0l0ZW1WYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NhcmQtdmlldy1pdGVtLXZhbGlkYXRvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVBBUkFUT1IgPSAnLCAnO1xuY29uc3QgdGVtcGxhdGVUeXBlcyA9IHtcbiAgICBjbGlja2FibGVUZW1wbGF0ZTogJ2NsaWNrYWJsZVRlbXBsYXRlJyxcbiAgICBtdWx0aWxpbmVUZW1wbGF0ZTogJ211bHRpbGluZVRlbXBsYXRlJyxcbiAgICBjaGlwc1RlbXBsYXRlOiAnY2hpcHNUZW1wbGF0ZScsXG4gICAgZW1wdHlUZW1wbGF0ZTogJ2VtcHR5VGVtcGxhdGUnLFxuICAgIGRlZmF1bHRUZW1wbGF0ZTogJ2RlZmF1bHRUZW1wbGF0ZSdcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNhcmQtdmlldy10ZXh0aXRlbScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVQaXBlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdFNuYWNrQmFyTW9kdWxlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC12aWV3LXRleHRpdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYXJkLXZpZXctdGV4dGl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtY2FyZC12aWV3LXRleHRpdGVtJyB9XG59KVxuZXhwb3J0IGNsYXNzIENhcmRWaWV3VGV4dEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ2FyZFZpZXc8Q2FyZFZpZXdUZXh0SXRlbU1vZGVsPiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RW1wdHkgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBjb3B5VG9DbGlwYm9hcmRBY3Rpb24gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICB1c2VDaGlwc0Zvck11bHRpVmFsdWVQcm9wZXJ0eSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIG11bHRpVmFsdWVTZXBhcmF0b3I6IHN0cmluZyA9IERFRkFVTFRfU0VQQVJBVE9SO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TGFiZWxGb3JDaGlwcyA9IGZhbHNlO1xuXG4gICAgZWRpdGVkVmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIGVycm9yczogQ2FyZFZpZXdJdGVtVmFsaWRhdG9yW107XG4gICAgdGVtcGxhdGVUeXBlOiBzdHJpbmc7XG4gICAgdGV4dElucHV0ID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnByb3BlcnR5Py5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy50ZXh0SW5wdXQudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigodGV4dElucHV0VmFsdWUpID0+IHRleHRJbnB1dFZhbHVlICE9PSB0aGlzLmVkaXRlZFZhbHVlICYmIHRleHRJbnB1dFZhbHVlICE9PSBudWxsKSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodGV4dElucHV0VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0ZWRWYWx1ZSA9IHRleHRJbnB1dFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXNldFZhbHVlKCk7XG4gICAgICAgIHRoaXMuc2V0VGVtcGxhdGVUeXBlKCk7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZWRpdGFibGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRJbnB1dC5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0SW5wdXQuZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUZW1wbGF0ZVR5cGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dQcm9wZXJ0eSB8fCB0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2xpY2thYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSB0ZW1wbGF0ZVR5cGVzLmNsaWNrYWJsZVRlbXBsYXRlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQ2hpcFZpZXdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSB0ZW1wbGF0ZVR5cGVzLmNoaXBzVGVtcGxhdGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVUeXBlID0gdGVtcGxhdGVUeXBlcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlVHlwZSA9IHRlbXBsYXRlVHlwZXMuZW1wdHlUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0VmFsdWUoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hpcFZpZXdFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRlZFZhbHVlID0gdGhpcy5wcm9wZXJ0eS52YWx1ZSA/IEFycmF5LmZyb20odGhpcy5wcm9wZXJ0eS52YWx1ZSkgOiBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGVkVmFsdWUgPSB0aGlzLnByb3BlcnR5LmRpc3BsYXlWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMudGV4dElucHV0LnNldFZhbHVlKHRoaXMuZWRpdGVkVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXNldEVycm9yTWVzc2FnZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0RXJyb3JNZXNzYWdlcygpIHtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICB9XG5cbiAgICB1cGRhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRFcnJvck1lc3NhZ2VzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc1ZhbGlkKHRoaXMuZWRpdGVkVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZSA9IHRoaXMucHJlcGFyZVZhbHVlRm9yVXBsb2FkKHRoaXMucHJvcGVydHksIHRoaXMuZWRpdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLnVwZGF0ZSh7IC4uLnRoaXMucHJvcGVydHksIGlzVmFsaWRWYWx1ZTogdHJ1ZSB9IGFzIENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCwgdGhpcy5wcm9wZXJ0eS52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gdGhpcy5wcm9wZXJ0eS5nZXRWYWxpZGF0aW9uRXJyb3JzKHRoaXMuZWRpdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLnVwZGF0ZSh7IC4uLnRoaXMucHJvcGVydHksIGlzVmFsaWRWYWx1ZTogZmFsc2UgfSBhcyBDYXJkVmlld1RleHRJdGVtTW9kZWwsIHRoaXMuZWRpdGVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJlcGFyZVZhbHVlRm9yVXBsb2FkKHByb3BlcnR5OiBDYXJkVmlld1RleHRJdGVtTW9kZWwsIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5tdWx0aXZhbHVlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zcGxpdCh0aGlzLm11bHRpVmFsdWVTZXBhcmF0b3IudHJpbSgpKS5tYXAoKGl0ZW0pID0+IGl0ZW0udHJpbSgpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ2ludCcgfHwgcHJvcGVydHkudHlwZSA9PT0gJ2xvbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJlcGFyZUludExvbmdWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJlbW92ZVZhbHVlRnJvbUxpc3QoaXRlbUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5lZGl0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGVkVmFsdWUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRWYWx1ZVRvTGlzdChuZXdMaXN0SXRlbTogTWF0Q2hpcElucHV0RXZlbnQpIHtcbiAgICAgICAgY29uc3QgY2hpcElucHV0ID0gbmV3TGlzdEl0ZW0uY2hpcElucHV0LmlucHV0RWxlbWVudDtcbiAgICAgICAgbGV0IGNoaXBWYWx1ZSA9IG5ld0xpc3RJdGVtLnZhbHVlLnRyaW0oKSB8fCAnJztcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWRpdGVkVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc1ZhbGlkKGNoaXBWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5LnR5cGUgPT09ICdpbnQnIHx8IHRoaXMucHJvcGVydHkudHlwZSA9PT0gJ2xvbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlwVmFsdWUgPSB0aGlzLnByZXBhcmVJbnRMb25nVmFsdWUoY2hpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRlZFZhbHVlLnB1c2goY2hpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpcElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaXBJbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLnByb3BlcnR5LmdldFZhbGlkYXRpb25FcnJvcnMoY2hpcFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wZXJ0eS5jbGlja0NhbGxCYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5LmNsaWNrQ2FsbEJhY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLmNsaWNrZWQodGhpcy5wcm9wZXJ0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclZhbHVlKCkge1xuICAgICAgICB0aGlzLmVkaXRlZFZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMudGV4dElucHV0LnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBjb3B5VG9DbGlwYm9hcmQodmFsdWVUb0NvcHk6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb3B5VG9DbGlwYm9hcmRBY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaXBib2FyZE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09SRS5NRVRBREFUQS5BQ0NFU1NJQklMSVRZLkNPUFlfVE9fQ0xJUEJPQVJEX01FU1NBR0UnKTtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jb3B5Q29udGVudFRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBjbGlwYm9hcmRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuZG9UZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5jb2RlID09PSAnS2V5WicgJiYgdGhpcy50ZXh0SW5wdXQudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudGV4dElucHV0LnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBzaG93UHJvcGVydHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlFbXB0eSB8fCAhdGhpcy5wcm9wZXJ0eS5pc0VtcHR5KCk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dDbGlja2FibGVJY29uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNJY29uICYmIHRoaXMuZWRpdGFibGU7XG4gICAgfVxuXG4gICAgZ2V0IGlzQ2xpY2thYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eS5jbGlja2FibGU7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5lcnJvcnM/Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgaXNDaGlwVmlld0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5Lm11bHRpdmFsdWVkICYmIHRoaXMudXNlQ2hpcHNGb3JNdWx0aVZhbHVlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dMYWJlbEZvckNoaXBzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5TGFiZWxGb3JDaGlwcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXBhcmVJbnRMb25nVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBTdHJpbmcoTWF0aC50cnVuYyhOdW1iZXIodmFsdWUpKSk7XG4gICAgfVxufVxuIiwiPGRpdiBbbmdTd2l0Y2hdPVwidGVtcGxhdGVUeXBlXCI+XG4gICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWZpZWxkIGFkZi1jYXJkLXRleHRpdGVtLWZpZWxkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXJlYWQtb25seSc6ICFpc0VkaXRhYmxlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1sYWJlbFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1Byb3BlcnR5IHx8IGlzRWRpdGFibGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1sYWJlbC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktcmVhZG9ubHktdmFsdWUnOiBpc1JlYWRvbmx5UHJvcGVydHlcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcHJvcGVydHkubXVsdGlsaW5lXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS12YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktcmVhZG9ubHktdmFsdWUnOiBpc1JlYWRvbmx5UHJvcGVydHksXG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtaGFzLWVycm9yJzogaXNFZGl0YWJsZSAmJiBoYXNFcnJvcnNcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcGVydHkuZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRleHRJbnB1dFwiXG4gICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZChwcm9wZXJ0eS5kaXNwbGF5VmFsdWUpXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5DT1BZX1RPX0NMSVBCT0FSRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS12YWx1ZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJ1bmRvVGV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvcGVydHkubXVsdGlsaW5lXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbY2RrVGV4dGFyZWFBdXRvc2l6ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIjFcIlxuICAgICAgICAgICAgICAgIFtjZGtBdXRvc2l6ZU1heFJvd3NdPVwiNVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktdmFsdWVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1lZGl0YWJsZSc6IGVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXJlYWRvbmx5LXZhbHVlJzogaXNSZWFkb25seVByb3BlcnR5XG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BlcnR5LmRlZmF1bHRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXh0SW5wdXRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS12YWx1ZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInY2hpcHNUZW1wbGF0ZSdcIlxuICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1maWVsZCBhZGYtdGV4dGl0ZW0tY2hpcC1saXN0LWNvbnRhaW5lclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FkZi1wcm9wZXJ0eS1yZWFkLW9ubHknOiAhaXNFZGl0YWJsZSB9XCJcbiAgICA+XG4gICAgICAgIDxtYXQtbGFiZWxcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0xhYmVsRm9yQ2hpcHNcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLXRleHRpdGVtLWxhYmVsLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktbGFiZWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogZWRpdGFibGUgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcEVsZW1lbnQgY2xhc3M9XCJhZGYtdGV4dGl0ZW0tY2hpcC1saXN0XCI+XG4gICAgICAgICAgICA8bWF0LWNoaXAtcm93ICpuZ0Zvcj1cImxldCBwcm9wZXJ0eVZhbHVlIG9mIGVkaXRlZFZhbHVlOyBsZXQgaWR4ID0gaW5kZXhcIiBbcmVtb3ZhYmxlXT1cImlzRWRpdGFibGVcIiAocmVtb3ZlZCk9XCJyZW1vdmVWYWx1ZUZyb21MaXN0KGlkeClcIj5cbiAgICAgICAgICAgICAgICB7eyBwcm9wZXJ0eVZhbHVlIH19XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXNFZGl0YWJsZVwiIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxuICAgICAgICA8L21hdC1jaGlwLWdyaWQ+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICAgICAqbmdJZj1cImlzRWRpdGFibGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktZmllbGQgYWRmLXRleHRpdGVtLWNoaXAtbGlzdC1pbnB1dFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhZGYtcHJvcGVydHktcmVhZC1vbmx5JzogIWlzRWRpdGFibGUgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktdmFsdWVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1lZGl0YWJsZSc6IGVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXJlYWRvbmx5LXZhbHVlJzogaXNSZWFkb25seVByb3BlcnR5XG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVkaXRlZFZhbHVlID8gJycgOiAocHJvcGVydHkuZGVmYXVsdCB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEVsZW1lbnRcIlxuICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRBZGRPbkJsdXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZFZhbHVlVG9MaXN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1lZGl0Y2hpcGlucHV0LScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidjbGlja2FibGVUZW1wbGF0ZSdcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJhZGYtdGV4dGl0ZW0tY2xpY2thYmxlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnYWRmLXByb3BlcnR5LXJlYWQtb25seSc6ICFpc0VkaXRhYmxlIH1cIlxuICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtdGV4dGl0ZW0tdG9nZ2xlLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiY2xpY2tlZCgpXCJcbiAgICAgICAgKGNsaWNrKT1cImNsaWNrZWQoKVwiXG4gICAgPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhZGYtcHJvcGVydHktZmllbGQgYWRmLWNhcmQtdGV4dGl0ZW0tZmllbGRcIiBbZmxvYXRMYWJlbF09XCJwcm9wZXJ0eS5kZWZhdWx0ID8gJ2Fsd2F5cycgOiBudWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93UHJvcGVydHkgfHwgaXNFZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLXRleHRpdGVtLWxhYmVsLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWxhYmVsXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBlZGl0YWJsZSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInByb3BlcnR5LmlucHV0VHlwZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktdmFsdWVcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgcHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1lZGl0YWJsZSc6IGVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAnYWRmLXRleHRpdGVtLWNsaWNrYWJsZS12YWx1ZSc6IGlzQ2xpY2thYmxlLFxuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXJlYWRvbmx5LXZhbHVlJzogaXNSZWFkb25seVByb3BlcnR5LFxuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXZhbHVlLWhhcy1lcnJvcic6IGlzRWRpdGFibGUgJiYgaGFzRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXZhbHVlLWhhcy1pY29uLXN1ZmZpeCc6IHNob3dDbGlja2FibGVJY29uXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BlcnR5LmRlZmF1bHRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cInVwZGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ1cGRhdGUoKVwiXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiFpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtdGV4dGl0ZW0tdmFsdWUtJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0NsaWNrYWJsZUljb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXRleHRpdGVtLWFjdGlvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ0NPUkUuTUVUQURBVEEuQUNUSU9OUy5FRElUJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLXRleHRpdGVtLWNsaWNrYWJsZS1pY29uLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi10ZXh0aXRlbS1pY29uXCI+e3sgcHJvcGVydHk/Lmljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZW1wdHlUZW1wbGF0ZSdcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtdGV4dGl0ZW0tZGVmYXVsdC12YWx1ZVwiPnt7IHByb3BlcnR5LmRlZmF1bHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNFZGl0YWJsZSAmJiBoYXNFcnJvcnNcIiBjbGFzcz1cImFkZi10ZXh0aXRlbS1lcnJvclwiIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1lcnJvci0nICsgcHJvcGVydHkua2V5XCI+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+e3sgZXJyb3IubWVzc2FnZSB8IHRyYW5zbGF0ZSA6IGVycm9yIH19PC9saT5cbiAgICAgICAgPC91bD5cbiAgICA8L21hdC1lcnJvcj5cbjwvZGl2PlxuIl19
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC12aWV3LXRleHRpdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvY2FyZC12aWV3L2NvbXBvbmVudHMvY2FyZC12aWV3LXRleHRpdGVtL2NhcmQtdmlldy10ZXh0aXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2NhcmQtdmlldy9jb21wb25lbnRzL2NhcmQtdmlldy10ZXh0aXRlbS9jYXJkLXZpZXctdGV4dGl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBNEIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBcUIsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUs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c0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXJkVmlld1RleHRJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2FyZC12aWV3LXRleHRpdGVtLm1vZGVsJztcbmltcG9ydCB7IEJhc2VDYXJkVmlldyB9IGZyb20gJy4uL2Jhc2UtY2FyZC12aWV3JztcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50LCBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IENsaXBib2FyZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jbGlwYm9hcmQvY2xpcGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDYXJkVmlld0l0ZW1WYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NhcmQtdmlldy1pdGVtLXZhbGlkYXRvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVBBUkFUT1IgPSAnLCAnO1xuY29uc3QgdGVtcGxhdGVUeXBlcyA9IHtcbiAgICBjbGlja2FibGVUZW1wbGF0ZTogJ2NsaWNrYWJsZVRlbXBsYXRlJyxcbiAgICBtdWx0aWxpbmVUZW1wbGF0ZTogJ211bHRpbGluZVRlbXBsYXRlJyxcbiAgICBjaGlwc1RlbXBsYXRlOiAnY2hpcHNUZW1wbGF0ZScsXG4gICAgZW1wdHlUZW1wbGF0ZTogJ2VtcHR5VGVtcGxhdGUnLFxuICAgIGRlZmF1bHRUZW1wbGF0ZTogJ2RlZmF1bHRUZW1wbGF0ZSdcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNhcmQtdmlldy10ZXh0aXRlbScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVQaXBlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdFNuYWNrQmFyTW9kdWxlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FyZC12aWV3LXRleHRpdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYXJkLXZpZXctdGV4dGl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtY2FyZC12aWV3LXRleHRpdGVtJyB9XG59KVxuZXhwb3J0IGNsYXNzIENhcmRWaWV3VGV4dEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ2FyZFZpZXc8Q2FyZFZpZXdUZXh0SXRlbU1vZGVsPiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RW1wdHkgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBjb3B5VG9DbGlwYm9hcmRBY3Rpb24gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICB1c2VDaGlwc0Zvck11bHRpVmFsdWVQcm9wZXJ0eSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIG11bHRpVmFsdWVTZXBhcmF0b3I6IHN0cmluZyA9IERFRkFVTFRfU0VQQVJBVE9SO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TGFiZWxGb3JDaGlwcyA9IGZhbHNlO1xuXG4gICAgZWRpdGVkVmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIGVycm9yczogQ2FyZFZpZXdJdGVtVmFsaWRhdG9yW107XG4gICAgdGVtcGxhdGVUeXBlOiBzdHJpbmc7XG4gICAgdGV4dElucHV0ID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnByb3BlcnR5Py5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy50ZXh0SW5wdXQudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigodGV4dElucHV0VmFsdWUpID0+IHRleHRJbnB1dFZhbHVlICE9PSB0aGlzLmVkaXRlZFZhbHVlICYmIHRleHRJbnB1dFZhbHVlICE9PSBudWxsKSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodGV4dElucHV0VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0ZWRWYWx1ZSA9IHRleHRJbnB1dFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXNldFZhbHVlKCk7XG4gICAgICAgIHRoaXMuc2V0VGVtcGxhdGVUeXBlKCk7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZWRpdGFibGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRJbnB1dC5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0SW5wdXQuZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUZW1wbGF0ZVR5cGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dQcm9wZXJ0eSB8fCB0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2xpY2thYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSB0ZW1wbGF0ZVR5cGVzLmNsaWNrYWJsZVRlbXBsYXRlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQ2hpcFZpZXdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSB0ZW1wbGF0ZVR5cGVzLmNoaXBzVGVtcGxhdGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVUeXBlID0gdGVtcGxhdGVUeXBlcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlVHlwZSA9IHRlbXBsYXRlVHlwZXMuZW1wdHlUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0VmFsdWUoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hpcFZpZXdFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRlZFZhbHVlID0gdGhpcy5wcm9wZXJ0eS52YWx1ZSA/IEFycmF5LmZyb20odGhpcy5wcm9wZXJ0eS52YWx1ZSkgOiBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGVkVmFsdWUgPSB0aGlzLnByb3BlcnR5LmRpc3BsYXlWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMudGV4dElucHV0LnNldFZhbHVlKHRoaXMuZWRpdGVkVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXNldEVycm9yTWVzc2FnZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0RXJyb3JNZXNzYWdlcygpIHtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICB9XG5cbiAgICB1cGRhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRFcnJvck1lc3NhZ2VzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc1ZhbGlkKHRoaXMuZWRpdGVkVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS52YWx1ZSA9IHRoaXMucHJlcGFyZVZhbHVlRm9yVXBsb2FkKHRoaXMucHJvcGVydHksIHRoaXMuZWRpdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLnVwZGF0ZSh7IC4uLnRoaXMucHJvcGVydHksIGlzVmFsaWRWYWx1ZTogdHJ1ZSB9IGFzIENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCwgdGhpcy5wcm9wZXJ0eS52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gdGhpcy5wcm9wZXJ0eS5nZXRWYWxpZGF0aW9uRXJyb3JzKHRoaXMuZWRpdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLnVwZGF0ZSh7IC4uLnRoaXMucHJvcGVydHksIGlzVmFsaWRWYWx1ZTogZmFsc2UgfSBhcyBDYXJkVmlld1RleHRJdGVtTW9kZWwsIHRoaXMuZWRpdGVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJlcGFyZVZhbHVlRm9yVXBsb2FkKHByb3BlcnR5OiBDYXJkVmlld1RleHRJdGVtTW9kZWwsIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5tdWx0aXZhbHVlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zcGxpdCh0aGlzLm11bHRpVmFsdWVTZXBhcmF0b3IudHJpbSgpKS5tYXAoKGl0ZW0pID0+IGl0ZW0udHJpbSgpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ2ludCcgfHwgcHJvcGVydHkudHlwZSA9PT0gJ2xvbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJlcGFyZUludExvbmdWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJlbW92ZVZhbHVlRnJvbUxpc3QoaXRlbUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5lZGl0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGVkVmFsdWUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRWYWx1ZVRvTGlzdChuZXdMaXN0SXRlbTogTWF0Q2hpcElucHV0RXZlbnQpIHtcbiAgICAgICAgY29uc3QgY2hpcElucHV0ID0gbmV3TGlzdEl0ZW0uY2hpcElucHV0LmlucHV0RWxlbWVudDtcbiAgICAgICAgbGV0IGNoaXBWYWx1ZSA9IG5ld0xpc3RJdGVtLnZhbHVlLnRyaW0oKSB8fCAnJztcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWRpdGVkVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc1ZhbGlkKGNoaXBWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5LnR5cGUgPT09ICdpbnQnIHx8IHRoaXMucHJvcGVydHkudHlwZSA9PT0gJ2xvbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlwVmFsdWUgPSB0aGlzLnByZXBhcmVJbnRMb25nVmFsdWUoY2hpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRlZFZhbHVlLnB1c2goY2hpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpcElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaXBJbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLnByb3BlcnR5LmdldFZhbGlkYXRpb25FcnJvcnMoY2hpcFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wZXJ0eS5jbGlja0NhbGxCYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5LmNsaWNrQ2FsbEJhY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLmNsaWNrZWQodGhpcy5wcm9wZXJ0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclZhbHVlKCkge1xuICAgICAgICB0aGlzLmVkaXRlZFZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMudGV4dElucHV0LnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBjb3B5VG9DbGlwYm9hcmQodmFsdWVUb0NvcHk6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb3B5VG9DbGlwYm9hcmRBY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaXBib2FyZE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQ09SRS5NRVRBREFUQS5BQ0NFU1NJQklMSVRZLkNPUFlfVE9fQ0xJUEJPQVJEX01FU1NBR0UnKTtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jb3B5Q29udGVudFRvQ2xpcGJvYXJkKHZhbHVlVG9Db3B5LCBjbGlwYm9hcmRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuZG9UZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5jb2RlID09PSAnS2V5WicgJiYgdGhpcy50ZXh0SW5wdXQudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudGV4dElucHV0LnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBzaG93UHJvcGVydHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlFbXB0eSB8fCAhdGhpcy5wcm9wZXJ0eS5pc0VtcHR5KCk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dDbGlja2FibGVJY29uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNJY29uICYmIHRoaXMuZWRpdGFibGU7XG4gICAgfVxuXG4gICAgZ2V0IGlzQ2xpY2thYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eS5jbGlja2FibGU7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5lcnJvcnM/Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgaXNDaGlwVmlld0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5Lm11bHRpdmFsdWVkICYmIHRoaXMudXNlQ2hpcHNGb3JNdWx0aVZhbHVlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dMYWJlbEZvckNoaXBzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5TGFiZWxGb3JDaGlwcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXBhcmVJbnRMb25nVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBTdHJpbmcoTWF0aC50cnVuYyhOdW1iZXIodmFsdWUpKSk7XG4gICAgfVxufVxuIiwiPGRpdiBbbmdTd2l0Y2hdPVwidGVtcGxhdGVUeXBlXCI+XG4gICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWZpZWxkIGFkZi1jYXJkLXRleHRpdGVtLWZpZWxkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXJlYWQtb25seSc6ICFpc0VkaXRhYmxlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1sYWJlbFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1Byb3BlcnR5IHx8IGlzRWRpdGFibGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1sYWJlbC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktcmVhZG9ubHktdmFsdWUnOiBpc1JlYWRvbmx5UHJvcGVydHlcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcHJvcGVydHkubXVsdGlsaW5lXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS12YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktcmVhZG9ubHktdmFsdWUnOiBpc1JlYWRvbmx5UHJvcGVydHksXG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtaGFzLWVycm9yJzogaXNFZGl0YWJsZSAmJiBoYXNFcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtbm90LWVkaXRhYmxlJzogIWVkaXRhYmxlXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BlcnR5LmRlZmF1bHRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXh0SW5wdXRcIlxuICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQocHJvcGVydHkuZGlzcGxheVZhbHVlKVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuQ09QWV9UT19DTElQQk9BUkQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtdGV4dGl0ZW0tdmFsdWUtJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwidW5kb1RleHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cInByb3BlcnR5Lm11bHRpbGluZVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgW2Nka1RleHRhcmVhQXV0b3NpemVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Nka0F1dG9zaXplTWluUm93c109XCIxXCJcbiAgICAgICAgICAgICAgICBbY2RrQXV0b3NpemVNYXhSb3dzXT1cIjVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBlZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wZXJ0eS5kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwidGV4dElucHV0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtdGV4dGl0ZW0tdmFsdWUtJyArIHByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2NoaXBzVGVtcGxhdGUnXCJcbiAgICAgICAgY2xhc3M9XCJhZGYtcHJvcGVydHktZmllbGQgYWRmLXRleHRpdGVtLWNoaXAtbGlzdC1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdhZGYtcHJvcGVydHktcmVhZC1vbmx5JzogIWlzRWRpdGFibGUgfVwiXG4gICAgPlxuICAgICAgICA8bWF0LWxhYmVsXG4gICAgICAgICAgICAqbmdJZj1cInNob3dMYWJlbEZvckNoaXBzXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1sYWJlbC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWxhYmVsXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1lZGl0YWJsZSc6IGVkaXRhYmxlIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBwcm9wZXJ0eS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgPG1hdC1jaGlwLWdyaWQgI2NoaXBFbGVtZW50IGNsYXNzPVwiYWRmLXRleHRpdGVtLWNoaXAtbGlzdFwiPlxuICAgICAgICAgICAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgcHJvcGVydHlWYWx1ZSBvZiBlZGl0ZWRWYWx1ZTsgbGV0IGlkeCA9IGluZGV4XCIgW3JlbW92YWJsZV09XCJpc0VkaXRhYmxlXCIgKHJlbW92ZWQpPVwicmVtb3ZlVmFsdWVGcm9tTGlzdChpZHgpXCI+XG4gICAgICAgICAgICAgICAge3sgcHJvcGVydHlWYWx1ZSB9fVxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImlzRWRpdGFibGVcIiBtYXRDaGlwUmVtb3ZlPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1jaGlwLXJvdz5cbiAgICAgICAgPC9tYXQtY2hpcC1ncmlkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAgICAgKm5nSWY9XCJpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LWZpZWxkIGFkZi10ZXh0aXRlbS1jaGlwLWxpc3QtaW5wdXRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWRmLXByb3BlcnR5LXJlYWQtb25seSc6ICFpc0VkaXRhYmxlIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LXZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBlZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgcHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlZGl0ZWRWYWx1ZSA/ICcnIDogKHByb3BlcnR5LmRlZmF1bHQgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBFbGVtZW50XCJcbiAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGRWYWx1ZVRvTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtdGV4dGl0ZW0tZWRpdGNoaXBpbnB1dC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInY2xpY2thYmxlVGVtcGxhdGUnXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYWRmLXRleHRpdGVtLWNsaWNrYWJsZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FkZi1wcm9wZXJ0eS1yZWFkLW9ubHknOiAhaXNFZGl0YWJsZSB9XCJcbiAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLXRleHRpdGVtLXRvZ2dsZS0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImNsaWNrZWQoKVwiXG4gICAgICAgIChjbGljayk9XCJjbGlja2VkKClcIlxuICAgID5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYWRmLXByb3BlcnR5LWZpZWxkIGFkZi1jYXJkLXRleHRpdGVtLWZpZWxkXCIgW2Zsb2F0TGFiZWxdPVwicHJvcGVydHkuZGVmYXVsdCA/ICdhbHdheXMnIDogbnVsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1Byb3BlcnR5IHx8IGlzRWRpdGFibGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1sYWJlbC0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9wZXJ0eS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWRmLXByb3BlcnR5LXZhbHVlLWVkaXRhYmxlJzogZWRpdGFibGUgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJwcm9wZXJ0eS5pbnB1dFR5cGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXByb3BlcnR5LXZhbHVlXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdhZGYtcHJvcGVydHktdmFsdWUtZWRpdGFibGUnOiBlZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi10ZXh0aXRlbS1jbGlja2FibGUtdmFsdWUnOiBpc0NsaWNrYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS1yZWFkb25seS12YWx1ZSc6IGlzUmVhZG9ubHlQcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1oYXMtZXJyb3InOiBpc0VkaXRhYmxlICYmIGhhc0Vycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZi1wcm9wZXJ0eS12YWx1ZS1oYXMtaWNvbi1zdWZmaXgnOiBzaG93Q2xpY2thYmxlSWNvblxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wZXJ0eS5kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BlcnR5LmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJ1cGRhdGUoKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwidXBkYXRlKClcIlxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhaXNFZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLXRleHRpdGVtLXZhbHVlLScgKyBwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dDbGlja2FibGVJY29uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi10ZXh0aXRlbS1hY3Rpb25cIlxuICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIidDT1JFLk1FVEFEQVRBLkFDVElPTlMuRURJVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1jbGlja2FibGUtaWNvbi0nICsgcHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtdGV4dGl0ZW0taWNvblwiPnt7IHByb3BlcnR5Py5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2VtcHR5VGVtcGxhdGUnXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLXRleHRpdGVtLWRlZmF1bHQtdmFsdWVcIj57eyBwcm9wZXJ0eS5kZWZhdWx0IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRWRpdGFibGUgJiYgaGFzRXJyb3JzXCIgY2xhc3M9XCJhZGYtdGV4dGl0ZW0tZXJyb3JcIiBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2NhcmQtdGV4dGl0ZW0tZXJyb3ItJyArIHByb3BlcnR5LmtleVwiPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGVycm9yIG9mIGVycm9yc1wiPnt7IGVycm9yLm1lc3NhZ2UgfCB0cmFuc2xhdGUgOiBlcnJvciB9fTwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgPC9tYXQtZXJyb3I+XG48L2Rpdj5cbiJdfQ==