@eo-sdk/client 11.8.0-rc.1 → 11.8.0-rc.3

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 (42) hide show
  1. package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.d.ts.map +1 -1
  2. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  3. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
  4. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +78 -23
  5. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  6. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.d.ts +24 -0
  7. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.d.ts.map +1 -0
  8. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +6 -0
  9. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
  10. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts +5 -5
  11. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
  12. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  13. package/app/eo-framework/object-form/object-form-helper.service.d.ts +31 -11
  14. package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
  15. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +7 -0
  16. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
  17. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts +1 -0
  18. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts.map +1 -1
  19. package/assets/_default/i18n/de.json +3 -2
  20. package/assets/_default/i18n/en.json +7 -6
  21. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  22. package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.mjs +2 -1
  23. package/esm2022/app/eo-client/process-state/process-state.component.mjs +1 -1
  24. package/esm2022/app/eo-client/settings/settings.component.mjs +3 -3
  25. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +4 -3
  26. package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +3 -2
  27. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +215 -94
  28. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.mjs +39 -0
  29. package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +19 -10
  30. package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +2 -2
  31. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +16 -22
  32. package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +8 -3
  33. package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
  34. package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +3 -3
  35. package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +3 -3
  36. package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +43 -16
  37. package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +14 -2
  38. package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +9 -3
  39. package/esm2022/app/eo-framework-core/agent/agent.service.mjs +3 -3
  40. package/fesm2022/eo-sdk-client.mjs +523 -318
  41. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  42. package/package.json +2 -2
@@ -8,13 +8,14 @@ import * as i2 from "./../../../eo-framework-core/references/reference.service";
8
8
  import * as i3 from "@angular/common";
9
9
  import * as i4 from "@angular/forms";
10
10
  import * as i5 from "../../ui/eo-icon/eo-icon.component";
11
- import * as i6 from "../../ui/router-link/router-link.directive";
12
- import * as i7 from "../../ui/rtl-aware/rtl-aware.directive";
13
- import * as i8 from "../../ui/eo-dialog/eo-dialog.component";
14
- import * as i9 from "@angular/router";
15
- import * as i10 from "@yuuvis/components/autocomplete";
16
- import * as i11 from "./reference-finder/reference-finder.component";
17
- import * as i12 from "@ngx-translate/core";
11
+ import * as i6 from "../../ui/outside-click/outside-click.directive";
12
+ import * as i7 from "../../ui/router-link/router-link.directive";
13
+ import * as i8 from "../../ui/rtl-aware/rtl-aware.directive";
14
+ import * as i9 from "../../ui/eo-dialog/eo-dialog.component";
15
+ import * as i10 from "@angular/router";
16
+ import * as i11 from "@yuuvis/components/autocomplete";
17
+ import * as i12 from "./reference-finder/reference-finder.component";
18
+ import * as i13 from "@ngx-translate/core";
18
19
  export class IdReferenceComponent {
19
20
  set innerValues(data) {
20
21
  if (data) {
@@ -199,6 +200,14 @@ export class IdReferenceComponent {
199
200
  this.multiselect = true;
200
201
  }
201
202
  }
203
+ /**
204
+ * Updates the visibility of the dialog.
205
+ *
206
+ * @param {boolean} event - The new visibility state of the dialog.
207
+ */
208
+ updateDialogVisibility(event) {
209
+ this.visibleDialog = event;
210
+ }
202
211
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: IdReferenceComponent, deps: [{ token: i1.ClipboardService }, { token: i1.SystemService }, { token: i2.ReferenceService }, { token: i1.SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
203
212
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: IdReferenceComponent, selector: "eo-id-reference", inputs: { readonly: "readonly", multiselect: "multiselect", situation: "situation", contextId: "contextId", exceptionIDs: "exceptionIDs", dataToRender: "dataToRender", reference: "reference", queryFilters: "queryFilters", objectTypesFilter: "objectTypesFilter" }, providers: [
204
213
  {
@@ -211,7 +220,7 @@ export class IdReferenceComponent {
211
220
  useExisting: forwardRef(() => IdReferenceComponent),
212
221
  multi: true
213
222
  }
214
- ], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-id-reference\" [ngClass]=\"{acInputHidden: !multiselect && _innerValues.length}\">\n <yvc-autocomplete [(ngModel)]=\"innerValues\" [minLength]=\"1\" #autocomplete\n (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"removeItem($event)\"\n (blur)=\"onAutoCompleteBlur()\" [autocompleteValues]=\"autocompleteRes\" field=\"title\" [disabled]=\"readonly\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <!-- [styleClass]=\"!multiselect && innerValues.length === 1 ? 'xxx' : ''\"> -->\n\n <ng-template #chipTemplate let-item>\n <a *ngIf=\"!item.state || item.state === 'OK'\" class=\"link router-link\"\n [routerLink]=\"['/object', item.id, {outlets: {modal: null}}]\" [queryParams]=\"{type: referenceType.qname}\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <eo-icon [objectType]=\"referenceType\" title=\"{{referenceType?.label}}\" class=\"ref-type-icon\" [ngClass]=\"{'deleted-reference-label': item.state && (item.state === 'RECYCLED' || item.state === 'GONE')}\"></eo-icon>\n <span *ngIf=\"!(item.state && (item.state === 'RECYCLED' || item.state === 'GONE')); else deleted\" class=\"label\" eoRtlAware=\"full\">\n <span *ngIf=\"item.title || referenceType?.label; else noAccess\">\n {{item.title || referenceType?.label}}\n </span>\n </span>\n <ng-template #noAccess>\n <span class=\"label no-access-reference-label\">{{('eo.references.noAccess' | translate)}}</span>\n </ng-template>\n <ng-template #deleted>\n <span class=\"label deleted-reference-label\">{{('eo.references.deleted' | translate)}}</span>\n </ng-template>\n </ng-template>\n </yvc-autocomplete>\n\n <ng-template #notFound><span class=\"label\">{{innerValues && innerValues.length ? ('eo.references.not.available' |\n translate) : ''}}</span></ng-template>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\"\n title=\"{{('eo.references.search' | translate) + ' ' + tooltipTypeHint}}\" [disabled]=\"selectionDisabled\"\n (click)=\"showDialog()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_none.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"('eo.references.add' | translate)\" [subtitle]=\"referenceType?.label\" [(visible)]=\"visibleDialog\"\n [minHeight]=\"590\" [styleClass]=\"'reference-field-dialog'\" #dialog>\n\n <eo-reference-finder *ngIf=\"dialog.visible\" [isDisabled]=\"isDisabled\" [types]=\"referenceType.qname\"\n [multiselect]=\"multiselect\" [currentSelection]=\"innerValues\" [clipboard]=\"clipboard\" [contextId]=\"contextId\"\n [exceptionIDs]=\"exceptionIDs\" [queryFilters]=\"queryFilters\" (addDmsObjects)=\"paste($event)\">\n </eo-reference-finder>\n</eo-dialog>\n", styles: [".eo-id-reference{display:flex;align-items:center}.eo-id-reference__element{display:flex;align-self:center;flex-wrap:wrap}.eo-id-reference>button{padding:0}.eo-id-reference>button eo-icon{width:16px;height:16px;margin:auto}::ng-deep .eo-id-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}::ng-deep .eo-id-reference.acInputHidden .inputToken input{width:0!important}::ng-deep .reference-field-dialog{width:100%;height:100%}::ng-deep .eo-dialog-content{display:contents!important}::ng-deep .cdk-overlay-pane:has(.reference-field-dialog){height:60%;width:577px}::ng-deep .deleted-reference-label,::ng-deep .no-access-reference-label{color:var(--color-error)}::ng-deep .label{display:flex;flex-flow:column;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .label>span{font-size:var(--font-hint)}::ng-deep .label.rtl{margin-left:1em;margin-right:4px}::ng-deep a.link{color:var(--text-color-caption);pointer-events:all;display:flex}::ng-deep a.link:hover{color:var(--color-accent)}::ng-deep .ref-icon,::ng-deep .ref-type-icon{width:16px;height:16px;color:var(--text-color-caption)}::ng-deep .remove-icon{color:var(--text-color-hint);height:14px;width:14px;flex:0 0 auto}::ng-deep .remove-icon:hover{color:var(--text-color-caption);cursor:pointer}yvc-autocomplete{width:100%;border:0;outline:0!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i6.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i7.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i8.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i9.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i11.ReferenceFinderComponent, selector: "eo-reference-finder", inputs: ["isDisabled", "types", "multiselect", "contextId", "exceptionIDs", "queryFilters", "currentSelection", "clipboard"], outputs: ["addDmsObjects"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] }); }
223
+ ], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-id-reference\" [ngClass]=\"{acInputHidden: !multiselect && _innerValues.length}\">\n <yvc-autocomplete [(ngModel)]=\"innerValues\" [minLength]=\"1\" #autocomplete\n (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"removeItem($event)\"\n (blur)=\"onAutoCompleteBlur()\" [autocompleteValues]=\"autocompleteRes\" field=\"title\" [disabled]=\"readonly\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <!-- [styleClass]=\"!multiselect && innerValues.length === 1 ? 'xxx' : ''\"> -->\n\n <ng-template #chipTemplate let-item>\n <a *ngIf=\"!item.state || item.state === 'OK'\" class=\"link router-link\"\n [routerLink]=\"['/object', item.id, {outlets: {modal: null}}]\" [queryParams]=\"{type: referenceType.qname}\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <eo-icon [objectType]=\"referenceType\" title=\"{{referenceType?.label}}\" class=\"ref-type-icon\" [ngClass]=\"{'deleted-reference-label': item.state && (item.state === 'RECYCLED' || item.state === 'GONE')}\"></eo-icon>\n <span *ngIf=\"!(item.state && (item.state === 'RECYCLED' || item.state === 'GONE')); else deleted\" class=\"label\" eoRtlAware=\"full\">\n <span *ngIf=\"item.title || referenceType?.label; else noAccess\">\n {{item.title || referenceType?.label}}\n </span>\n </span>\n <ng-template #noAccess>\n <span class=\"label no-access-reference-label\">{{('eo.references.noAccess' | translate)}}</span>\n </ng-template>\n <ng-template #deleted>\n <span class=\"label deleted-reference-label\">{{('eo.references.deleted' | translate)}}</span>\n </ng-template>\n </ng-template>\n </yvc-autocomplete>\n\n <ng-template #notFound><span class=\"label\">{{innerValues && innerValues.length ? ('eo.references.not.available' |\n translate) : ''}}</span></ng-template>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\"\n title=\"{{('eo.references.search' | translate) + ' ' + tooltipTypeHint}}\" [disabled]=\"selectionDisabled\"\n (click)=\"showDialog()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_none.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"('eo.references.add' | translate)\" [subtitle]=\"referenceType?.label\" [(visible)]=\"visibleDialog\"\n [minHeight]=\"590\" [styleClass]=\"'reference-field-dialog'\" #dialog (visibleChange)=\"updateDialogVisibility($event)\" (eoOutsideClick)=\"updateDialogVisibility(false)\">\n\n <eo-reference-finder *ngIf=\"dialog.visible\" [isDisabled]=\"isDisabled\" [types]=\"referenceType.qname\"\n [multiselect]=\"multiselect\" [currentSelection]=\"innerValues\" [clipboard]=\"clipboard\" [contextId]=\"contextId\"\n [exceptionIDs]=\"exceptionIDs\" [queryFilters]=\"queryFilters\" (addDmsObjects)=\"paste($event)\">\n </eo-reference-finder>\n</eo-dialog>\n", styles: [".eo-id-reference{display:flex;align-items:center}.eo-id-reference__element{display:flex;align-self:center;flex-wrap:wrap}.eo-id-reference>button{padding:0}.eo-id-reference>button eo-icon{width:16px;height:16px;margin:auto}::ng-deep .eo-id-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}::ng-deep .eo-id-reference.acInputHidden .inputToken input{width:0!important}::ng-deep .reference-field-dialog{width:100%;height:100%}::ng-deep .eo-dialog-content{display:contents!important}::ng-deep .cdk-overlay-pane:has(.reference-field-dialog){height:60%;width:577px}::ng-deep .deleted-reference-label,::ng-deep .no-access-reference-label{color:var(--color-error)}::ng-deep .label{display:flex;flex-flow:column;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .label>span{font-size:var(--font-hint)}::ng-deep .label.rtl{margin-left:1em;margin-right:4px}::ng-deep a.link{color:var(--text-color-caption);pointer-events:all;display:flex}::ng-deep a.link:hover{color:var(--color-accent)}::ng-deep .ref-icon,::ng-deep .ref-type-icon{width:16px;height:16px;color:var(--text-color-caption)}::ng-deep .remove-icon{color:var(--text-color-hint);height:14px;width:14px;flex:0 0 auto}::ng-deep .remove-icon:hover{color:var(--text-color-caption);cursor:pointer}yvc-autocomplete{width:100%;border:0;outline:0!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i6.OutsideClickDirective, selector: "[eoOutsideClick]", outputs: ["eoOutsideClick"] }, { kind: "directive", type: i7.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i8.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i9.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i11.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i12.ReferenceFinderComponent, selector: "eo-reference-finder", inputs: ["isDisabled", "types", "multiselect", "contextId", "exceptionIDs", "queryFilters", "currentSelection", "clipboard"], outputs: ["addDmsObjects"] }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] }); }
215
224
  }
216
225
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: IdReferenceComponent, decorators: [{
217
226
  type: Component,
@@ -226,7 +235,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
226
235
  useExisting: forwardRef(() => IdReferenceComponent),
227
236
  multi: true
228
237
  }
229
- ], template: "<div class=\"eo-id-reference\" [ngClass]=\"{acInputHidden: !multiselect && _innerValues.length}\">\n <yvc-autocomplete [(ngModel)]=\"innerValues\" [minLength]=\"1\" #autocomplete\n (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"removeItem($event)\"\n (blur)=\"onAutoCompleteBlur()\" [autocompleteValues]=\"autocompleteRes\" field=\"title\" [disabled]=\"readonly\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <!-- [styleClass]=\"!multiselect && innerValues.length === 1 ? 'xxx' : ''\"> -->\n\n <ng-template #chipTemplate let-item>\n <a *ngIf=\"!item.state || item.state === 'OK'\" class=\"link router-link\"\n [routerLink]=\"['/object', item.id, {outlets: {modal: null}}]\" [queryParams]=\"{type: referenceType.qname}\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <eo-icon [objectType]=\"referenceType\" title=\"{{referenceType?.label}}\" class=\"ref-type-icon\" [ngClass]=\"{'deleted-reference-label': item.state && (item.state === 'RECYCLED' || item.state === 'GONE')}\"></eo-icon>\n <span *ngIf=\"!(item.state && (item.state === 'RECYCLED' || item.state === 'GONE')); else deleted\" class=\"label\" eoRtlAware=\"full\">\n <span *ngIf=\"item.title || referenceType?.label; else noAccess\">\n {{item.title || referenceType?.label}}\n </span>\n </span>\n <ng-template #noAccess>\n <span class=\"label no-access-reference-label\">{{('eo.references.noAccess' | translate)}}</span>\n </ng-template>\n <ng-template #deleted>\n <span class=\"label deleted-reference-label\">{{('eo.references.deleted' | translate)}}</span>\n </ng-template>\n </ng-template>\n </yvc-autocomplete>\n\n <ng-template #notFound><span class=\"label\">{{innerValues && innerValues.length ? ('eo.references.not.available' |\n translate) : ''}}</span></ng-template>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\"\n title=\"{{('eo.references.search' | translate) + ' ' + tooltipTypeHint}}\" [disabled]=\"selectionDisabled\"\n (click)=\"showDialog()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_none.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"('eo.references.add' | translate)\" [subtitle]=\"referenceType?.label\" [(visible)]=\"visibleDialog\"\n [minHeight]=\"590\" [styleClass]=\"'reference-field-dialog'\" #dialog>\n\n <eo-reference-finder *ngIf=\"dialog.visible\" [isDisabled]=\"isDisabled\" [types]=\"referenceType.qname\"\n [multiselect]=\"multiselect\" [currentSelection]=\"innerValues\" [clipboard]=\"clipboard\" [contextId]=\"contextId\"\n [exceptionIDs]=\"exceptionIDs\" [queryFilters]=\"queryFilters\" (addDmsObjects)=\"paste($event)\">\n </eo-reference-finder>\n</eo-dialog>\n", styles: [".eo-id-reference{display:flex;align-items:center}.eo-id-reference__element{display:flex;align-self:center;flex-wrap:wrap}.eo-id-reference>button{padding:0}.eo-id-reference>button eo-icon{width:16px;height:16px;margin:auto}::ng-deep .eo-id-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}::ng-deep .eo-id-reference.acInputHidden .inputToken input{width:0!important}::ng-deep .reference-field-dialog{width:100%;height:100%}::ng-deep .eo-dialog-content{display:contents!important}::ng-deep .cdk-overlay-pane:has(.reference-field-dialog){height:60%;width:577px}::ng-deep .deleted-reference-label,::ng-deep .no-access-reference-label{color:var(--color-error)}::ng-deep .label{display:flex;flex-flow:column;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .label>span{font-size:var(--font-hint)}::ng-deep .label.rtl{margin-left:1em;margin-right:4px}::ng-deep a.link{color:var(--text-color-caption);pointer-events:all;display:flex}::ng-deep a.link:hover{color:var(--color-accent)}::ng-deep .ref-icon,::ng-deep .ref-type-icon{width:16px;height:16px;color:var(--text-color-caption)}::ng-deep .remove-icon{color:var(--text-color-hint);height:14px;width:14px;flex:0 0 auto}::ng-deep .remove-icon:hover{color:var(--text-color-caption);cursor:pointer}yvc-autocomplete{width:100%;border:0;outline:0!important}\n"] }]
238
+ ], template: "<div class=\"eo-id-reference\" [ngClass]=\"{acInputHidden: !multiselect && _innerValues.length}\">\n <yvc-autocomplete [(ngModel)]=\"innerValues\" [minLength]=\"1\" #autocomplete\n (suggestionSelect)=\"onAutoCompleteSelect($event)\" (suggestionUnselect)=\"removeItem($event)\"\n (blur)=\"onAutoCompleteBlur()\" [autocompleteValues]=\"autocompleteRes\" field=\"title\" [disabled]=\"readonly\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <!-- [styleClass]=\"!multiselect && innerValues.length === 1 ? 'xxx' : ''\"> -->\n\n <ng-template #chipTemplate let-item>\n <a *ngIf=\"!item.state || item.state === 'OK'\" class=\"link router-link\"\n [routerLink]=\"['/object', item.id, {outlets: {modal: null}}]\" [queryParams]=\"{type: referenceType.qname}\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <eo-icon [objectType]=\"referenceType\" title=\"{{referenceType?.label}}\" class=\"ref-type-icon\" [ngClass]=\"{'deleted-reference-label': item.state && (item.state === 'RECYCLED' || item.state === 'GONE')}\"></eo-icon>\n <span *ngIf=\"!(item.state && (item.state === 'RECYCLED' || item.state === 'GONE')); else deleted\" class=\"label\" eoRtlAware=\"full\">\n <span *ngIf=\"item.title || referenceType?.label; else noAccess\">\n {{item.title || referenceType?.label}}\n </span>\n </span>\n <ng-template #noAccess>\n <span class=\"label no-access-reference-label\">{{('eo.references.noAccess' | translate)}}</span>\n </ng-template>\n <ng-template #deleted>\n <span class=\"label deleted-reference-label\">{{('eo.references.deleted' | translate)}}</span>\n </ng-template>\n </ng-template>\n </yvc-autocomplete>\n\n <ng-template #notFound><span class=\"label\">{{innerValues && innerValues.length ? ('eo.references.not.available' |\n translate) : ''}}</span></ng-template>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\"\n title=\"{{('eo.references.search' | translate) + ' ' + tooltipTypeHint}}\" [disabled]=\"selectionDisabled\"\n (click)=\"showDialog()\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_none.svg'\"></eo-icon>\n </button>\n</div>\n\n<eo-dialog [title]=\"('eo.references.add' | translate)\" [subtitle]=\"referenceType?.label\" [(visible)]=\"visibleDialog\"\n [minHeight]=\"590\" [styleClass]=\"'reference-field-dialog'\" #dialog (visibleChange)=\"updateDialogVisibility($event)\" (eoOutsideClick)=\"updateDialogVisibility(false)\">\n\n <eo-reference-finder *ngIf=\"dialog.visible\" [isDisabled]=\"isDisabled\" [types]=\"referenceType.qname\"\n [multiselect]=\"multiselect\" [currentSelection]=\"innerValues\" [clipboard]=\"clipboard\" [contextId]=\"contextId\"\n [exceptionIDs]=\"exceptionIDs\" [queryFilters]=\"queryFilters\" (addDmsObjects)=\"paste($event)\">\n </eo-reference-finder>\n</eo-dialog>\n", styles: [".eo-id-reference{display:flex;align-items:center}.eo-id-reference__element{display:flex;align-self:center;flex-wrap:wrap}.eo-id-reference>button{padding:0}.eo-id-reference>button eo-icon{width:16px;height:16px;margin:auto}::ng-deep .eo-id-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}::ng-deep .eo-id-reference.acInputHidden .inputToken input{width:0!important}::ng-deep .reference-field-dialog{width:100%;height:100%}::ng-deep .eo-dialog-content{display:contents!important}::ng-deep .cdk-overlay-pane:has(.reference-field-dialog){height:60%;width:577px}::ng-deep .deleted-reference-label,::ng-deep .no-access-reference-label{color:var(--color-error)}::ng-deep .label{display:flex;flex-flow:column;display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep .label>span{font-size:var(--font-hint)}::ng-deep .label.rtl{margin-left:1em;margin-right:4px}::ng-deep a.link{color:var(--text-color-caption);pointer-events:all;display:flex}::ng-deep a.link:hover{color:var(--color-accent)}::ng-deep .ref-icon,::ng-deep .ref-type-icon{width:16px;height:16px;color:var(--text-color-caption)}::ng-deep .remove-icon{color:var(--text-color-hint);height:14px;width:14px;flex:0 0 auto}::ng-deep .remove-icon:hover{color:var(--text-color-caption);cursor:pointer}yvc-autocomplete{width:100%;border:0;outline:0!important}\n"] }]
230
239
  }], ctorParameters: () => [{ type: i1.ClipboardService }, { type: i1.SystemService }, { type: i2.ReferenceService }, { type: i1.SearchService }], propDecorators: { readonly: [{
231
240
  type: Input
232
241
  }], multiselect: [{
@@ -249,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
249
258
  }], objectTypesFilter: [{
250
259
  type: Input
251
260
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtcmVmZXJlbmNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvaWQtcmVmZXJlbmNlL2lkLXJlZmVyZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2lkLXJlZmVyZW5jZS9pZC1yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQXVCLGlCQUFpQixFQUFpQyxhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNySCxPQUFPLEVBTVUsS0FBSyxFQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQTRCakQsTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsSUFBSSxXQUFXLENBQUMsSUFBd0I7UUFDdEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQ0ksWUFBWSxDQUFDLElBQXdCO1FBQ3ZDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUks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LFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs0S0FhUSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ3FCLGlCQUFpQjtzQkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQWVyQixZQUFZO3NCQURmLEtBQUs7Z0JBVUYsU0FBUztzQkFEWixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWZlcmVuY2VTZXJ2aWNlfSBmcm9tICcuLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3JlZmVyZW5jZXMvcmVmZXJlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIENsaXBib2FyZCxcbiAgQ2xpcGJvYXJkU2VydmljZSxcbiAgRG1zT2JqZWN0LFxuICBPYmplY3RUeXBlLFxuICBTZWFyY2hSZXN1bHQsIFNlYXJjaFNlcnZpY2UsXG4gIFN5c3RlbVNlcnZpY2UsIFV0aWxzXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0F1dG9Db21wbGV0ZX0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRvUmVuZGVySXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB0eXBlTmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgc3RhdGU/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWlkLXJlZmVyZW5jZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pZC1yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pZC1yZWZlcmVuY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJZFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElkUmVmZXJlbmNlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElkUmVmZXJlbmNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgVmFsaWRhdG9yIHtcbiAgcHJpdmF0ZSB2YWx1ZTsgLy8gbW9kZWwgdmFsdWVcbiAgX2lubmVyVmFsdWVzOiBEYXRhVG9SZW5kZXJJdGVtW10gPSBbXTsgLy8gaW5uZXIgbmctbW9kZWwgdmFsdWVcbiAgY2xpcGJvYXJkOiBDbGlwYm9hcmQ7XG4gIHJlZmVyZW5jZVR5cGU6IE9iamVjdFR5cGU7XG4gIHN1YlR5cGVzOiBPYmplY3RUeXBlW107XG4gIHRvb2x0aXBUeXBlSGludDogc3RyaW5nO1xuICB2aXNpYmxlRGlhbG9nID0gZmFsc2U7XG5cbiAgYXV0b2NvbXBsZXRlUmVzO1xuXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgc2l0dWF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbnRleHRJZDogc3RyaW5nO1xuICBASW5wdXQoKSBleGNlcHRpb25JRHM6IHN0cmluZ1tdO1xuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dDogQXV0b0NvbXBsZXRlO1xuXG4gIHNldCBpbm5lclZhbHVlcyhkYXRhOiBEYXRhVG9SZW5kZXJJdGVtW10pIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5faW5uZXJWYWx1ZXMgPSBkYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbm5lclZhbHVlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpbm5lclZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5faW5uZXJWYWx1ZXM7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZGF0YVRvUmVuZGVyKGRhdGE6IERhdGFUb1JlbmRlckl0ZW1bXSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWVzID0gZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbm5lclZhbHVlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCByZWZlcmVuY2UocmVmOiBhbnkpIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGUgPSByZWYgPyB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlKHJlZi50eXBlKSA6IG51bGw7XG4gICAgdGhpcy5zdWJUeXBlcyA9IHRoaXMuZ2V0U3ViVHlwZXModGhpcy5yZWZlcmVuY2VUeXBlPy5uYW1lLCB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlcygpKTtcbiAgICB0aGlzLnRvb2x0aXBUeXBlSGludCA9IHRoaXMuY3JlYXRlVG9vbHRpcFR5cGVIaW50KHRoaXMucmVmZXJlbmNlVHlwZSwgdGhpcy5zdWJUeXBlcyk7XG4gIH1cblxuICBASW5wdXQoKSBxdWVyeUZpbHRlcnM6IHtcbiAgICBbZmllbGRRbmFtZTogc3RyaW5nXToge286IHN0cmluZywgdjE6IGFueSwgdjI6IGFueX1cbiAgfTtcblxuICBASW5wdXQoKSBvYmplY3RUeXBlc0ZpbHRlcjogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBnZXRTdWJUeXBlcyh0eXBlTmFtZSwgdHlwZXMpIHtcbiAgICBsZXQgc3ViVHlwZXMgPSBbXTtcbiAgICB0eXBlcy5mb3JFYWNoKG9iamVjdFR5cGUgPT4ge1xuICAgICAgaWYgKCEhb2JqZWN0VHlwZS5zdXBlcnR5cGVzLmZpbmQoc1QgPT4gc1QgPT09IHR5cGVOYW1lKSkge1xuICAgICAgICBzdWJUeXBlcy5wdXNoKG9iamVjdFR5cGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzdWJUeXBlcztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVG9vbHRpcFR5cGVIaW50KHJlZmVyZW5jZVR5cGUsIHN1YlR5cGVzID0gW10pIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlVHlwZSA/IGAoJHtbcmVmZXJlbmNlVHlwZS5sYWJlbCwgLi4uc3ViVHlwZXMubWFwKHR5cGVzID0+IHR5cGVzLmxhYmVsKV0uam9pbignLCAnKX0pYCA6ICcnO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLCBwcml2YXRlIHN5c3RlbTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIHJlZmVyZW5jZVNlcnZpY2U6IFJlZmVyZW5jZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlKSB7XG4gICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmNsaXBib2FyZCQuc3Vic2NyaWJlKGNsaXBib2FyZCA9PiAodGhpcy5jbGlwYm9hcmQgPSBjbGlwYm9hcmQpKTtcbiAgICB0aGlzLmNsaXBib2FyZCA9IHRoaXMuY2xpcGJvYXJkU2VydmljZS5nZXQoKTtcbiAgfVxuXG4gIHNob3dEaWFsb2coKSB7XG4gICAgdGhpcy52aXNpYmxlRGlhbG9nID0gIXRoaXMudmlzaWJsZURpYWxvZztcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb25EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aXNlbGVjdCA/IGZhbHNlIDogdGhpcy5pbm5lclZhbHVlcy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMucmVmZXJlbmNlVHlwZSB8fFxuICAgICAgdGhpcy5yZWFkb25seSB8fFxuICAgICAgdGhpcy5jbGlwYm9hcmQuYWN0aW9uID09PSAxIHx8XG4gICAgICAhdGhpcy5jbGlwYm9hcmQuZWxlbWVudHMubGVuZ3RoIHx8XG4gICAgICB0aGlzLmNvbnRhaW5zSW5jb3JyZWN0VHlwZXMoXG4gICAgICAgIHRoaXMuY2xpcGJvYXJkLmVsZW1lbnRzLFxuICAgICAgICB0aGlzLnJlZmVyZW5jZVR5cGUsXG4gICAgICAgIHRoaXMuc3ViVHlwZXNcbiAgICAgICkgfHxcbiAgICAgIHRoaXMuY29udGFpbnNJbmNvcnJlY3RDb250ZXh0KHRoaXMuY2xpcGJvYXJkLmVsZW1lbnRzLCB0aGlzLmNvbnRleHRJZClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluc0luY29ycmVjdFR5cGVzKGNsaXBib2FyZEVsZW1lbnRzLCByZWZUeXBlLCBzdWJUeXBlcykge1xuICAgIHJldHVybiAhIWNsaXBib2FyZEVsZW1lbnRzLmZpbmQoY2JFbCA9PiAhKGNiRWwudHlwZU5hbWUgPT09IHJlZlR5cGUubmFtZSB8fCBzdWJUeXBlcy5maW5kKHNUID0+IHNULm5hbWUgPT09IGNiRWwudHlwZU5hbWUpKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnRhaW5zSW5jb3JyZWN0Q29udGV4dChjbGlwYm9hcmRFbGVtZW50cywgY29udGV4dElkKSB7XG4gICAgcmV0dXJuICEhY2xpcGJvYXJkRWxlbWVudHMuZmluZChjYkVsID0+IHtcbiAgICAgIGlmICghY29udGV4dElkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhY2JFbC5jb250ZXh0Rm9sZGVyIHx8IGNiRWwuY29udGV4dEZvbGRlci5pZCAhPT0gY29udGV4dElkO1xuICAgIH0pO1xuICB9XG5cbiAgcGFzdGUoY29udGVudD86IERtc09iamVjdFtdKSB7XG4gICAgdGhpcy5saW5rRG1zT2JqZWN0KGNvbnRlbnQpO1xuICAgIHRoaXMuc2hvd0RpYWxvZygpO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaW5rRG1zT2JqZWN0KGNvbnRlbnQ/OiBEbXNPYmplY3RbXSkge1xuICAgIChjb250ZW50IHx8IHRoaXMuY2xpcGJvYXJkLmVsZW1lbnRzKS5mb3JFYWNoKChkbXNPYmplY3Q6IERtc09iamVjdCkgPT4ge1xuICAgICAgY29uc3Qge2lkLCB0aXRsZSwgZGVzY3JpcHRpb24sIHR5cGVOYW1lfSA9IGRtc09iamVjdDtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZXMucHVzaCh7aWQsIHRpdGxlLCBkZXNjcmlwdGlvbiwgdHlwZU5hbWV9KTtcbiAgICB9KTtcbiAgICB0aGlzLmlubmVyVmFsdWVzID0gVXRpbHMudW5pcUJ5KHRoaXMuaW5uZXJWYWx1ZXMsICdpZCcpO1xuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbm5lclZhbHVlcy5tYXAoaXYgPT4gaXYuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbm5lclZhbHVlc1swXS5pZDtcbiAgICB9XG4gIH1cblxuICByZW1vdmVJdGVtKGl0ZW0pIHtcbiAgICB0aGlzLmlubmVyVmFsdWVzID0gdGhpcy5pbm5lclZhbHVlcy5maWx0ZXIoaXYgPT4gaXYuaWQgIT09IGl0ZW0uaWQpO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLm11bHRpc2VsZWN0XG4gICAgICA/IFV0aWxzLnVuaXFCeSh0aGlzLmlubmVyVmFsdWVzLCAnaWQnKS5tYXAoaXYgPT4gaXYuaWQpXG4gICAgICA6IG51bGw7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICAgIH1cbiAgICB0aGlzLmF1dG9Db21wbGV0ZUlucHV0LmZvY3VzSW5wdXQoKTtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJJbm5lcklucHV0KCkge1xuICAgIHRoaXMuYXV0b0NvbXBsZXRlSW5wdXQuY2xlYXJJbnB1dCgpO1xuXG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlSW5uZXJWYWx1ZXModGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5pbm5lclZhbHVlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5uZXJWYWx1ZXModmFsdWUpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB0aGlzLmlubmVyVmFsdWVzID0gdGhpcy5pbm5lclZhbHVlcy5maWx0ZXIoaVYgPT4ge1xuICAgICAgLy8gcmVtb3ZlIGlubmVyVmFsdWVzLCB3aGVyZSB0aGUgaWQgd2FzIHJlbW92ZWQgZnJvbSB2YWx1ZVxuICAgICAgcmV0dXJuIHZhbHVlcy5maW5kKHYgPT4gdiA9PT0gaVYuaWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IG5ld1ZhbHVlcyA9IHZhbHVlcy5maWx0ZXIodiA9PiB7XG4gICAgICByZXR1cm4gIXRoaXMuaW5uZXJWYWx1ZXMuZmluZChpViA9PiBpVi5pZCA9PT0gdik7XG4gICAgfSk7XG4gICAgaWYgKG5ld1ZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVmZXJlbmNlU2VydmljZS5mZXRjaElEUmVmZXJlbmNlTWV0YURhdGEobmV3VmFsdWVzKS5zdWJzY3JpYmUobmV3SW5uZXJWYWx1ZXMgPT4ge1xuICAgICAgICB0aGlzLmlubmVyVmFsdWVzID0gdGhpcy5pbm5lclZhbHVlcy5jb25jYXQobmV3SW5uZXJWYWx1ZXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHsgfTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGM6IFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gaGFuZGxlciBpbnZva2VkIHdoZW4gYW4gZW50cnkgd2FzIHNlbGVjdGVkIHVzaW5nIHRoZSBhdXRvY29tcGxldGUgaW5wdXRcbiAgb25BdXRvQ29tcGxldGVTZWxlY3QoZXZ0Pykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmlubmVyVmFsdWVzKSkge1xuICAgICAgdGhpcy5pbm5lclZhbHVlcyA9IFt0aGlzLmlubmVyVmFsdWVzXTtcbiAgICB9XG4gICAgdGhpcy5pbm5lclZhbHVlcyA9IFV0aWxzLnVuaXFCeSh0aGlzLmlubmVyVmFsdWVzLCAnaWQnKTtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZXMubWFwKGl2ID0+IGl2LmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZXNbMF0uaWQ7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgYXV0b2NvbXBsZXRlRm4odGVybTogc3RyaW5nKSB7XG4gICAgbGV0IHE6IGFueSA9IHtcbiAgICAgIGZpZWxkczogWyd0aXRsZScsICdkZXNjcmlwdGlvbicsICd0eXBlJ10sXG4gICAgICB0eXBlczogW3RoaXMucmVmZXJlbmNlVHlwZS5uYW1lXSxcbiAgICAgIHRlcm06IHRlcm0sXG4gICAgICBmaWx0ZXJzOiB0aGlzLnF1ZXJ5RmlsdGVycyxcbiAgICAgIG9wdGlvbnM6IHt3aXRoY29udGV4dDogdHJ1ZSwgaGlnaGxpZ2h0aW5nOiBmYWxzZX1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub2JqZWN0VHlwZXNGaWx0ZXIpIHtcbiAgICAgIHEudHlwZXMgPSB0aGlzLm9iamVjdFR5cGVzRmlsdGVyO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRleHRJZCkge1xuICAgICAgaWYgKHEuZmlsdGVycykge1xuICAgICAgICBxLmZpbHRlcnMuY29udGV4dGZvbGRlcmlkID0ge3YxOiB0aGlzLmNvbnRleHRJZCwgbzogJ2VxJ307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxLmZpbHRlcnMgPSB7Y29udGV4dGZvbGRlcmlkOiB7djE6IHRoaXMuY29udGV4dElkLCBvOiAnZXEnfX07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAuZXhlY3V0ZVF1ZXJ5KHEpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICAgIG1hcChpdGVtID0+IGl0ZW0gPyB0aGlzLnNlYXJjaFNlcnZpY2UuY3JlYXRlUmVzdWx0RnJvbVJlc3BvbnNlKGl0ZW0pIDogW10pXG4gICAgICApLnN1YnNjcmliZSgocmVzdWx0OiBTZWFyY2hSZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSByZXN1bHQuaGl0cy5zbGljZSgwLCAxMCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG9uQXV0b0NvbXBsZXRlQmx1cigpIHtcbiAgICB0aGlzLmF1dG9Db21wbGV0ZUlucHV0LmNsZWFySW5wdXQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHRoaXMubXVsdGlzZWxlY3QgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLWlkLXJlZmVyZW5jZVwiIFtuZ0NsYXNzXT1cInthY0lucHV0SGlkZGVuOiAhbXVsdGlzZWxlY3QgJiYgX2lubmVyVmFsdWVzLmxlbmd0aH1cIj5cbiAgPHl2Yy1hdXRvY29tcGxldGUgWyhuZ01vZGVsKV09XCJpbm5lclZhbHVlc1wiIFttaW5MZW5ndGhdPVwiMVwiICNhdXRvY29tcGxldGVcbiAgICAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvbkF1dG9Db21wbGV0ZVNlbGVjdCgkZXZlbnQpXCIgKHN1Z2dlc3Rpb25VbnNlbGVjdCk9XCJyZW1vdmVJdGVtKCRldmVudClcIlxuICAgIChibHVyKT1cIm9uQXV0b0NvbXBsZXRlQmx1cigpXCIgW2F1dG9jb21wbGV0ZVZhbHVlc109XCJhdXRvY29tcGxldGVSZXNcIiBmaWVsZD1cInRpdGxlXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiIChhdXRvY29tcGxldGVGbmMpPVwiYXV0b2NvbXBsZXRlRm4oJGV2ZW50KVwiIFttdWx0aXBsZV09XCJ0cnVlXCI+XG5cbiAgICA8IS0tIFtzdHlsZUNsYXNzXT1cIiFtdWx0aXNlbGVjdCAmJiBpbm5lclZhbHVlcy5sZW5ndGggPT09IDEgPyAneHh4JyA6ICcnXCI+IC0tPlxuXG4gICAgPG5nLXRlbXBsYXRlICNjaGlwVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgICA8YSAqbmdJZj1cIiFpdGVtLnN0YXRlIHx8IGl0ZW0uc3RhdGUgPT09ICdPSydcIiBjbGFzcz1cImxpbmsgcm91dGVyLWxpbmtcIlxuICAgICAgICBbcm91dGVyTGlua109XCJbJy9vYmplY3QnLCBpdGVtLmlkLCB7b3V0bGV0czoge21vZGFsOiBudWxsfX1dXCIgW3F1ZXJ5UGFyYW1zXT1cInt0eXBlOiByZWZlcmVuY2VUeXBlLnFuYW1lfVwiPlxuICAgICAgICA8c3ZnIGZvY3VzYWJsZT1cImZhbHNlXCIgY2xhc3M9XCJyZWYtaWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TThcbiAgICAgICAgMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwiPlxuICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2E+XG4gICAgICA8ZW8taWNvbiBbb2JqZWN0VHlwZV09XCJyZWZlcmVuY2VUeXBlXCIgdGl0bGU9XCJ7e3JlZmVyZW5jZVR5cGU/LmxhYmVsfX1cIiBjbGFzcz1cInJlZi10eXBlLWljb25cIiBbbmdDbGFzc109XCJ7J2RlbGV0ZWQtcmVmZXJlbmNlLWxhYmVsJzogaXRlbS5zdGF0ZSAmJiAoaXRlbS5zdGF0ZSA9PT0gJ1JFQ1lDTEVEJyB8fCBpdGVtLnN0YXRlID09PSAnR09ORScpfVwiPjwvZW8taWNvbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIShpdGVtLnN0YXRlICYmIChpdGVtLnN0YXRlID09PSAnUkVDWUNMRUQnIHx8IGl0ZW0uc3RhdGUgPT09ICdHT05FJykpOyBlbHNlIGRlbGV0ZWRcIiBjbGFzcz1cImxhYmVsXCIgZW9SdGxBd2FyZT1cImZ1bGxcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnRpdGxlIHx8IHJlZmVyZW5jZVR5cGU/LmxhYmVsOyBlbHNlIG5vQWNjZXNzXCI+XG4gICAgICAgICAge3tpdGVtLnRpdGxlIHx8IHJlZmVyZW5jZVR5cGU/LmxhYmVsfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0FjY2Vzcz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBuby1hY2Nlc3MtcmVmZXJlbmNlLWxhYmVsXCI+e3soJ2VvLnJlZmVyZW5jZXMubm9BY2Nlc3MnIHwgdHJhbnNsYXRlKX19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVsZXRlZD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBkZWxldGVkLXJlZmVyZW5jZS1sYWJlbFwiPnt7KCdlby5yZWZlcmVuY2VzLmRlbGV0ZWQnIHwgdHJhbnNsYXRlKX19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3l2Yy1hdXRvY29tcGxldGU+XG5cbiAgPG5nLXRlbXBsYXRlICNub3RGb3VuZD48c3BhbiBjbGFzcz1cImxhYmVsXCI+e3tpbm5lclZhbHVlcyAmJiBpbm5lclZhbHVlcy5sZW5ndGggPyAoJ2VvLnJlZmVyZW5jZXMubm90LmF2YWlsYWJsZScgfFxuICAgICAgdHJhbnNsYXRlKSA6ICcnfX08L3NwYW4+PC9uZy10ZW1wbGF0ZT5cblxuICA8YnV0dG9uICNidXR0b24gY2xhc3M9XCJ1aS1idXR0b25cIiAqbmdJZj1cIiFyZWFkb25seVwiXG4gICAgdGl0bGU9XCJ7eygnZW8ucmVmZXJlbmNlcy5zZWFyY2gnIHwgdHJhbnNsYXRlKSArICcgJyArIHRvb2x0aXBUeXBlSGludH19XCIgW2Rpc2FibGVkXT1cInNlbGVjdGlvbkRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwic2hvd0RpYWxvZygpXCI+XG4gICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbm9uZS5zdmcnXCI+PC9lby1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48ZW8tZGlhbG9nIFt0aXRsZV09XCIoJ2VvLnJlZmVyZW5jZXMuYWRkJyB8IHRyYW5zbGF0ZSlcIiBbc3VidGl0bGVdPVwicmVmZXJlbmNlVHlwZT8ubGFiZWxcIiBbKHZpc2libGUpXT1cInZpc2libGVEaWFsb2dcIlxuICBbbWluSGVpZ2h0XT1cIjU5MFwiIFtzdHlsZUNsYXNzXT1cIidyZWZlcmVuY2UtZmllbGQtZGlhbG9nJ1wiICNkaWFsb2c+XG5cbiAgPGVvLXJlZmVyZW5jZS1maW5kZXIgKm5nSWY9XCJkaWFsb2cudmlzaWJsZVwiIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbdHlwZXNdPVwicmVmZXJlbmNlVHlwZS5xbmFtZVwiXG4gICAgW211bHRpc2VsZWN0XT1cIm11bHRpc2VsZWN0XCIgW2N1cnJlbnRTZWxlY3Rpb25dPVwiaW5uZXJWYWx1ZXNcIiBbY2xpcGJvYXJkXT1cImNsaXBib2FyZFwiIFtjb250ZXh0SWRdPVwiY29udGV4dElkXCJcbiAgICBbZXhjZXB0aW9uSURzXT1cImV4Y2VwdGlvbklEc1wiIFtxdWVyeUZpbHRlcnNdPVwicXVlcnlGaWx0ZXJzXCIgKGFkZERtc09iamVjdHMpPVwicGFzdGUoJGV2ZW50KVwiPlxuICA8L2VvLXJlZmVyZW5jZS1maW5kZXI+XG48L2VvLWRpYWxvZz5cbiJdfQ==
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtcmVmZXJlbmNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvaWQtcmVmZXJlbmNlL2lkLXJlZmVyZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2lkLXJlZmVyZW5jZS9pZC1yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQXVCLGlCQUFpQixFQUFpQyxhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNySCxPQUFPLEVBTVUsS0FBSyxFQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUE0QmpELE1BQU0sT0FBTyxvQkFBb0I7SUFrQi9CLElBQUksV0FBVyxDQUFDLElBQXdCO1FBQ3RDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUNJLFlBQVksQ0FBQyxJQUF3QjtRQUN2QyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJ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R0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzRLQWFRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDcUIsaUJBQWlCO3NCQUEzQyxTQUFTO3VCQUFDLGNBQWM7Z0JBZXJCLFlBQVk7c0JBRGYsS0FBSztnQkFVRixTQUFTO3NCQURaLEtBQUs7Z0JBT0csWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlZmVyZW5jZVNlcnZpY2V9IGZyb20gJy4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcmVmZXJlbmNlcy9yZWZlcmVuY2Uuc2VydmljZSc7XG5pbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IsIFVudHlwZWRGb3JtQ29udHJvbCwgTkdfVkFMSURBVE9SU30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ2xpcGJvYXJkLFxuICBDbGlwYm9hcmRTZXJ2aWNlLFxuICBEbXNPYmplY3QsXG4gIE9iamVjdFR5cGUsXG4gIFNlYXJjaFJlc3VsdCwgU2VhcmNoU2VydmljZSxcbiAgU3lzdGVtU2VydmljZSwgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVG9SZW5kZXJJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHR5cGVOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8taWQtcmVmZXJlbmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lkLXJlZmVyZW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lkLXJlZmVyZW5jZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElkUmVmZXJlbmNlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSWRSZWZlcmVuY2VDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWRSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xuICBwcml2YXRlIHZhbHVlOyAvLyBtb2RlbCB2YWx1ZVxuICBfaW5uZXJWYWx1ZXM6IERhdGFUb1JlbmRlckl0ZW1bXSA9IFtdOyAvLyBpbm5lciBuZy1tb2RlbCB2YWx1ZVxuICBjbGlwYm9hcmQ6IENsaXBib2FyZDtcbiAgcmVmZXJlbmNlVHlwZTogT2JqZWN0VHlwZTtcbiAgc3ViVHlwZXM6IE9iamVjdFR5cGVbXTtcbiAgdG9vbHRpcFR5cGVIaW50OiBzdHJpbmc7XG4gIHZpc2libGVEaWFsb2cgPSBmYWxzZTtcblxuICBhdXRvY29tcGxldGVSZXM7XG5cbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0OiBib29sZWFuO1xuICBASW5wdXQoKSBzaXR1YXRpb246IHN0cmluZztcbiAgQElucHV0KCkgY29udGV4dElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV4Y2VwdGlvbklEczogc3RyaW5nW107XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZScpIGF1dG9Db21wbGV0ZUlucHV0OiBBdXRvQ29tcGxldGU7XG5cbiAgc2V0IGlubmVyVmFsdWVzKGRhdGE6IERhdGFUb1JlbmRlckl0ZW1bXSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLl9pbm5lclZhbHVlcyA9IGRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2lubmVyVmFsdWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlubmVyVmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9pbm5lclZhbHVlcztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhVG9SZW5kZXIoZGF0YTogRGF0YVRvUmVuZGVySXRlbVtdKSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZXMgPSBkYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHJlZmVyZW5jZShyZWY6IGFueSkge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZSA9IHJlZiA/IHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGUocmVmLnR5cGUpIDogbnVsbDtcbiAgICB0aGlzLnN1YlR5cGVzID0gdGhpcy5nZXRTdWJUeXBlcyh0aGlzLnJlZmVyZW5jZVR5cGU/Lm5hbWUsIHRoaXMuc3lzdGVtLmdldE9iamVjdFR5cGVzKCkpO1xuICAgIHRoaXMudG9vbHRpcFR5cGVIaW50ID0gdGhpcy5jcmVhdGVUb29sdGlwVHlwZUhpbnQodGhpcy5yZWZlcmVuY2VUeXBlLCB0aGlzLnN1YlR5cGVzKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHF1ZXJ5RmlsdGVyczoge1xuICAgIFtmaWVsZFFuYW1lOiBzdHJpbmddOiB7bzogc3RyaW5nLCB2MTogYW55LCB2MjogYW55fVxuICB9O1xuXG4gIEBJbnB1dCgpIG9iamVjdFR5cGVzRmlsdGVyOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIGdldFN1YlR5cGVzKHR5cGVOYW1lLCB0eXBlcykge1xuICAgIGxldCBzdWJUeXBlcyA9IFtdO1xuICAgIHR5cGVzLmZvckVhY2gob2JqZWN0VHlwZSA9PiB7XG4gICAgICBpZiAoISFvYmplY3RUeXBlLnN1cGVydHlwZXMuZmluZChzVCA9PiBzVCA9PT0gdHlwZU5hbWUpKSB7XG4gICAgICAgIHN1YlR5cGVzLnB1c2gob2JqZWN0VHlwZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHN1YlR5cGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUb29sdGlwVHlwZUhpbnQocmVmZXJlbmNlVHlwZSwgc3ViVHlwZXMgPSBbXSkge1xuICAgIHJldHVybiByZWZlcmVuY2VUeXBlID8gYCgke1tyZWZlcmVuY2VUeXBlLmxhYmVsLCAuLi5zdWJUeXBlcy5tYXAodHlwZXMgPT4gdHlwZXMubGFiZWwpXS5qb2luKCcsICcpfSlgIDogJyc7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVmZXJlbmNlU2VydmljZTogUmVmZXJlbmNlU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UpIHtcbiAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY2xpcGJvYXJkJC5zdWJzY3JpYmUoY2xpcGJvYXJkID0+ICh0aGlzLmNsaXBib2FyZCA9IGNsaXBib2FyZCkpO1xuICAgIHRoaXMuY2xpcGJvYXJkID0gdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmdldCgpO1xuICB9XG5cbiAgc2hvd0RpYWxvZygpIHtcbiAgICB0aGlzLnZpc2libGVEaWFsb2cgPSAhdGhpcy52aXNpYmxlRGlhbG9nO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGlvbkRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLm11bHRpc2VsZWN0ID8gZmFsc2UgOiB0aGlzLmlubmVyVmFsdWVzLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBpc0Rpc2FibGVkKCkge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5yZWZlcmVuY2VUeXBlIHx8XG4gICAgICB0aGlzLnJlYWRvbmx5IHx8XG4gICAgICB0aGlzLmNsaXBib2FyZC5hY3Rpb24gPT09IDEgfHxcbiAgICAgICF0aGlzLmNsaXBib2FyZC5lbGVtZW50cy5sZW5ndGggfHxcbiAgICAgIHRoaXMuY29udGFpbnNJbmNvcnJlY3RUeXBlcyhcbiAgICAgICAgdGhpcy5jbGlwYm9hcmQuZWxlbWVudHMsXG4gICAgICAgIHRoaXMucmVmZXJlbmNlVHlwZSxcbiAgICAgICAgdGhpcy5zdWJUeXBlc1xuICAgICAgKSB8fFxuICAgICAgdGhpcy5jb250YWluc0luY29ycmVjdENvbnRleHQodGhpcy5jbGlwYm9hcmQuZWxlbWVudHMsIHRoaXMuY29udGV4dElkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnRhaW5zSW5jb3JyZWN0VHlwZXMoY2xpcGJvYXJkRWxlbWVudHMsIHJlZlR5cGUsIHN1YlR5cGVzKSB7XG4gICAgcmV0dXJuICEhY2xpcGJvYXJkRWxlbWVudHMuZmluZChjYkVsID0+ICEoY2JFbC50eXBlTmFtZSA9PT0gcmVmVHlwZS5uYW1lIHx8IHN1YlR5cGVzLmZpbmQoc1QgPT4gc1QubmFtZSA9PT0gY2JFbC50eXBlTmFtZSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udGFpbnNJbmNvcnJlY3RDb250ZXh0KGNsaXBib2FyZEVsZW1lbnRzLCBjb250ZXh0SWQpIHtcbiAgICByZXR1cm4gISFjbGlwYm9hcmRFbGVtZW50cy5maW5kKGNiRWwgPT4ge1xuICAgICAgaWYgKCFjb250ZXh0SWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICFjYkVsLmNvbnRleHRGb2xkZXIgfHwgY2JFbC5jb250ZXh0Rm9sZGVyLmlkICE9PSBjb250ZXh0SWQ7XG4gICAgfSk7XG4gIH1cblxuICBwYXN0ZShjb250ZW50PzogRG1zT2JqZWN0W10pIHtcbiAgICB0aGlzLmxpbmtEbXNPYmplY3QoY29udGVudCk7XG4gICAgdGhpcy5zaG93RGlhbG9nKCk7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGxpbmtEbXNPYmplY3QoY29udGVudD86IERtc09iamVjdFtdKSB7XG4gICAgKGNvbnRlbnQgfHwgdGhpcy5jbGlwYm9hcmQuZWxlbWVudHMpLmZvckVhY2goKGRtc09iamVjdDogRG1zT2JqZWN0KSA9PiB7XG4gICAgICBjb25zdCB7aWQsIHRpdGxlLCBkZXNjcmlwdGlvbiwgdHlwZU5hbWV9ID0gZG1zT2JqZWN0O1xuICAgICAgdGhpcy5pbm5lclZhbHVlcy5wdXNoKHtpZCwgdGl0bGUsIGRlc2NyaXB0aW9uLCB0eXBlTmFtZX0pO1xuICAgIH0pO1xuICAgIHRoaXMuaW5uZXJWYWx1ZXMgPSBVdGlscy51bmlxQnkodGhpcy5pbm5lclZhbHVlcywgJ2lkJyk7XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWVzLm1hcChpdiA9PiBpdi5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWVzWzBdLmlkO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaXRlbSkge1xuICAgIHRoaXMuaW5uZXJWYWx1ZXMgPSB0aGlzLmlubmVyVmFsdWVzLmZpbHRlcihpdiA9PiBpdi5pZCAhPT0gaXRlbS5pZCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubXVsdGlzZWxlY3RcbiAgICAgID8gVXRpbHMudW5pcUJ5KHRoaXMuaW5uZXJWYWx1ZXMsICdpZCcpLm1hcChpdiA9PiBpdi5pZClcbiAgICAgIDogbnVsbDtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gICAgfVxuICAgIHRoaXMuYXV0b0NvbXBsZXRlSW5wdXQuZm9jdXNJbnB1dCgpO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcklubmVySW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jbGVhcklucHV0KCk7XG5cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy51cGRhdGVJbm5lclZhbHVlcyh0aGlzLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLmlubmVyVmFsdWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbm5lclZhbHVlcyh2YWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIHRoaXMuaW5uZXJWYWx1ZXMgPSB0aGlzLmlubmVyVmFsdWVzLmZpbHRlcihpViA9PiB7XG4gICAgICAvLyByZW1vdmUgaW5uZXJWYWx1ZXMsIHdoZXJlIHRoZSBpZCB3YXMgcmVtb3ZlZCBmcm9tIHZhbHVlXG4gICAgICByZXR1cm4gdmFsdWVzLmZpbmQodiA9PiB2ID09PSBpVi5pZCk7XG4gICAgfSk7XG4gICAgY29uc3QgbmV3VmFsdWVzID0gdmFsdWVzLmZpbHRlcih2ID0+IHtcbiAgICAgIHJldHVybiAhdGhpcy5pbm5lclZhbHVlcy5maW5kKGlWID0+IGlWLmlkID09PSB2KTtcbiAgICB9KTtcbiAgICBpZiAobmV3VmFsdWVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5yZWZlcmVuY2VTZXJ2aWNlLmZldGNoSURSZWZlcmVuY2VNZXRhRGF0YShuZXdWYWx1ZXMpLnN1YnNjcmliZShuZXdJbm5lclZhbHVlcyA9PiB7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZXMgPSB0aGlzLmlubmVyVmFsdWVzLmNvbmNhdChuZXdJbm5lclZhbHVlcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4geyB9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IH1cblxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBoYW5kbGVyIGludm9rZWQgd2hlbiBhbiBlbnRyeSB3YXMgc2VsZWN0ZWQgdXNpbmcgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dFxuICBvbkF1dG9Db21wbGV0ZVNlbGVjdChldnQ/KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuaW5uZXJWYWx1ZXMpKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWVzID0gW3RoaXMuaW5uZXJWYWx1ZXNdO1xuICAgIH1cbiAgICB0aGlzLmlubmVyVmFsdWVzID0gVXRpbHMudW5pcUJ5KHRoaXMuaW5uZXJWYWx1ZXMsICdpZCcpO1xuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbm5lclZhbHVlcy5tYXAoaXYgPT4gaXYuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbm5lclZhbHVlc1swXS5pZDtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBhdXRvY29tcGxldGVGbih0ZXJtOiBzdHJpbmcpIHtcbiAgICBsZXQgcTogYW55ID0ge1xuICAgICAgZmllbGRzOiBbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ3R5cGUnXSxcbiAgICAgIHR5cGVzOiBbdGhpcy5yZWZlcmVuY2VUeXBlLm5hbWVdLFxuICAgICAgdGVybTogdGVybSxcbiAgICAgIGZpbHRlcnM6IHRoaXMucXVlcnlGaWx0ZXJzLFxuICAgICAgb3B0aW9uczoge3dpdGhjb250ZXh0OiB0cnVlLCBoaWdobGlnaHRpbmc6IGZhbHNlfVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5vYmplY3RUeXBlc0ZpbHRlcikge1xuICAgICAgcS50eXBlcyA9IHRoaXMub2JqZWN0VHlwZXNGaWx0ZXI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGV4dElkKSB7XG4gICAgICBpZiAocS5maWx0ZXJzKSB7XG4gICAgICAgIHEuZmlsdGVycy5jb250ZXh0Zm9sZGVyaWQgPSB7djE6IHRoaXMuY29udGV4dElkLCBvOiAnZXEnfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHEuZmlsdGVycyA9IHtjb250ZXh0Zm9sZGVyaWQ6IHt2MTogdGhpcy5jb250ZXh0SWQsIG86ICdlcSd9fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgIC5leGVjdXRlUXVlcnkocSlcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgbWFwKGl0ZW0gPT4gaXRlbSA/IHRoaXMuc2VhcmNoU2VydmljZS5jcmVhdGVSZXN1bHRGcm9tUmVzcG9uc2UoaXRlbSkgOiBbXSlcbiAgICAgICkuc3Vic2NyaWJlKChyZXN1bHQ6IFNlYXJjaFJlc3VsdCkgPT4ge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IHJlc3VsdC5oaXRzLnNsaWNlKDAsIDEwKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgb25BdXRvQ29tcGxldGVCbHVyKCkge1xuICAgIHRoaXMuYXV0b0NvbXBsZXRlSW5wdXQuY2xlYXJJbnB1dCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgdGhpcy5tdWx0aXNlbGVjdCA9IHRydWU7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZGlhbG9nLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGV2ZW50IC0gVGhlIG5ldyB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBkaWFsb2cuXG4gICAqL1xuICB1cGRhdGVEaWFsb2dWaXNpYmlsaXR5KGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlRGlhbG9nID0gZXZlbnQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1pZC1yZWZlcmVuY2VcIiBbbmdDbGFzc109XCJ7YWNJbnB1dEhpZGRlbjogIW11bHRpc2VsZWN0ICYmIF9pbm5lclZhbHVlcy5sZW5ndGh9XCI+XG4gIDx5dmMtYXV0b2NvbXBsZXRlIFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZXNcIiBbbWluTGVuZ3RoXT1cIjFcIiAjYXV0b2NvbXBsZXRlXG4gICAgKHN1Z2dlc3Rpb25TZWxlY3QpPVwib25BdXRvQ29tcGxldGVTZWxlY3QoJGV2ZW50KVwiIChzdWdnZXN0aW9uVW5zZWxlY3QpPVwicmVtb3ZlSXRlbSgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCIgZmllbGQ9XCJ0aXRsZVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIiAoYXV0b2NvbXBsZXRlRm5jKT1cImF1dG9jb21wbGV0ZUZuKCRldmVudClcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuXG4gICAgPCEtLSBbc3R5bGVDbGFzc109XCIhbXVsdGlzZWxlY3QgJiYgaW5uZXJWYWx1ZXMubGVuZ3RoID09PSAxID8gJ3h4eCcgOiAnJ1wiPiAtLT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjY2hpcFRlbXBsYXRlIGxldC1pdGVtPlxuICAgICAgPGEgKm5nSWY9XCIhaXRlbS5zdGF0ZSB8fCBpdGVtLnN0YXRlID09PSAnT0snXCIgY2xhc3M9XCJsaW5rIHJvdXRlci1saW5rXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvb2JqZWN0JywgaXRlbS5pZCwge291dGxldHM6IHttb2RhbDogbnVsbH19XVwiIFtxdWVyeVBhcmFtc109XCJ7dHlwZTogcmVmZXJlbmNlVHlwZS5xbmFtZX1cIj5cbiAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0zLjkgMTJjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xek04XG4gICAgICAgIDEzaDh2LTJIOHYyem05LTZoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjFzLTEuMzkgMy4xLTMuMSAzLjFoLTRWMTdoNGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpcIj5cbiAgICAgICAgICA8L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9hPlxuICAgICAgPGVvLWljb24gW29iamVjdFR5cGVdPVwicmVmZXJlbmNlVHlwZVwiIHRpdGxlPVwie3tyZWZlcmVuY2VUeXBlPy5sYWJlbH19XCIgY2xhc3M9XCJyZWYtdHlwZS1pY29uXCIgW25nQ2xhc3NdPVwieydkZWxldGVkLXJlZmVyZW5jZS1sYWJlbCc6IGl0ZW0uc3RhdGUgJiYgKGl0ZW0uc3RhdGUgPT09ICdSRUNZQ0xFRCcgfHwgaXRlbS5zdGF0ZSA9PT0gJ0dPTkUnKX1cIj48L2VvLWljb24+XG4gICAgICA8c3BhbiAqbmdJZj1cIiEoaXRlbS5zdGF0ZSAmJiAoaXRlbS5zdGF0ZSA9PT0gJ1JFQ1lDTEVEJyB8fCBpdGVtLnN0YXRlID09PSAnR09ORScpKTsgZWxzZSBkZWxldGVkXCIgY2xhc3M9XCJsYWJlbFwiIGVvUnRsQXdhcmU9XCJmdWxsXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS50aXRsZSB8fCByZWZlcmVuY2VUeXBlPy5sYWJlbDsgZWxzZSBub0FjY2Vzc1wiPlxuICAgICAgICAgIHt7aXRlbS50aXRsZSB8fCByZWZlcmVuY2VUeXBlPy5sYWJlbH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9BY2Nlc3M+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgbm8tYWNjZXNzLXJlZmVyZW5jZS1sYWJlbFwiPnt7KCdlby5yZWZlcmVuY2VzLm5vQWNjZXNzJyB8IHRyYW5zbGF0ZSl9fTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlbGV0ZWQ+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgZGVsZXRlZC1yZWZlcmVuY2UtbGFiZWxcIj57eygnZW8ucmVmZXJlbmNlcy5kZWxldGVkJyB8IHRyYW5zbGF0ZSl9fTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC95dmMtYXV0b2NvbXBsZXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjbm90Rm91bmQ+PHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7aW5uZXJWYWx1ZXMgJiYgaW5uZXJWYWx1ZXMubGVuZ3RoID8gKCdlby5yZWZlcmVuY2VzLm5vdC5hdmFpbGFibGUnIHxcbiAgICAgIHRyYW5zbGF0ZSkgOiAnJ319PC9zcGFuPjwvbmctdGVtcGxhdGU+XG5cbiAgPGJ1dHRvbiAjYnV0dG9uIGNsYXNzPVwidWktYnV0dG9uXCIgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgIHRpdGxlPVwie3soJ2VvLnJlZmVyZW5jZXMuc2VhcmNoJyB8IHRyYW5zbGF0ZSkgKyAnICcgKyB0b29sdGlwVHlwZUhpbnR9fVwiIFtkaXNhYmxlZF09XCJzZWxlY3Rpb25EaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cInNob3dEaWFsb2coKVwiPlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX25vbmUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiKCdlby5yZWZlcmVuY2VzLmFkZCcgfCB0cmFuc2xhdGUpXCIgW3N1YnRpdGxlXT1cInJlZmVyZW5jZVR5cGU/LmxhYmVsXCIgWyh2aXNpYmxlKV09XCJ2aXNpYmxlRGlhbG9nXCJcbiAgW21pbkhlaWdodF09XCI1OTBcIiBbc3R5bGVDbGFzc109XCIncmVmZXJlbmNlLWZpZWxkLWRpYWxvZydcIiAjZGlhbG9nICh2aXNpYmxlQ2hhbmdlKT1cInVwZGF0ZURpYWxvZ1Zpc2liaWxpdHkoJGV2ZW50KVwiIChlb091dHNpZGVDbGljayk9XCJ1cGRhdGVEaWFsb2dWaXNpYmlsaXR5KGZhbHNlKVwiPlxuXG4gIDxlby1yZWZlcmVuY2UtZmluZGVyICpuZ0lmPVwiZGlhbG9nLnZpc2libGVcIiBbaXNEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgW3R5cGVzXT1cInJlZmVyZW5jZVR5cGUucW5hbWVcIlxuICAgIFttdWx0aXNlbGVjdF09XCJtdWx0aXNlbGVjdFwiIFtjdXJyZW50U2VsZWN0aW9uXT1cImlubmVyVmFsdWVzXCIgW2NsaXBib2FyZF09XCJjbGlwYm9hcmRcIiBbY29udGV4dElkXT1cImNvbnRleHRJZFwiXG4gICAgW2V4Y2VwdGlvbklEc109XCJleGNlcHRpb25JRHNcIiBbcXVlcnlGaWx0ZXJzXT1cInF1ZXJ5RmlsdGVyc1wiIChhZGREbXNPYmplY3RzKT1cInBhc3RlKCRldmVudClcIj5cbiAgPC9lby1yZWZlcmVuY2UtZmluZGVyPlxuPC9lby1kaWFsb2c+XG4iXX0=
@@ -213,7 +213,7 @@ export class StringComponent {
213
213
  useExisting: forwardRef(() => StringComponent),
214
214
  multi: true
215
215
  }
216
- ], ngImport: i0, template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Chips, selector: "yvc-chips", inputs: ["field", "placeholder", "max", "disabled"] }, { kind: "component", type: i5.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
216
+ ], ngImport: i0, template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}:host ::ng-deep .yvc-typeahead-input.yvc-typeahead-input{padding:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Chips, selector: "yvc-chips", inputs: ["field", "placeholder", "max", "disabled"] }, { kind: "component", type: i5.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
217
217
  }
218
218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: StringComponent, decorators: [{
219
219
  type: Component,
@@ -228,7 +228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
228
228
  useExisting: forwardRef(() => StringComponent),
229
229
  multi: true
230
230
  }
231
- ], template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"] }]
231
+ ], template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}:host ::ng-deep .yvc-typeahead-input.yvc-typeahead-input{padding:0}\n"] }]
232
232
  }], ctorParameters: () => [{ type: i1.BackendService }], propDecorators: { autocomplete: [{
233
233
  type: Input
234
234
  }], multiselect: [{
@@ -3,17 +3,18 @@ import { DynamicListComponent } from '../../form-elements/dynamic-list/dynamic-l
3
3
  import { EoDialogComponent } from '../../ui/eo-dialog/eo-dialog.component';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@eo-sdk/core";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@ngx-translate/core";
8
- import * as i4 from "../../ui/eo-icon/eo-icon.component";
9
- import * as i5 from "../../ui/eo-dialog/eo-dialog.component";
10
- import * as i6 from "@angular/forms";
11
- import * as i7 from "../../tree/tree.component";
12
- import * as i8 from "@yuuvis/components/autocomplete";
6
+ import * as i2 from "../../object-form/object-form-helper.service";
7
+ import * as i3 from "./../../form-elements/dynamic-list/dynamic-list.service";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "@ngx-translate/core";
10
+ import * as i6 from "../../ui/eo-icon/eo-icon.component";
11
+ import * as i7 from "../../ui/eo-dialog/eo-dialog.component";
12
+ import * as i8 from "@angular/forms";
13
+ import * as i9 from "../../tree/tree.component";
14
+ import * as i10 from "@yuuvis/components/autocomplete";
13
15
  export class DynamicListFilterComponent extends DynamicListComponent {
14
- constructor(translate, eventService) {
15
- super();
16
- this.eventService = eventService;
16
+ constructor(localStorageService, objectFormHelperService, dynamicListService) {
17
+ super(dynamicListService, localStorageService, objectFormHelperService);
17
18
  this.params = {};
18
19
  this.multiselect = true;
19
20
  this.situation = 'SEARCH';
@@ -21,10 +22,6 @@ export class DynamicListFilterComponent extends DynamicListComponent {
21
22
  onValueChange() {
22
23
  if (!this.params.filterParams || !this.params.filterParams.applyButton) {
23
24
  this.params.api.onFilterChanged();
24
- // TODO: still necessary?
25
- // setTimeout(() => {
26
- // this.autoCompleteButton.nativeElement.style.top = this.autoCompleteInput.multiInputEL.nativeElement.offsetTop + 'px';
27
- // }, 0);
28
25
  }
29
26
  }
30
27
  onAutoCompleteSelect(node) {
@@ -64,17 +61,14 @@ export class DynamicListFilterComponent extends DynamicListComponent {
64
61
  this.listObject = { entries: (this.params.colDef.filterParams.values || []).map(value => ({ value })) };
65
62
  this.pickerTitle = this.params.colDef.headerName;
66
63
  }
67
- afterGuiAttached(params) {
68
- // this.autoCompleteInput.multiInputEL.nativeElement.focus();
69
- }
70
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListFilterComponent, deps: [{ token: i1.TranslateService }, { token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DynamicListFilterComponent, selector: "eo-dynamic-list-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n </div>\n </ng-template>\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <div class=\"description\" style=\"font-style: italic; color: var(--text-color-caption)\">{{item[descriptionField]}}</div>\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, $event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1 1 auto;border:0;outline:0}:host .eo-dynamic-list>button{flex:0 0 auto;padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete .inputToken{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i5.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i8.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListFilterComponent, deps: [{ token: i1.LocalStorageService }, { token: i2.ObjectFormHelperService }, { token: i3.DynamicListService }], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DynamicListFilterComponent, selector: "eo-dynamic-list-filter", viewQueries: [{ propertyName: "eoDialog", first: true, predicate: EoDialogComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n </div>\n </ng-template>\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <div class=\"description\" style=\"font-style: italic; color: var(--text-color-caption)\">{{item[descriptionField]}}</div>\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, !!$event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1 1 auto;border:0;outline:0}:host .eo-dynamic-list>button{flex:0 0 auto;padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete .inputToken{display:none}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i7.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i10.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] }); }
72
66
  }
73
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DynamicListFilterComponent, decorators: [{
74
68
  type: Component,
75
- args: [{ selector: 'eo-dynamic-list-filter', template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n </div>\n </ng-template>\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <div class=\"description\" style=\"font-style: italic; color: var(--text-color-caption)\">{{item[descriptionField]}}</div>\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, $event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1 1 auto;border:0;outline:0}:host .eo-dynamic-list>button{flex:0 0 auto;padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete .inputToken{display:none}\n"] }]
76
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i1.EventService }], propDecorators: { eoDialog: [{
69
+ args: [{ selector: 'eo-dynamic-list-filter', template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [visible]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\n [styleClass]=\"'dynlist-dialog'\" (hide)=\"display = false\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" field=\"{{valueField}}\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n </div>\n </ng-template>\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <div class=\"description\" style=\"font-style: italic; color: var(--text-color-caption)\">{{item[descriptionField]}}</div>\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, !!$event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1 1 auto;border:0;outline:0}:host .eo-dynamic-list>button{flex:0 0 auto;padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete .inputToken{display:none}\n"] }]
70
+ }], ctorParameters: () => [{ type: i1.LocalStorageService }, { type: i2.ObjectFormHelperService }, { type: i3.DynamicListService }], propDecorators: { eoDialog: [{
77
71
  type: ViewChild,
78
72
  args: [EoDialogComponent]
79
73
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1saXN0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZHluYW1pYy1saXN0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2R5bmFtaWMtbGlzdC9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDL0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7QUFRM0UsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG9CQUFvQjtJQVFsRSxZQUFZLFNBQTJCLEVBQVUsWUFBMEI7UUFDekUsS0FBSyxFQUFFLENBQUM7UUFEdUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFQM0UsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUVqQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixjQUFTLEdBQUcsUUFBUSxDQUFDO0lBTXJCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbEMseUJBQXlCO1lBQ3pCLHFCQUFxQjtZQUNyQiwwSEFBMEg7WUFDMUgsU0FBUztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBSTtRQUN2QixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFJO1FBQ3pCLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHNCQUFzQixDQUFDLEdBQUc7UUFDeEIsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBNkI7UUFDMUMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDdkMsVUFBVSxFQUFFLDRCQUE0QjtZQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUNwRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUVuRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBK0I7UUFDOUMsNkRBQTZEO0lBQy9ELENBQUM7OEdBdEVVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHdHQU0xQixpQkFBaUIsdUVDbkI5Qix3N0RBc0NNOzsyRkR6Qk8sMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3QjtnSEFVSixRQUFRO3NCQUFyQyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElGaWx0ZXJBbmd1bGFyQ29tcCB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyJztcbmltcG9ydCB7IElBZnRlckd1aUF0dGFjaGVkUGFyYW1zLCBJRG9lc0ZpbHRlclBhc3NQYXJhbXMgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS1lbGVtZW50cy9keW5hbWljLWxpc3QvZHluYW1pYy1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFb0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3VpL2VvLWRpYWxvZy9lby1kaWFsb2cuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1keW5hbWljLWxpc3QtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi8uLi9mb3JtLWVsZW1lbnRzL2R5bmFtaWMtbGlzdC9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vLi4vZm9ybS1lbGVtZW50cy9keW5hbWljLWxpc3QvZHluYW1pYy1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0xpc3RGaWx0ZXJDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIElGaWx0ZXJBbmd1bGFyQ29tcCB7XG4gIHBhcmFtczogYW55ID0ge307XG4gIGNvbHVtbjogYW55O1xuICBtdWx0aXNlbGVjdCA9IHRydWU7XG4gIHNpdHVhdGlvbiA9ICdTRUFSQ0gnO1xuXG4gIEBWaWV3Q2hpbGQoRW9EaWFsb2dDb21wb25lbnQpIGVvRGlhbG9nOiBFb0RpYWxvZ0NvbXBvbmVudDtcblxuICBjb25zdHJ1Y3Rvcih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZSgpIHtcbiAgICBpZiAoIXRoaXMucGFyYW1zLmZpbHRlclBhcmFtcyB8fCAhdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLmFwcGx5QnV0dG9uKSB7XG4gICAgICB0aGlzLnBhcmFtcy5hcGkub25GaWx0ZXJDaGFuZ2VkKCk7XG4gICAgICAvLyBUT0RPOiBzdGlsbCBuZWNlc3Nhcnk/XG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vICAgdGhpcy5hdXRvQ29tcGxldGVCdXR0b24ubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSB0aGlzLmF1dG9Db21wbGV0ZUlucHV0Lm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCArICdweCc7XG4gICAgICAvLyB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBvbkF1dG9Db21wbGV0ZVNlbGVjdChub2RlKSB7XG4gICAgc3VwZXIub25BdXRvQ29tcGxldGVTZWxlY3Qobm9kZSk7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlKCk7XG4gIH1cblxuICBvbkF1dG9Db21wbGV0ZVVuc2VsZWN0KG5vZGUpIHtcbiAgICBzdXBlci5vbkF1dG9Db21wbGV0ZVVuc2VsZWN0KG5vZGUpO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICB9XG5cbiAgb25UcmVlU2VsZWN0aW9uQ2hhbmdlZChldnQpIHtcbiAgICBzdXBlci5vblRyZWVTZWxlY3Rpb25DaGFuZ2VkKGV2dCk7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlKCk7XG4gIH1cblxuICBpc0ZpbHRlckFjdGl2ZSgpIHtcbiAgICByZXR1cm4gISEodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCk7XG4gIH1cblxuICBkb2VzRmlsdGVyUGFzcyhwYXJhbXM6IElEb2VzRmlsdGVyUGFzc1BhcmFtcykge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXMuZGF0YVt0aGlzLnBhcmFtcy5jb2xEZWYuZmllbGRdO1xuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSlcbiAgICAgICAgLnNvbWUodmFsID0+ICEhfnRoaXMuc2VsZWN0ZWROb2Rlcy5tYXAodiA9PiB2Lm5hbWUpLmluZGV4T2YodmFsKSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID8ge1xuICAgICAgZmlsdGVyVHlwZTogJ0R5bmFtaWNMaXN0RmlsdGVyQ29tcG9uZW50JyxcbiAgICAgIGZpbHRlcjogdGhpcy52YWx1ZVxuICAgIH0gOiBudWxsO1xuICB9XG5cbiAgc2V0TW9kZWwodmFsdWU6IGFueSkge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBhZ0luaXQocGFyYW1zOiBhbnkpIHtcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLmxpc3RPYmplY3QgPSB7ZW50cmllczogKHRoaXMucGFyYW1zLmNvbERlZi5maWx0ZXJQYXJhbXMudmFsdWVzIHx8IFtdKS5tYXAodmFsdWUgPT4gKHt2YWx1ZX0pKX07XG4gICAgdGhpcy5waWNrZXJUaXRsZSA9IHRoaXMucGFyYW1zLmNvbERlZi5oZWFkZXJOYW1lO1xuXG4gIH1cblxuICBhZnRlckd1aUF0dGFjaGVkKHBhcmFtczogSUFmdGVyR3VpQXR0YWNoZWRQYXJhbXMpOiB2b2lkIHtcbiAgICAvLyB0aGlzLmF1dG9Db21wbGV0ZUlucHV0Lm11bHRpSW5wdXRFTC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxlby1kaWFsb2cgI2xpc3REaWFsb2cgW3RpdGxlXT1cInBpY2tlclRpdGxlXCIgW3Zpc2libGVdPVwiZGlzcGxheVwiIFtuZ0NsYXNzXT1cIntlbXB0eTogIShsaXN0Py5lbnRyaWVzPy5sZW5ndGgpfVwiXG4gIFtzdHlsZUNsYXNzXT1cIidkeW5saXN0LWRpYWxvZydcIiAoaGlkZSk9XCJkaXNwbGF5ID0gZmFsc2VcIj5cblxuICA8ZW8tdHJlZSBbdHJlZV09XCJ0cmVlXCIgKm5nSWY9XCJkaXNwbGF5ICYmIHRyZWVcIiBbaXNEaXNwbGF5ZWRdPVwiZGlzcGxheVwiIFtvcHRpb25zXT1cInttdWx0aXNlbGVjdDogbXVsdGlzZWxlY3R9XCJcbiAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIiAoa2V5dXAuZW50ZXIpPVwic2hvd0RpYWxvZygkZXZlbnQsIGZhbHNlKVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UcmVlU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XG4gIDwvZW8tdHJlZT5cblxuICA8ZGl2IGNsYXNzPVwiZW1wdHlcIiAqbmdJZj1cIiEobGlzdD8uZW50cmllcz8ubGVuZ3RoKVwiPlxuICAgIDxkaXYgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuZHluYW1pYy5saXN0LmVtcHR5PC9kaXY+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG5cbjxkaXYgY2xhc3M9XCJlby1keW5hbWljLWxpc3RcIiBbbmdDbGFzc109XCJ7ZnVsbDogc2VsZWN0ZWROb2RlcyAmJiBzZWxlY3RlZE5vZGVzLmxlbmd0aCA9PT0gYXV0b2NvbXBsZXRlVmFsdWVzLmxlbmd0aH1cIj5cblxuICA8eXZjLWF1dG9jb21wbGV0ZSBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIiAjYXV0b2NvbXBsZXRlIChzdWdnZXN0aW9uU2VsZWN0KT1cIm9uQXV0b0NvbXBsZXRlU2VsZWN0KCRldmVudClcIlxuICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIChzdWdnZXN0aW9uVW5zZWxlY3QpPVwib25BdXRvQ29tcGxldGVVbnNlbGVjdCgkZXZlbnQpXCIgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIlxuICAgIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25UcmVlU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCIgZmllbGQ9XCJ7e3ZhbHVlRmllbGR9fVwiIChhdXRvY29tcGxldGVGbmMpPVwiYXV0b2NvbXBsZXRlRm4oJGV2ZW50KVwiXG4gICAgW211bHRpcGxlXT1cIm11bHRpc2VsZWN0XCI+XG5cbiAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gI2NoaXBUZW1wbGF0ZT5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7aXRlbVt2YWx1ZUZpZWxkXX19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7aXRlbVt2YWx1ZUZpZWxkXX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIHN0eWxlPVwiZm9udC1zdHlsZTogaXRhbGljOyBjb2xvcjogdmFyKC0tdGV4dC1jb2xvci1jYXB0aW9uKVwiPnt7aXRlbVtkZXNjcmlwdGlvbkZpZWxkXX19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3l2Yy1hdXRvY29tcGxldGU+XG5cbiAgPGJ1dHRvbiAjYnV0dG9uIGNsYXNzPVwidWktYnV0dG9uXCIgKm5nSWY9XCIhcmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiAoY2xpY2spPVwic2hvd0RpYWxvZygkZXZlbnQsICRldmVudC5kZXRhaWwpXCJcbiAgICAoa2V5dXAuYXJyb3dEb3duKT1cInNob3dEaWFsb2coJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJzaG93RGlhbG9nKCRldmVudClcIiAoa2V5dXAuc3BhY2UpPVwic2hvd0RpYWxvZygkZXZlbnQpXCI+XG4gICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYXJyb3dfZG93bi5zdmcnXCI+PC9lby1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1saXN0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZHluYW1pYy1saXN0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2R5bmFtaWMtbGlzdC9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDN0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7OztBQVV6RSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsb0JBQW9CO0lBUWxFLFlBQVksbUJBQXdDLEVBQUUsdUJBQWdELEVBQUUsa0JBQXNDO1FBQzVJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBRSxDQUFDO1FBUjNFLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFFakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsY0FBUyxHQUFHLFFBQVEsQ0FBQztJQU1yQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBSTtRQUN2QixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFJO1FBQ3pCLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHNCQUFzQixDQUFDLEdBQUc7UUFDeEIsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBNkI7UUFDMUMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDdkMsVUFBVSxFQUFFLDRCQUE0QjtZQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLEVBQXlCLENBQUM7UUFDNUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFFbkQsQ0FBQzs4R0E5RFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsd0dBTTFCLGlCQUFpQix1RUNyQjlCLDQ3REF1Q0E7OzJGRHhCYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usd0JBQXdCOytKQVVKLFFBQVE7c0JBQXJDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJRmlsdGVyQW5ndWxhckNvbXB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyJztcbmltcG9ydCB7SURvZXNGaWx0ZXJQYXNzUGFyYW1zfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZSwgQXV0b2NvbXBsZXRlUmVzcG9uc2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge0R5bmFtaWNMaXN0Q29tcG9uZW50fSBmcm9tICcuLi8uLi9mb3JtLWVsZW1lbnRzL2R5bmFtaWMtbGlzdC9keW5hbWljLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7RW9EaWFsb2dDb21wb25lbnR9IGZyb20gJy4uLy4uL3VpL2VvLWRpYWxvZy9lby1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7T2JqZWN0Rm9ybUhlbHBlclNlcnZpY2V9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7RHluYW1pY0xpc3RTZXJ2aWNlfSBmcm9tICcuLy4uLy4uL2Zvcm0tZWxlbWVudHMvZHluYW1pYy1saXN0L2R5bmFtaWMtbGlzdC5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1keW5hbWljLWxpc3QtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi8uLi9mb3JtLWVsZW1lbnRzL2R5bmFtaWMtbGlzdC9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vLi4vZm9ybS1lbGVtZW50cy9keW5hbWljLWxpc3QvZHluYW1pYy1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0xpc3RGaWx0ZXJDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIElGaWx0ZXJBbmd1bGFyQ29tcCB7XG4gIHBhcmFtczogYW55ID0ge307XG4gIGNvbHVtbjogYW55O1xuICBtdWx0aXNlbGVjdCA9IHRydWU7XG4gIHNpdHVhdGlvbiA9ICdTRUFSQ0gnO1xuXG4gIEBWaWV3Q2hpbGQoRW9EaWFsb2dDb21wb25lbnQpIGVvRGlhbG9nOiBFb0RpYWxvZ0NvbXBvbmVudDtcblxuICBjb25zdHJ1Y3Rvcihsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBvYmplY3RGb3JtSGVscGVyU2VydmljZTogT2JqZWN0Rm9ybUhlbHBlclNlcnZpY2UsIGR5bmFtaWNMaXN0U2VydmljZTogRHluYW1pY0xpc3RTZXJ2aWNlKSB7XG4gICAgc3VwZXIoZHluYW1pY0xpc3RTZXJ2aWNlLCBsb2NhbFN0b3JhZ2VTZXJ2aWNlLCBvYmplY3RGb3JtSGVscGVyU2VydmljZSwpO1xuICB9XG5cbiAgb25WYWx1ZUNoYW5nZSgpIHtcbiAgICBpZiAoIXRoaXMucGFyYW1zLmZpbHRlclBhcmFtcyB8fCAhdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLmFwcGx5QnV0dG9uKSB7XG4gICAgICB0aGlzLnBhcmFtcy5hcGkub25GaWx0ZXJDaGFuZ2VkKCk7XG4gICAgfVxuICB9XG5cbiAgb25BdXRvQ29tcGxldGVTZWxlY3Qobm9kZSkge1xuICAgIHN1cGVyLm9uQXV0b0NvbXBsZXRlU2VsZWN0KG5vZGUpO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICB9XG5cbiAgb25BdXRvQ29tcGxldGVVbnNlbGVjdChub2RlKSB7XG4gICAgc3VwZXIub25BdXRvQ29tcGxldGVVbnNlbGVjdChub2RlKTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2UoKTtcbiAgfVxuXG4gIG9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoZXZ0KSB7XG4gICAgc3VwZXIub25UcmVlU2VsZWN0aW9uQ2hhbmdlZChldnQpO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICB9XG5cbiAgaXNGaWx0ZXJBY3RpdmUoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpO1xuICB9XG5cbiAgZG9lc0ZpbHRlclBhc3MocGFyYW1zOiBJRG9lc0ZpbHRlclBhc3NQYXJhbXMpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zLmRhdGFbdGhpcy5wYXJhbXMuY29sRGVmLmZpZWxkXTtcbiAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pXG4gICAgICAgIC5zb21lKHZhbCA9PiAhIX50aGlzLnNlbGVjdGVkTm9kZXMubWFwKHYgPT4gdi5uYW1lKS5pbmRleE9mKHZhbCkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRNb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA/IHtcbiAgICAgIGZpbHRlclR5cGU6ICdEeW5hbWljTGlzdEZpbHRlckNvbXBvbmVudCcsXG4gICAgICBmaWx0ZXI6IHRoaXMudmFsdWVcbiAgICB9IDogbnVsbDtcbiAgfVxuXG4gIHNldE1vZGVsKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgYWdJbml0KHBhcmFtczogYW55KSB7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5saXN0T2JqZWN0ID0ge2VudHJpZXM6ICh0aGlzLnBhcmFtcy5jb2xEZWYuZmlsdGVyUGFyYW1zLnZhbHVlcyB8fCBbXSkubWFwKHZhbHVlID0+ICh7dmFsdWV9KSl9IGFzIEF1dG9jb21wbGV0ZVJlc3BvbnNlO1xuICAgIHRoaXMucGlja2VyVGl0bGUgPSB0aGlzLnBhcmFtcy5jb2xEZWYuaGVhZGVyTmFtZTtcblxuICB9XG59XG4iLCI8ZW8tZGlhbG9nICNsaXN0RGlhbG9nIFt0aXRsZV09XCJwaWNrZXJUaXRsZVwiIFt2aXNpYmxlXT1cImRpc3BsYXlcIiBbbmdDbGFzc109XCJ7ZW1wdHk6ICEobGlzdD8uZW50cmllcz8ubGVuZ3RoKX1cIlxuICBbc3R5bGVDbGFzc109XCInZHlubGlzdC1kaWFsb2cnXCIgKGhpZGUpPVwiZGlzcGxheSA9IGZhbHNlXCI+XG5cbiAgPGVvLXRyZWUgW3RyZWVdPVwidHJlZVwiICpuZ0lmPVwiZGlzcGxheSAmJiB0cmVlXCIgW2lzRGlzcGxheWVkXT1cImRpc3BsYXlcIiBbb3B0aW9uc109XCJ7bXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0fVwiXG4gICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCIgKGtleXVwLmVudGVyKT1cInNob3dEaWFsb2coJGV2ZW50LCBmYWxzZSlcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiPlxuICA8L2VvLXRyZWU+XG5cbiAgPGRpdiBjbGFzcz1cImVtcHR5XCIgKm5nSWY9XCIhKGxpc3Q/LmVudHJpZXM/Lmxlbmd0aClcIj5cbiAgICA8ZGl2IHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmR5bmFtaWMubGlzdC5lbXB0eTwvZGl2PlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPlxuXG48ZGl2IGNsYXNzPVwiZW8tZHluYW1pYy1saXN0XCIgW25nQ2xhc3NdPVwie2Z1bGw6IHNlbGVjdGVkTm9kZXMgJiYgc2VsZWN0ZWROb2Rlcy5sZW5ndGggPT09IGF1dG9jb21wbGV0ZVZhbHVlcy5sZW5ndGh9XCI+XG5cbiAgPHl2Yy1hdXRvY29tcGxldGUgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCIgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvbkF1dG9Db21wbGV0ZVNlbGVjdCgkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uQXV0b0NvbXBsZXRlVW5zZWxlY3QoJGV2ZW50KVwiIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCJcbiAgICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiIGZpZWxkPVwie3t2YWx1ZUZpZWxkfX1cIiAoYXV0b2NvbXBsZXRlRm5jKT1cImF1dG9jb21wbGV0ZUZuKCRldmVudClcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXNlbGVjdFwiPlxuXG4gICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtICNjaGlwVGVtcGxhdGU+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57e2l0ZW1bdmFsdWVGaWVsZF19fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57e2l0ZW1bdmFsdWVGaWVsZF19fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIiBzdHlsZT1cImZvbnQtc3R5bGU6IGl0YWxpYzsgY29sb3I6IHZhcigtLXRleHQtY29sb3ItY2FwdGlvbilcIj57e2l0ZW1bZGVzY3JpcHRpb25GaWVsZF19fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC95dmMtYXV0b2NvbXBsZXRlPlxuXG4gIDxidXR0b24gI2J1dHRvbiBjbGFzcz1cInVpLWJ1dHRvblwiICpuZ0lmPVwiIXJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKGNsaWNrKT1cInNob3dEaWFsb2coJGV2ZW50LCAhISRldmVudC5kZXRhaWwpXCJcbiAgICAoa2V5dXAuYXJyb3dEb3duKT1cInNob3dEaWFsb2coJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJzaG93RGlhbG9nKCRldmVudClcIiAoa2V5dXAuc3BhY2UpPVwic2hvd0RpYWxvZygkZXZlbnQpXCI+XG4gICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYXJyb3dfZG93bi5zdmcnXCI+PC9lby1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19