@koobiq/components 18.39.0 → 18.39.2

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 (68) hide show
  1. package/app-switcher/app-switcher.d.ts +11 -4
  2. package/checkbox/checkbox.scss +5 -21
  3. package/code-block/code-block.scss +2 -2
  4. package/core/option/option.d.ts +1 -0
  5. package/dropdown/dropdown.scss +3 -0
  6. package/esm2022/app-switcher/app-switcher-dropdown-app.mjs +21 -7
  7. package/esm2022/app-switcher/app-switcher.mjs +21 -17
  8. package/esm2022/app-switcher/kbq-app-switcher-list-item.mjs +24 -11
  9. package/esm2022/checkbox/checkbox.mjs +2 -2
  10. package/esm2022/code-block/code-block.mjs +3 -3
  11. package/esm2022/core/option/option.mjs +3 -1
  12. package/esm2022/core/version.mjs +2 -2
  13. package/esm2022/dropdown/dropdown-trigger.directive.mjs +2 -4
  14. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  15. package/esm2022/filter-bar/filter-bar.mjs +3 -17
  16. package/esm2022/filter-bar/pipes/pipe-date.mjs +4 -1
  17. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +5 -2
  18. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +35 -14
  19. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +40 -11
  20. package/esm2022/input/input-number.mjs +3 -1
  21. package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
  22. package/esm2022/navbar/navbar-brand.component.mjs +2 -2
  23. package/esm2022/navbar/navbar.component.mjs +2 -2
  24. package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
  25. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  26. package/esm2022/popover/popover.component.mjs +3 -3
  27. package/esm2022/select/select.component.mjs +4 -2
  28. package/esm2022/time-range/time-range-editor.mjs +2 -2
  29. package/esm2022/timepicker/timepicker.directive.mjs +59 -9
  30. package/esm2022/tooltip/tooltip.component.mjs +3 -3
  31. package/fesm2022/koobiq-components-app-switcher.mjs +63 -35
  32. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  34. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  35. package/fesm2022/koobiq-components-code-block.mjs +2 -2
  36. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-core.mjs +3 -1
  38. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-dropdown.mjs +3 -5
  40. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  41. package/fesm2022/koobiq-components-filter-bar.mjs +82 -39
  42. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-input.mjs +2 -0
  44. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
  46. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-navbar.mjs +6 -6
  48. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-popover.mjs +4 -4
  50. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-select.mjs +4 -2
  52. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-time-range.mjs +1 -1
  54. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  55. package/fesm2022/koobiq-components-timepicker.mjs +58 -8
  56. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  57. package/fesm2022/koobiq-components-tooltip.mjs +2 -2
  58. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  59. package/filter-bar/pipes/pipe-multi-select.d.ts +4 -1
  60. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +5 -0
  61. package/loader-overlay/loader-overlay.scss +22 -31
  62. package/navbar/_navbar-item_vertical.scss +8 -0
  63. package/navbar/navbar-brand.scss +2 -2
  64. package/package.json +4 -4
  65. package/popover/_popover-theme.scss +2 -2
  66. package/schematics/ng-add/index.js +2 -2
  67. package/timepicker/timepicker.directive.d.ts +16 -6
  68. package/tooltip/_tooltip-theme.scss +5 -6
@@ -43,6 +43,7 @@ export function defaultGroupBy(app, groups, untyped) {
43
43
  name: appType,
44
44
  aliases: [app],
45
45
  icon: app.icon,
46
+ iconSrc: app.iconSrc,
46
47
  id: ''
47
48
  };
48
49
  }
@@ -142,7 +143,7 @@ export class KbqAppSwitcherComponent extends KbqPopUp {
142
143
  this.configuration = KBQ_APP_SWITCHER_DEFAULT_CONFIGURATION;
143
144
  }
144
145
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAppSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
145
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqAppSwitcherComponent, isStandalone: true, selector: "kbq-app-switcher", host: { classAttribute: "kbq-app-switcher" }, viewQueries: [{ propertyName: "input", first: true, predicate: KbqInput, descendants: true }, { propertyName: "otherSites", first: true, predicate: ["otherSites"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (trigger.withSearch) {\n <div class=\"kbq-app-switcher__search-container\" (mouseenter)=\"otherSites?.close()\">\n <kbq-form-field noBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (keydown.escape)=\"escapeHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n </div>\n\n <kbq-divider />\n}\n\n<div kbq-scrollbar>\n @if (!searchControl.getRawValue()) {\n <div class=\"kbq-app-switcher__app-container\" (mouseenter)=\"otherSites?.close()\">\n @if (trigger.sitesMode) {\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ trigger.selectedSite?.name }}</div>\n @if (trigger.selectedSite?.status) {\n <kbq-badge class=\"kbq-app-switcher-group-header__badge\" [compact]=\"true\">\n {{ trigger.selectedSite.status }}\n </kbq-badge>\n }\n </div>\n }\n\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (app of trigger.currentApps; track app) {\n @if (!app.aliases) {\n <a\n kbq-app-switcher-list-item\n href=\"{{ app.link }}\"\n [class.kbq-selected]=\"app.id === trigger.selectedApp?.id\"\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></a>\n } @else {\n <div\n #appSwitcherApp=\"kbqAppSwitcherApp\"\n kbq-app-switcher-list-item\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></div>\n\n @if (!appSwitcherApp.collapsed) {\n @for (alias of app.aliases; track alias) {\n <a\n class=\"kbq-app-switcher-site_nested\"\n kbq-app-switcher-list-item\n href=\"{{ alias.link }}\"\n [class.kbq-selected]=\"alias.id === trigger.selectedApp?.id\"\n [app]=\"alias\"\n ></a>\n }\n }\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n @if (trigger.sitesMode) {\n <kbq-divider />\n\n <div class=\"kbq-app-switcher__sites-container\">\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ localeData.sitesHeader }}</div>\n </div>\n\n <kbq-dropdown #otherSites=\"kbqDropdown\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-sites\">\n @for (site of trigger.sites; track site) {\n @if (site.id !== trigger.selectedSite?.id) {\n <div\n [kbq-app-switcher-dropdown-site]=\"site\"\n [kbqDropdownTriggerFor]=\"dropdownWithSelectedSite\"\n [offsetX]=\"0\"\n (mouseenter)=\"activeSite = site\"\n ></div>\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n <kbq-dropdown #dropdownWithSelectedSite=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (app of activeSite?.apps; track app) {\n @if (app.aliases) {\n <div\n #dropdownWithGroupedAppsTrigger=\"kbqDropdownTrigger\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n [kbqDropdownTriggerFor]=\"dropdownWithGroupedApps\"\n [offsetX]=\"0\"\n [class.kbq-pressed]=\"dropdownWithGroupedAppsTrigger.opened\"\n (mouseenter)=\"activeApp = app\"\n ></div>\n } @else {\n <a\n href=\"{{ app.link }}\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n (click)=\"selectAppInSite(activeSite, app)\"\n ></a>\n }\n }\n </kbq-dropdown>\n\n <kbq-dropdown #dropdownWithGroupedApps=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (alias of activeApp?.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n [kbq-app-switcher-dropdown-app]=\"alias\"\n (click)=\"selectAppInSite(activeSite, alias)\"\n ></a>\n }\n </kbq-dropdown>\n }\n } @else {\n <div class=\"kbq-app-switcher__search-result\">\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (site of filteredSites; track site) {\n @if (site.apps) {\n <kbq-optgroup label=\"{{ site.name }}\" />\n }\n\n @for (app of site.apps; track app) {\n <a kbq-app-switcher-list-item href=\"{{ app.link }}\" [app]=\"app\"></a>\n }\n } @empty {\n <div class=\"kbq-app-switcher__empty-search-result\">{{ localeData.searchEmptyResult }}</div>\n }\n </div>\n </kbq-dropdown>\n </div>\n }\n</div>\n", styles: [".kbq-app-switcher{position:relative;display:flex;flex-direction:column;margin-top:var(--kbq-size-xxs);margin-bottom:var(--kbq-size-xxs);width:320px;border-radius:var(--kbq-size-xs);box-shadow:var(--kbq-shadow-popup);box-sizing:border-box;z-index:1}.kbq-app-switcher__search-container{padding-top:var(--kbq-size-xxs)}.kbq-app-switcher__search-result{max-width:320px;min-height:0;padding:var(--kbq-size-s) var(--kbq-size-xxs)}.kbq-app-switcher__empty-search-result{display:flex;justify-content:center;align-items:center;height:96px}.kbq-app-switcher__app-container{display:flex;flex-direction:column;min-height:0;padding:var(--kbq-size-s) var(--kbq-size-xxs)}.kbq-app-switcher-group-header{padding:var(--kbq-size-s) var(--kbq-size-m);display:flex;flex-direction:row;justify-content:space-between}.kbq-app-switcher__sites-container{padding:var(--kbq-size-xxs)}.kbq-app-switcher{background:var(--kbq-background-card)}.kbq-app-switcher .kbq-app-switcher-group-header,.kbq-app-switcher__empty-search-result{color:var(--kbq-foreground-contrast-secondary)}.kbq-app-switcher,.kbq-app-switcher__empty-search-result{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-app-switcher-group-header__text{font-size:var(--kbq-typography-caps-compact-strong-font-size);font-style:var(--kbq-typography-caps-compact-strong-font-style);font-weight:var(--kbq-typography-caps-compact-strong-font-weight);line-height:var(--kbq-typography-caps-compact-strong-line-height);font-family:var(--kbq-typography-caps-compact-strong-font-family);text-transform:var(--kbq-typography-caps-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-caps-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-caps-compact-strong-letter-spacing)}.kbq-app-switcher-group-header__badge{font-size:var(--kbq-typography-text-compact-medium-font-size);font-style:var(--kbq-typography-text-compact-medium-font-style);font-weight:var(--kbq-typography-text-compact-medium-font-weight);line-height:var(--kbq-typography-text-compact-medium-line-height);font-family:var(--kbq-typography-text-compact-medium-font-family);text-transform:var(--kbq-typography-text-compact-medium-text-transform);font-feature-settings:var(--kbq-typography-text-compact-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-medium-letter-spacing)}.kbq-app-switch-tree-option__text{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "component", type: i2.KbqCleaner, selector: "kbq-cleaner", exportAs: ["kbqCleaner"] }, { kind: "component", type: i2.KbqFormField, selector: "kbq-form-field", inputs: ["noBorders"], exportAs: ["kbqFormField"] }, { kind: "directive", type: i2.KbqPrefix, selector: "[kbqPrefix]", exportAs: ["kbqPrefix"] }, { kind: "directive", type: i2.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i2.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i3.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqDividerModule }, { kind: "component", type: i5.KbqDivider, selector: "kbq-divider", inputs: ["vertical", "inset", "paddings"] }, { kind: "ngmodule", type: KbqBadgeModule }, { kind: "component", type: i6.KbqBadge, selector: "kbq-badge", inputs: ["compact", "outline", "badgeColor"] }, { kind: "directive", type: i6.KbqBadgeCssStyler, selector: "kbq-badge" }, { kind: "ngmodule", type: KbqDropdownModule }, { kind: "component", type: i7.KbqDropdown, selector: "kbq-dropdown", inputs: ["navigationWithWrap", "xPosition", "yPosition", "overlapTriggerY", "overlapTriggerX", "hasBackdrop", "class", "backdropClass"], outputs: ["closed"], exportAs: ["kbqDropdown"] }, { kind: "directive", type: i7.KbqDropdownTrigger, selector: "[kbqDropdownTriggerFor]", inputs: ["offsetX", "offsetY", "kbqDropdownTriggerData", "openByArrowDown", "kbqDropdownTriggerRestoreFocus", "kbqDropdownTriggerFor"], outputs: ["dropdownOpened", "dropdownClosed"], exportAs: ["kbqDropdownTrigger"] }, { kind: "directive", type: i7.KbqDropdownStaticContent, selector: "[kbqDropdownStaticContent]" }, { kind: "ngmodule", type: KbqScrollbarModule }, { kind: "component", type: i8.KbqScrollbar, selector: "kbq-scrollbar, [kbq-scrollbar]", inputs: ["initializationTarget", "options", "events", "defer"], outputs: ["onInitialize", "onUpdate", "onDestroy", "onScroll"], exportAs: ["kbqScrollbar"] }, { kind: "ngmodule", type: KbqOptionModule }, { kind: "component", type: i9.KbqOptgroup, selector: "kbq-optgroup", inputs: ["label", "disabled"], exportAs: ["kbqOptgroup"] }, { kind: "component", type: KbqAppSwitcherDropdownApp, selector: "[kbq-app-switcher-dropdown-app]", inputs: ["kbq-app-switcher-dropdown-app"], exportAs: ["kbqAppSwitcherDropdownApp"] }, { kind: "component", type: KbqAppSwitcherDropdownSite, selector: "[kbq-app-switcher-dropdown-site]", inputs: ["kbq-app-switcher-dropdown-site"], exportAs: ["kbqAppSwitcherDropdownSite"] }, { kind: "component", type: KbqAppSwitcherListItem, selector: "[kbq-app-switcher-list-item]", inputs: ["app", "toggle", "collapsed"], exportAs: ["kbqAppSwitcherApp"] }], animations: [kbqAppSwitcherAnimations.state], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
146
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqAppSwitcherComponent, isStandalone: true, selector: "kbq-app-switcher", host: { classAttribute: "kbq-app-switcher" }, viewQueries: [{ propertyName: "input", first: true, predicate: KbqInput, descendants: true }, { propertyName: "otherSites", first: true, predicate: ["otherSites"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (trigger.withSearch) {\n <div class=\"kbq-app-switcher__search-container\" (mouseenter)=\"otherSites?.close()\">\n <kbq-form-field noBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (keydown.escape)=\"escapeHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n </div>\n\n <kbq-divider />\n}\n\n<div kbq-scrollbar>\n @if (!searchControl.getRawValue()) {\n <div class=\"kbq-app-switcher__app-container\" (mouseenter)=\"otherSites?.close()\">\n @if (trigger.sitesMode) {\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ trigger.selectedSite?.name }}</div>\n @if (trigger.selectedSite?.status) {\n <kbq-badge class=\"kbq-app-switcher-group-header__badge\" [compact]=\"true\">\n {{ trigger.selectedSite.status }}\n </kbq-badge>\n }\n </div>\n }\n\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (app of trigger.currentApps; track app) {\n @if (!app.aliases) {\n <a\n kbq-app-switcher-list-item\n href=\"{{ app.link }}\"\n [class.kbq-selected]=\"app.id === trigger.selectedApp?.id\"\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></a>\n } @else {\n <div\n #appSwitcherApp=\"kbqAppSwitcherApp\"\n kbq-app-switcher-list-item\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></div>\n\n @if (!appSwitcherApp.collapsed) {\n @for (alias of app.aliases; track alias) {\n <a\n class=\"kbq-app-switcher-site_nested\"\n kbq-app-switcher-list-item\n href=\"{{ alias.link }}\"\n [class.kbq-selected]=\"alias.id === trigger.selectedApp?.id\"\n [app]=\"alias\"\n ></a>\n }\n }\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n @if (trigger.sitesMode) {\n <kbq-divider />\n\n <div class=\"kbq-app-switcher__sites-container\">\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ localeData.sitesHeader }}</div>\n </div>\n\n <kbq-dropdown #otherSites=\"kbqDropdown\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-sites\">\n @for (site of trigger.sites; track site) {\n @if (site.id !== trigger.selectedSite?.id) {\n <div\n [kbq-app-switcher-dropdown-site]=\"site\"\n [kbqDropdownTriggerFor]=\"dropdownWithSelectedSite\"\n [offsetX]=\"0\"\n (mouseenter)=\"activeSite = site\"\n ></div>\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n <kbq-dropdown #dropdownWithSelectedSite=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (app of activeSite?.apps; track app) {\n @if (app.aliases) {\n <div\n #dropdownWithGroupedAppsTrigger=\"kbqDropdownTrigger\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n [kbqDropdownTriggerFor]=\"dropdownWithGroupedApps\"\n [offsetX]=\"0\"\n [class.kbq-pressed]=\"dropdownWithGroupedAppsTrigger.opened\"\n (mouseenter)=\"activeApp = app\"\n ></div>\n } @else {\n <a\n href=\"{{ app.link }}\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n (click)=\"selectAppInSite(activeSite, app)\"\n ></a>\n }\n }\n </kbq-dropdown>\n\n <kbq-dropdown #dropdownWithGroupedApps=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (alias of activeApp?.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n [kbq-app-switcher-dropdown-app]=\"alias\"\n (click)=\"selectAppInSite(activeSite, alias)\"\n ></a>\n }\n </kbq-dropdown>\n }\n } @else {\n <div class=\"kbq-app-switcher__search-result\">\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (site of filteredSites; track site) {\n @if (trigger.sitesMode && site.apps) {\n <kbq-optgroup label=\"{{ site.name }}\" />\n }\n\n @for (app of site.apps; track app) {\n <a kbq-app-switcher-list-item href=\"{{ app.link }}\" [app]=\"app\"></a>\n }\n } @empty {\n <div class=\"kbq-app-switcher__empty-search-result\">{{ localeData.searchEmptyResult }}</div>\n }\n </div>\n </kbq-dropdown>\n </div>\n }\n</div>\n", styles: [".kbq-app-switcher{position:relative;display:flex;flex-direction:column;margin-top:var(--kbq-size-xxs);margin-bottom:var(--kbq-size-xxs);width:320px;border-radius:var(--kbq-size-xs);box-shadow:var(--kbq-shadow-popup);box-sizing:border-box;z-index:1}.kbq-app-switcher__search-container{padding-top:var(--kbq-size-xxs)}.kbq-app-switcher__search-result{max-width:320px;min-height:0;padding:var(--kbq-size-s) var(--kbq-size-xxs)}.kbq-app-switcher__empty-search-result{display:flex;justify-content:center;align-items:center;height:96px}.kbq-app-switcher__app-container{display:flex;flex-direction:column;min-height:0;padding:var(--kbq-size-s) var(--kbq-size-xxs)}.kbq-app-switcher-group-header{padding:var(--kbq-size-s) var(--kbq-size-m);display:flex;flex-direction:row;justify-content:space-between}.kbq-app-switcher__sites-container{padding:var(--kbq-size-xxs)}.kbq-app-switcher{background:var(--kbq-background-card)}.kbq-app-switcher .kbq-app-switcher-group-header,.kbq-app-switcher__empty-search-result{color:var(--kbq-foreground-contrast-secondary)}.kbq-app-switcher,.kbq-app-switcher__empty-search-result{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-app-switcher-group-header__text{font-size:var(--kbq-typography-caps-compact-strong-font-size);font-style:var(--kbq-typography-caps-compact-strong-font-style);font-weight:var(--kbq-typography-caps-compact-strong-font-weight);line-height:var(--kbq-typography-caps-compact-strong-line-height);font-family:var(--kbq-typography-caps-compact-strong-font-family);text-transform:var(--kbq-typography-caps-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-caps-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-caps-compact-strong-letter-spacing)}.kbq-app-switcher-group-header__badge{font-size:var(--kbq-typography-text-compact-medium-font-size);font-style:var(--kbq-typography-text-compact-medium-font-style);font-weight:var(--kbq-typography-text-compact-medium-font-weight);line-height:var(--kbq-typography-text-compact-medium-line-height);font-family:var(--kbq-typography-text-compact-medium-font-family);text-transform:var(--kbq-typography-text-compact-medium-text-transform);font-feature-settings:var(--kbq-typography-text-compact-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-medium-letter-spacing)}.kbq-app-switch-tree-option__text{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "component", type: i2.KbqCleaner, selector: "kbq-cleaner", exportAs: ["kbqCleaner"] }, { kind: "component", type: i2.KbqFormField, selector: "kbq-form-field", inputs: ["noBorders"], exportAs: ["kbqFormField"] }, { kind: "directive", type: i2.KbqPrefix, selector: "[kbqPrefix]", exportAs: ["kbqPrefix"] }, { kind: "directive", type: i2.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i2.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i3.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqDividerModule }, { kind: "component", type: i5.KbqDivider, selector: "kbq-divider", inputs: ["vertical", "inset", "paddings"] }, { kind: "ngmodule", type: KbqBadgeModule }, { kind: "component", type: i6.KbqBadge, selector: "kbq-badge", inputs: ["compact", "outline", "badgeColor"] }, { kind: "directive", type: i6.KbqBadgeCssStyler, selector: "kbq-badge" }, { kind: "ngmodule", type: KbqDropdownModule }, { kind: "component", type: i7.KbqDropdown, selector: "kbq-dropdown", inputs: ["navigationWithWrap", "xPosition", "yPosition", "overlapTriggerY", "overlapTriggerX", "hasBackdrop", "class", "backdropClass"], outputs: ["closed"], exportAs: ["kbqDropdown"] }, { kind: "directive", type: i7.KbqDropdownTrigger, selector: "[kbqDropdownTriggerFor]", inputs: ["offsetX", "offsetY", "kbqDropdownTriggerData", "openByArrowDown", "kbqDropdownTriggerRestoreFocus", "kbqDropdownTriggerFor"], outputs: ["dropdownOpened", "dropdownClosed"], exportAs: ["kbqDropdownTrigger"] }, { kind: "directive", type: i7.KbqDropdownStaticContent, selector: "[kbqDropdownStaticContent]" }, { kind: "ngmodule", type: KbqScrollbarModule }, { kind: "component", type: i8.KbqScrollbar, selector: "kbq-scrollbar, [kbq-scrollbar]", inputs: ["initializationTarget", "options", "events", "defer"], outputs: ["onInitialize", "onUpdate", "onDestroy", "onScroll"], exportAs: ["kbqScrollbar"] }, { kind: "ngmodule", type: KbqOptionModule }, { kind: "component", type: i9.KbqOptgroup, selector: "kbq-optgroup", inputs: ["label", "disabled"], exportAs: ["kbqOptgroup"] }, { kind: "component", type: KbqAppSwitcherDropdownApp, selector: "[kbq-app-switcher-dropdown-app]", inputs: ["kbq-app-switcher-dropdown-app"], exportAs: ["kbqAppSwitcherDropdownApp"] }, { kind: "component", type: KbqAppSwitcherDropdownSite, selector: "[kbq-app-switcher-dropdown-site]", inputs: ["kbq-app-switcher-dropdown-site"], exportAs: ["kbqAppSwitcherDropdownSite"] }, { kind: "component", type: KbqAppSwitcherListItem, selector: "[kbq-app-switcher-list-item]", inputs: ["app", "toggle", "collapsed"], exportAs: ["kbqAppSwitcherApp"] }], animations: [kbqAppSwitcherAnimations.state], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
146
147
  }
147
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAppSwitcherComponent, decorators: [{
148
149
  type: Component,
@@ -164,7 +165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
164
165
  KbqAppSwitcherDropdownSite,
165
166
  KbqAppSwitcherListItem,
166
167
  JsonPipe
167
- ], animations: [kbqAppSwitcherAnimations.state], template: "@if (trigger.withSearch) {\n <div class=\"kbq-app-switcher__search-container\" (mouseenter)=\"otherSites?.close()\">\n <kbq-form-field noBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (keydown.escape)=\"escapeHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n </div>\n\n <kbq-divider />\n}\n\n<div kbq-scrollbar>\n @if (!searchControl.getRawValue()) {\n <div class=\"kbq-app-switcher__app-container\" (mouseenter)=\"otherSites?.close()\">\n @if (trigger.sitesMode) {\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ trigger.selectedSite?.name }}</div>\n @if (trigger.selectedSite?.status) {\n <kbq-badge class=\"kbq-app-switcher-group-header__badge\" [compact]=\"true\">\n {{ trigger.selectedSite.status }}\n </kbq-badge>\n }\n </div>\n }\n\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (app of trigger.currentApps; track app) {\n @if (!app.aliases) {\n <a\n kbq-app-switcher-list-item\n href=\"{{ app.link }}\"\n [class.kbq-selected]=\"app.id === trigger.selectedApp?.id\"\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></a>\n } @else {\n <div\n #appSwitcherApp=\"kbqAppSwitcherApp\"\n kbq-app-switcher-list-item\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></div>\n\n @if (!appSwitcherApp.collapsed) {\n @for (alias of app.aliases; track alias) {\n <a\n class=\"kbq-app-switcher-site_nested\"\n kbq-app-switcher-list-item\n href=\"{{ alias.link }}\"\n [class.kbq-selected]=\"alias.id === trigger.selectedApp?.id\"\n [app]=\"alias\"\n ></a>\n }\n }\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n @if (trigger.sitesMode) {\n <kbq-divider />\n\n <div class=\"kbq-app-switcher__sites-container\">\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ localeData.sitesHeader }}</div>\n </div>\n\n <kbq-dropdown #otherSites=\"kbqDropdown\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-sites\">\n @for (site of trigger.sites; track site) {\n @if (site.id !== trigger.selectedSite?.id) {\n <div\n [kbq-app-switcher-dropdown-site]=\"site\"\n [kbqDropdownTriggerFor]=\"dropdownWithSelectedSite\"\n [offsetX]=\"0\"\n (mouseenter)=\"activeSite = site\"\n ></div>\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n <kbq-dropdown #dropdownWithSelectedSite=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (app of activeSite?.apps; track app) {\n @if (app.aliases) {\n <div\n #dropdownWithGroupedAppsTrigger=\"kbqDropdownTrigger\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n [kbqDropdownTriggerFor]=\"dropdownWithGroupedApps\"\n [offsetX]=\"0\"\n [class.kbq-pressed]=\"dropdownWithGroupedAppsTrigger.opened\"\n (mouseenter)=\"activeApp = app\"\n ></div>\n } @else {\n <a\n href=\"{{ app.link }}\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n (click)=\"selectAppInSite(activeSite, app)\"\n ></a>\n }\n }\n </kbq-dropdown>\n\n <kbq-dropdown #dropdownWithGroupedApps=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (alias of activeApp?.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n [kbq-app-switcher-dropdown-app]=\"alias\"\n (click)=\"selectAppInSite(activeSite, alias)\"\n ></a>\n }\n </kbq-dropdown>\n }\n } @else {\n <div class=\"kbq-app-switcher__search-result\">\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (site of filteredSites; track site) {\n @if (site.apps) {\n <kbq-optgroup label=\"{{ site.name }}\" />\n }\n\n @for (app of site.apps; track app) {\n <a kbq-app-switcher-list-item href=\"{{ app.link }}\" [app]=\"app\"></a>\n }\n } @empty {\n <div class=\"kbq-app-switcher__empty-search-result\">{{ localeData.searchEmptyResult }}</div>\n }\n </div>\n </kbq-dropdown>\n </div>\n }\n</div>\n", styles: [".kbq-app-switcher{position:relative;display:flex;flex-direction:column;margin-top:var(--kbq-size-xxs);margin-bottom:var(--kbq-size-xxs);width:320px;border-radius:var(--kbq-size-xs);box-shadow:var(--kbq-shadow-popup);box-sizing:border-box;z-index:1}.kbq-app-switcher__search-container{padding-top:var(--kbq-size-xxs)}.kbq-app-switcher__search-result{max-width:320px;min-height:0;padding:var(--kbq-size-s) var(--kbq-size-xxs)}.kbq-app-switcher__empty-search-result{display:flex;justify-content:center;align-items:center;height:96px}.kbq-app-switcher__app-container{display:flex;flex-direction:column;min-height:0;padding:var(--kbq-size-s) var(--kbq-size-xxs)}.kbq-app-switcher-group-header{padding:var(--kbq-size-s) var(--kbq-size-m);display:flex;flex-direction:row;justify-content:space-between}.kbq-app-switcher__sites-container{padding:var(--kbq-size-xxs)}.kbq-app-switcher{background:var(--kbq-background-card)}.kbq-app-switcher .kbq-app-switcher-group-header,.kbq-app-switcher__empty-search-result{color:var(--kbq-foreground-contrast-secondary)}.kbq-app-switcher,.kbq-app-switcher__empty-search-result{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-app-switcher-group-header__text{font-size:var(--kbq-typography-caps-compact-strong-font-size);font-style:var(--kbq-typography-caps-compact-strong-font-style);font-weight:var(--kbq-typography-caps-compact-strong-font-weight);line-height:var(--kbq-typography-caps-compact-strong-line-height);font-family:var(--kbq-typography-caps-compact-strong-font-family);text-transform:var(--kbq-typography-caps-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-caps-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-caps-compact-strong-letter-spacing)}.kbq-app-switcher-group-header__badge{font-size:var(--kbq-typography-text-compact-medium-font-size);font-style:var(--kbq-typography-text-compact-medium-font-style);font-weight:var(--kbq-typography-text-compact-medium-font-weight);line-height:var(--kbq-typography-text-compact-medium-line-height);font-family:var(--kbq-typography-text-compact-medium-font-family);text-transform:var(--kbq-typography-text-compact-medium-text-transform);font-feature-settings:var(--kbq-typography-text-compact-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-medium-letter-spacing)}.kbq-app-switch-tree-option__text{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}\n"] }]
168
+ ], animations: [kbqAppSwitcherAnimations.state], template: "@if (trigger.withSearch) {\n <div class=\"kbq-app-switcher__search-container\" (mouseenter)=\"otherSites?.close()\">\n <kbq-form-field noBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (keydown.escape)=\"escapeHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n </div>\n\n <kbq-divider />\n}\n\n<div kbq-scrollbar>\n @if (!searchControl.getRawValue()) {\n <div class=\"kbq-app-switcher__app-container\" (mouseenter)=\"otherSites?.close()\">\n @if (trigger.sitesMode) {\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ trigger.selectedSite?.name }}</div>\n @if (trigger.selectedSite?.status) {\n <kbq-badge class=\"kbq-app-switcher-group-header__badge\" [compact]=\"true\">\n {{ trigger.selectedSite.status }}\n </kbq-badge>\n }\n </div>\n }\n\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (app of trigger.currentApps; track app) {\n @if (!app.aliases) {\n <a\n kbq-app-switcher-list-item\n href=\"{{ app.link }}\"\n [class.kbq-selected]=\"app.id === trigger.selectedApp?.id\"\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></a>\n } @else {\n <div\n #appSwitcherApp=\"kbqAppSwitcherApp\"\n kbq-app-switcher-list-item\n [app]=\"app\"\n [toggle]=\"!!app.aliases\"\n ></div>\n\n @if (!appSwitcherApp.collapsed) {\n @for (alias of app.aliases; track alias) {\n <a\n class=\"kbq-app-switcher-site_nested\"\n kbq-app-switcher-list-item\n href=\"{{ alias.link }}\"\n [class.kbq-selected]=\"alias.id === trigger.selectedApp?.id\"\n [app]=\"alias\"\n ></a>\n }\n }\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n @if (trigger.sitesMode) {\n <kbq-divider />\n\n <div class=\"kbq-app-switcher__sites-container\">\n <div class=\"kbq-app-switcher-group-header\">\n <div class=\"kbq-app-switcher-group-header__text\">{{ localeData.sitesHeader }}</div>\n </div>\n\n <kbq-dropdown #otherSites=\"kbqDropdown\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-sites\">\n @for (site of trigger.sites; track site) {\n @if (site.id !== trigger.selectedSite?.id) {\n <div\n [kbq-app-switcher-dropdown-site]=\"site\"\n [kbqDropdownTriggerFor]=\"dropdownWithSelectedSite\"\n [offsetX]=\"0\"\n (mouseenter)=\"activeSite = site\"\n ></div>\n }\n }\n </div>\n </kbq-dropdown>\n </div>\n\n <kbq-dropdown #dropdownWithSelectedSite=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (app of activeSite?.apps; track app) {\n @if (app.aliases) {\n <div\n #dropdownWithGroupedAppsTrigger=\"kbqDropdownTrigger\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n [kbqDropdownTriggerFor]=\"dropdownWithGroupedApps\"\n [offsetX]=\"0\"\n [class.kbq-pressed]=\"dropdownWithGroupedAppsTrigger.opened\"\n (mouseenter)=\"activeApp = app\"\n ></div>\n } @else {\n <a\n href=\"{{ app.link }}\"\n [kbq-app-switcher-dropdown-app]=\"app\"\n (click)=\"selectAppInSite(activeSite, app)\"\n ></a>\n }\n }\n </kbq-dropdown>\n\n <kbq-dropdown #dropdownWithGroupedApps=\"kbqDropdown\" [class]=\"'kbq-app-switcher-sites'\">\n @for (alias of activeApp?.aliases; track alias) {\n <a\n href=\"{{ alias.link }}\"\n [kbq-app-switcher-dropdown-app]=\"alias\"\n (click)=\"selectAppInSite(activeSite, alias)\"\n ></a>\n }\n </kbq-dropdown>\n }\n } @else {\n <div class=\"kbq-app-switcher__search-result\">\n <kbq-dropdown [class]=\"'kbq-app-switcher-sites'\">\n <div kbqDropdownStaticContent class=\"kbq-app-switcher-site\">\n @for (site of filteredSites; track site) {\n @if (trigger.sitesMode && site.apps) {\n <kbq-optgroup label=\"{{ site.name }}\" />\n }\n\n @for (app of site.apps; track app) {\n <a kbq-app-switcher-list-item href=\"{{ app.link }}\" [app]=\"app\"></a>\n }\n } @empty {\n <div class=\"kbq-app-switcher__empty-search-result\">{{ localeData.searchEmptyResult }}</div>\n }\n </div>\n </kbq-dropdown>\n </div>\n }\n</div>\n", styles: [".kbq-app-switcher{position:relative;display:flex;flex-direction:column;margin-top:var(--kbq-size-xxs);margin-bottom:var(--kbq-size-xxs);width:320px;border-radius:var(--kbq-size-xs);box-shadow:var(--kbq-shadow-popup);box-sizing:border-box;z-index:1}.kbq-app-switcher__search-container{padding-top:var(--kbq-size-xxs)}.kbq-app-switcher__search-result{max-width:320px;min-height:0;padding:var(--kbq-size-s) var(--kbq-size-xxs)}.kbq-app-switcher__empty-search-result{display:flex;justify-content:center;align-items:center;height:96px}.kbq-app-switcher__app-container{display:flex;flex-direction:column;min-height:0;padding:var(--kbq-size-s) var(--kbq-size-xxs)}.kbq-app-switcher-group-header{padding:var(--kbq-size-s) var(--kbq-size-m);display:flex;flex-direction:row;justify-content:space-between}.kbq-app-switcher__sites-container{padding:var(--kbq-size-xxs)}.kbq-app-switcher{background:var(--kbq-background-card)}.kbq-app-switcher .kbq-app-switcher-group-header,.kbq-app-switcher__empty-search-result{color:var(--kbq-foreground-contrast-secondary)}.kbq-app-switcher,.kbq-app-switcher__empty-search-result{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-app-switcher-group-header__text{font-size:var(--kbq-typography-caps-compact-strong-font-size);font-style:var(--kbq-typography-caps-compact-strong-font-style);font-weight:var(--kbq-typography-caps-compact-strong-font-weight);line-height:var(--kbq-typography-caps-compact-strong-line-height);font-family:var(--kbq-typography-caps-compact-strong-font-family);text-transform:var(--kbq-typography-caps-compact-strong-text-transform);font-feature-settings:var(--kbq-typography-caps-compact-strong-font-feature-settings);letter-spacing:var(--kbq-typography-caps-compact-strong-letter-spacing)}.kbq-app-switcher-group-header__badge{font-size:var(--kbq-typography-text-compact-medium-font-size);font-style:var(--kbq-typography-text-compact-medium-font-style);font-weight:var(--kbq-typography-text-compact-medium-font-weight);line-height:var(--kbq-typography-text-compact-medium-line-height);font-family:var(--kbq-typography-text-compact-medium-font-family);text-transform:var(--kbq-typography-text-compact-medium-text-transform);font-feature-settings:var(--kbq-typography-text-compact-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-medium-letter-spacing)}.kbq-app-switch-tree-option__text{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}\n"] }]
168
169
  }], ctorParameters: () => [], propDecorators: { input: [{
169
170
  type: ViewChild,
170
171
  args: [KbqInput]
@@ -223,18 +224,14 @@ export class KbqAppSwitcherTrigger extends KbqPopUpTrigger {
223
224
  /** Number of applications to choose from
224
225
  * @docs-private */
225
226
  get appsCount() {
226
- if (this.sitesMode) {
227
- return this.originalSites.reduce((acc, site) => acc + site.apps.length, 0);
228
- }
229
- return this.originalApps.length;
227
+ return this.originalSites.reduce((acc, site) => acc + site.apps.length, 0);
230
228
  }
231
229
  /** Whether the sites are used or not
232
230
  * @docs-private */
233
231
  get sitesMode() {
234
- return this.originalSites?.length > 0;
232
+ return this.originalSites.length > 1;
235
233
  }
236
- /** Whether the sites are used or not
237
- * @docs-private */
234
+ /** @docs-private */
238
235
  get currentApps() {
239
236
  return this.sitesMode ? this.selectedSite.apps : this._parsedApps;
240
237
  }
@@ -244,14 +241,21 @@ export class KbqAppSwitcherTrigger extends KbqPopUpTrigger {
244
241
  }
245
242
  set sites(value) {
246
243
  this.originalSites = value;
247
- this._parsedSites = [];
248
- value.forEach((site) => {
249
- const newSite = { ...site, apps: [] };
250
- newSite.apps = this.makeGroupsForApps(site.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);
251
- this._parsedSites.push(newSite);
252
- });
244
+ if (this.originalSites.length === 1) {
245
+ this._parsedApps = this.makeGroupsForApps(this.originalSites[0].apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);
246
+ }
247
+ else {
248
+ this._parsedSites = [];
249
+ value.forEach((site) => {
250
+ const newSite = { ...site, apps: [] };
251
+ newSite.apps = this.makeGroupsForApps(site.apps, KBQ_MIN_NUMBER_OF_APPS_TO_ENABLE_GROUPING);
252
+ this._parsedSites.push(newSite);
253
+ });
254
+ }
253
255
  }
254
- /** Array of applications */
256
+ /**
257
+ * @deprecated Will be removed in next major release, use `sites` with one element instead.
258
+ */
255
259
  get apps() {
256
260
  return this._parsedApps;
257
261
  }
@@ -443,4 +447,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
443
447
  }], selectedAppChange: [{
444
448
  type: Output
445
449
  }] } });
446
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9hcHAtc3dpdGNoZXIvYXBwLXN3aXRjaGVyLnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9hcHAtc3dpdGNoZXIvYXBwLXN3aXRjaGVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUdILE9BQU8sRUFHVixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUdILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixjQUFjLEVBQ2QsS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sZUFBZSxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixRQUFRLEVBQ1IsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsY0FBYyxFQUNqQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxN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ckIscUJBQXFCLDRNQThEVixlQUFlLHNIQWlHZixnQkFBZ0I7OzRGQS9KM0IscUJBQXFCO2tCQVhqQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixJQUFJLEVBQUU7d0JBQ0YsK0JBQStCLEVBQUUsUUFBUTt3QkFDekMsb0JBQW9CLEVBQUUsMkJBQTJCO3dCQUNqRCxXQUFXLEVBQUUsd0JBQXdCO3dCQUNyQyxZQUFZLEVBQUUsbUJBQW1CO3FCQUNwQztpQkFDSjs4QkFzRFksV0FBVztzQkFBbkIsS0FBSztnQkFHNEIsU0FBUztzQkFBMUMsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBR3ZCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR2lDLE1BQU07c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUlqQyxLQUFLO3NCQURSLEtBQUs7Z0JBdUJGLElBQUk7c0JBRFAsS0FBSztnQkFzQ0YsT0FBTztzQkFEVixLQUFLO2dCQW1CRixZQUFZO3NCQURmLEtBQUs7Z0JBa0JGLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFtQkMsZUFBZTtzQkFBckQsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBR1MsYUFBYTtzQkFBakQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBR1Asa0JBQWtCO3NCQUFwQyxNQUFNO2dCQUVZLGlCQUFpQjtzQkFBbkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENka1Njcm9sbGFibGUsXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheUNvbmZpZyxcbiAgICBTY3JvbGxTdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBpbmplY3QsXG4gICAgbnVtYmVyQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgS2JxQmFkZ2VNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHtcbiAgICBLQlFfTE9DQUxFX1NFUlZJQ0UsXG4gICAgS2JxT3B0aW9uTW9kdWxlLFxuICAgIEticVBvcFVwLFxuICAgIEticVBvcFVwVHJpZ2dlcixcbiAgICBQT1NJVElPTl9UT19DU1NfTUFQLFxuICAgIFBvcFVwUGxhY2VtZW50cyxcbiAgICBQb3BVcFNpemVzLFxuICAgIFBvcFVwVHJpZ2dlcnMsXG4gICAgYXBwbHlQb3B1cE1hcmdpbnMsXG4gICAgcnVSVUxvY2FsZURhdGFcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxRGl2aWRlck1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kaXZpZGVyJztcbmltcG9ydCB7IEticURyb3Bkb3duTW9kdWxlLCBLYnFEcm9wZG93blRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgS2JxRm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgS2JxSWNvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IEticUlucHV0LCBLYnFJbnB1dE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pbnB1dCc7XG5pbXBvcnQgeyBkZWZhdWx0T2Zmc2V0WVdpdGhBcnJvdyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IEticVNjcm9sbGJhck1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9zY3JvbGxiYXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsga2JxQXBwU3dpdGNoZXJBbmltYXRpb25zIH0gZnJvbSAnLi9hcHAtc3dpdGNoZXItYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBLYnFBcHBTd2l0Y2hlckRyb3Bkb3duQXBwIH0gZnJvbSAnLi9hcHAtc3dpdGNoZXItZHJvcGRvd24tYXBwJztcbmltcG9ydCB7IEticUFwcFN3aXRjaGVyRHJvcGRvd25TaXRlIH0gZnJvbSAnLi9hcHAtc3dpdGNoZXItZHJvcGRvd24tc2l0ZSc7XG5pbXBvcnQgeyBLYnFBcHBTd2l0Y2hlckxpc3RJdGVtIH0gZnJvbSAnLi9rYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2JxQXBwU3dpdGNoZXJBcHAge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHR5cGU/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIGNhcHRpb24/OiBzdHJpbmc7XG4gICAgYWxpYXNlcz86IEticUFwcFN3aXRjaGVyQXBwW107XG4gICAgbGluaz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYnFBcHBTd2l0Y2hlclNpdGUge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHN0YXR1cz86IHN0cmluZztcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIGFwcHM6IEticUFwcFN3aXRjaGVyQXBwW107XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEdyb3VwQnkoXG4gICAgYXBwOiBLYnFBcHBTd2l0Y2hlckFwcCxcbiAgICBncm91cHM6IFJlY29yZDxzdHJpbmcsIEticUFwcFN3aXRjaGVyQXBwPixcbiAgICB1bnR5cGVkOiBLYnFBcHBTd2l0Y2hlckFwcFtdXG4pIHtcbiAgICBpZiAoIWFwcC50eXBlKSB7XG4gICAgICAgIHVudHlwZWQucHVzaChhcHApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFwcFR5cGUgPSBhcHAudHlwZS50b1N0cmluZygpO1xuXG4gICAgICAgIGlmIChncm91cHNbYXBwVHlwZV0pIHtcbiAgICAgICAgICAgIGdyb3Vwc1thcHBUeXBlXS5hbGlhc2VzIS5wdXNoKGFwcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBncm91cHNbYXBwVHlwZV0gPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogYXBwVHlwZSxcbiAgICAgICAgICAgICAgICBhbGlhc2VzOiBbYXBwXSxcbiAgICAgICAgICAgICAgICBpY29uOiBhcHAuaWNvbixcbiAgICAgICAgICAgICAgICBpZDogJydcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBLQlFfTUlOX05VTUJFUl9PRl9BUFBTX1RPX0VOQUJMRV9TRUFSQ0g6IG51bWJlciA9IDc7XG5leHBvcnQgY29uc3QgS0JRX01JTl9OVU1CRVJfT0ZfQVBQU19UT19FTkFCTEVfR1JPVVBJTkc6IG51bWJlciA9IDM7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgS0JRX0FQUF9TV0lUQ0hFUl9TQ1JPTExfU1RSQVRFR1kgPSBuZXcgSW5qZWN0aW9uVG9rZW48KCkgPT4gU2Nyb2xsU3RyYXRlZ3k+KFxuICAgICdrYnEtYXBwLXN3aXRjaGVyLXNjcm9sbC1zdHJhdGVneSdcbik7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZnVuY3Rpb24ga2JxQXBwU3dpdGNoZXJTY3JvbGxTdHJhdGVneUZhY3Rvcnkob3ZlcmxheTogT3ZlcmxheSk6ICgpID0+IFNjcm9sbFN0cmF0ZWd5IHtcbiAgICByZXR1cm4gKCkgPT4gb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oeyBzY3JvbGxUaHJvdHRsZTogMjAgfSk7XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgS0JRX0FQUF9TV0lUQ0hFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBLQlFfQVBQX1NXSVRDSEVSX1NDUk9MTF9TVFJBVEVHWSxcbiAgICBkZXBzOiBbT3ZlcmxheV0sXG4gICAgdXNlRmFjdG9yeToga2JxQXBwU3dpdGNoZXJTY3JvbGxTdHJhdGVneUZhY3Rvcnlcbn07XG5cbi8qKiBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb2YgYXBwLXN3aXRjaGVyICovXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IEtCUV9BUFBfU1dJVENIRVJfREVGQVVMVF9DT05GSUdVUkFUSU9OID0gcnVSVUxvY2FsZURhdGEuYXBwU3dpdGNoZXI7XG5cbi8qKiBJbmplY3Rpb24gVG9rZW4gZm9yIHByb3ZpZGluZyBjb25maWd1cmF0aW9uIG9mIGFwcC1zd2l0Y2hlciAqL1xuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBLQlFfQVBQX1NXSVRDSEVSX0NPTkZJR1VSQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0ticUFwcFN3aXRjaGVyQ29uZmlndXJhdGlvbicpO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1hcHAtc3dpdGNoZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHAtc3dpdGNoZXIuaHRtbCcsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXBwLXN3aXRjaGVyLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWFwcC1zd2l0Y2hlcidcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBLYnFGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIEticUlucHV0TW9kdWxlLFxuICAgICAgICBLYnFJY29uTW9kdWxlLFxuICAgICAgICBLYnFEaXZpZGVyTW9kdWxlLFxuICAgICAgICBLYnFCYWRnZU1vZHVsZSxcbiAgICAgICAgS2JxRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIEticVNjcm9sbGJhck1vZHVsZSxcbiAgICAgICAgS2JxT3B0aW9uTW9kdWxlLFxuICAgICAgICBLYnFBcHBTd2l0Y2hlckRyb3Bkb3duQXBwLFxuICAgICAgICBLYnFBcHBTd2l0Y2hlckRyb3Bkb3duU2l0ZSxcbiAgICAgICAgS2JxQXBwU3dpdGNoZXJMaXN0SXRlbSxcbiAgICAgICAgSnNvblBpcGVcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFtrYnFBcHBTd2l0Y2hlckFuaW1hdGlvbnMuc3RhdGVdXG59KVxuZXhwb3J0IGNsYXNzIEticUFwcFN3aXRjaGVyQ29tcG9uZW50IGV4dGVuZHMgS2JxUG9wVXAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIHJlYWRvbmx5IGV4dGVybmFsQ29uZmlndXJhdGlvbiA9IGluamVjdChLQlFfQVBQX1NXSVRDSEVSX0NPTkZJR1VSQVRJT04sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBjb25maWd1cmF0aW9uO1xuXG4gICAgLyoqIGxvY2FsaXplZCBkYXRhXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBsb2NhbGVEYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVhZG9ubHkgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGZpbHRlcmVkU2l0ZXM6IEticUFwcFN3aXRjaGVyU2l0ZVtdO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcmVmaXggPSAna2JxLWFwcC1zd2l0Y2hlcic7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHRyaWdnZXI6IEticUFwcFN3aXRjaGVyVHJpZ2dlcjtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgaXNUcmFwRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIGFjdGl2ZVNpdGU6IEticUFwcFN3aXRjaGVyU2l0ZTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBhY3RpdmVBcHA6IEticUFwcFN3aXRjaGVyQXBwO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAVmlld0NoaWxkKEticUlucHV0KSBpbnB1dDogS2JxSW5wdXQ7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAVmlld0NoaWxkKCdvdGhlclNpdGVzJykgb3RoZXJTaXRlczogS2JxRHJvcGRvd25UcmlnZ2VyO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZUxvY2FsZVBhcmFtcyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmxvY2FsZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5vZmZzZXQgIT09IG51bGwgJiYgc3RhdGUpIHtcbiAgICAgICAgICAgICAgICBhcHBseVBvcHVwTWFyZ2lucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlZml4LFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLm9mZnNldCEudG9TdHJpbmcoKX1weGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLmZpbHRlcmVkU2l0ZXMgPSB0aGlzLmZpbHRlclNpdGVzKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgdXBkYXRlQ2xhc3NNYXAocGxhY2VtZW50OiBzdHJpbmcsIGN1c3RvbUNsYXNzOiBzdHJpbmcsIHNpemU6IFBvcFVwU2l6ZXMpIHtcbiAgICAgICAgc3VwZXIudXBkYXRlQ2xhc3NNYXAocGxhY2VtZW50LCBjdXN0b21DbGFzcywgeyBbYCR7dGhpcy5wcmVmaXh9XyR7c2l6ZX1gXTogISFzaXplIH0pO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgdXBkYXRlVHJhcEZvY3VzKGlzVHJhcEZvY3VzOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNUcmFwRm9jdXMgPSBpc1RyYXBGb2N1cztcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGVzY2FwZUhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuaGlkZSgwKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHNlbGVjdEFwcEluU2l0ZShzaXRlOiBLYnFBcHBTd2l0Y2hlclNpdGUsIGFwcDogS2JxQXBwU3dpdGNoZXJBcHApIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyLnNlbGVjdGVkU2l0ZSA9IHNpdGU7XG4gICAgICAgIHRoaXMudHJpZ2dlci5zZWxlY3RlZEFwcCA9IGFwcDtcblxuICAgICAgICB0aGlzLnRyaWdnZXIuc2VsZWN0ZWRTaXRlQ2hhbmdlLmVtaXQoc2l0ZSk7XG4gICAgICAgIHRoaXMudHJpZ2dlci5zZWxlY3RlZEFwcENoYW5nZS5lbWl0KGFwcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJTaXRlcyhxdWVyeTogc3RyaW5nIHwgbnVsbCk6IEticUFwcFN3aXRjaGVyU2l0ZVtdIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRTaXRlcyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnRyaWdnZXIub3JpZ2luYWxTaXRlcyk7XG5cbiAgICAgICAgcmV0dXJuIHF1ZXJ5XG4gICAgICAgICAgICA/IGZpbHRlcmVkU2l0ZXMuZmlsdGVyKChzaXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEFwcHMgPSBzaXRlLmFwcHMuZmlsdGVyKChhcHApID0+IGFwcC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSkpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRBcHBzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgIHNpdGUuYXBwcyA9IGZpbHRlcmVkQXBwcztcblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IGZpbHRlcmVkU2l0ZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVQYXJhbXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuZXh0ZXJuYWxDb25maWd1cmF0aW9uIHx8IHRoaXMubG9jYWxlU2VydmljZT8uZ2V0UGFyYW1zKCdhcHBTd2l0Y2hlcicpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IEtCUV9BUFBfU1dJVENIRVJfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1trYnFBcHBTd2l0Y2hlcl0nLFxuICAgIGV4cG9ydEFzOiAna2JxQXBwU3dpdGNoZXInLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5rYnEtYXBwLXN3aXRjaGVyX29wZW5dJzogJ2lzT3BlbicsXG4gICAgICAgICdbY2xhc3Mua2JxLWFjdGl2ZV0nOiAnaGFzQ2xpY2tUcmlnZ2VyICYmIGlzT3BlbicsXG4gICAgICAgICcoa2V5ZG93biknOiAna2V5ZG93bkhhbmRsZXIoJGV2ZW50KScsXG4gICAgICAgICcodG91Y2hlbmQpJzogJ3RvdWNoZW5kSGFuZGxlcigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxQXBwU3dpdGNoZXJUcmlnZ2VyXG4gICAgZXh0ZW5kcyBLYnFQb3BVcFRyaWdnZXI8S2JxQXBwU3dpdGNoZXJDb21wb25lbnQ+XG4gICAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXRcbntcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBzY3JvbGxTdHJhdGVneTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3kgPSBpbmplY3QoS0JRX0FQUF9TV0lUQ0hFUl9TQ1JPTExfU1RSQVRFR1kpO1xuXG4gICAgLy8gbm90IHVzZWRcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGFycm93OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBjdXN0b21DbGFzczogc3RyaW5nO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJpdmF0ZSBoYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJpdmF0ZSBzaXplOiBQb3BVcFNpemVzID0gUG9wVXBTaXplcy5NZWRpdW07XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgaGVhZGVyOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZm9vdGVyOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJpdmF0ZSBjbG9zZU9uU2Nyb2xsOiBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgc2VhcmNoIGlzIHVzZWQgb3Igbm90ICovXG4gICAgZ2V0IHdpdGhTZWFyY2goKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcHNDb3VudCA+IEtCUV9NSU5fTlVNQkVSX09GX0FQUFNfVE9fRU5BQkxFX1NFQVJDSDtcbiAgICB9XG5cbiAgICAvKiogTnVtYmVyIG9mIGFwcGxpY2F0aW9ucyB0byBjaG9vc2UgZnJvbVxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgYXBwc0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnNpdGVzTW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxTaXRlcy5yZWR1Y2UoKGFjYywgc2l0ZSkgPT4gYWNjICsgc2l0ZS5hcHBzLmxlbmd0aCwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbEFwcHMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzaXRlcyBhcmUgdXNlZCBvciBub3RcbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgZ2V0IHNpdGVzTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxTaXRlcz8ubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2l0ZXMgYXJlIHVzZWQgb3Igbm90XG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBjdXJyZW50QXBwcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l0ZXNNb2RlID8gdGhpcy5zZWxlY3RlZFNpdGUuYXBwcyA6IHRoaXMuX3BhcnNlZEFwcHM7XG4gICAgfVxuXG4gICAgLyoqIFNlbGVjdGVkIGFwcGxpY2F0aW9uICovXG4gICAgQElucHV0KCkgc2VsZWN0ZWRBcHA6IEticUFwcFN3aXRjaGVyQXBwO1xuXG4gICAgLyoqIFBsYWNlbWVudCBvZiBwb3BVcCAqL1xuICAgIEBJbnB1dCgna2JxQXBwU3dpdGNoZXJQbGFjZW1lbnQnKSBwbGFjZW1lbnQ6IFBvcFVwUGxhY2VtZW50cyA9IFBvcFVwUGxhY2VtZW50cy5Cb3R0b21MZWZ0O1xuXG4gICAgLyoqIENsYXNzIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBiYWNrZ3JvdW5kICovXG4gICAgQElucHV0KCkgYmFja2Ryb3BDbGFzczogc3RyaW5nID0gJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJztcblxuICAgIC8qKiBPZmZzZXQgb2YgcG9wVXAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBvZmZzZXQ6IG51bWJlciB8IG51bGwgPSBkZWZhdWx0T2Zmc2V0WVdpdGhBcnJvdztcblxuICAgIC8qKiBBcnJheSBvZiBzaXRlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNpdGVzKCk6IEticUFwcFN3aXRjaGVyU2l0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlZFNpdGVzO1xuICAgIH1cblxuICAgIHNldCBzaXRlcyh2YWx1ZTogS2JxQXBwU3dpdGNoZXJTaXRlW10pIHtcbiAgICAgICAgdGhpcy5vcmlnaW5hbFNpdGVzID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fcGFyc2VkU2l0ZXMgPSBbXTtcblxuICAgICAgICB2YWx1ZS5mb3JFYWNoKChzaXRlOiBLYnFBcHBTd2l0Y2hlclNpdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NpdGU6IEticUFwcFN3aXRjaGVyU2l0ZSA9IHsgLi4uc2l0ZSwgYXBwczogW10gfTtcblxuICAgICAgICAgICAgbmV3U2l0ZS5hcHBzID0gdGhpcy5tYWtlR3JvdXBzRm9yQXBwcyhzaXRlLmFwcHMsIEtCUV9NSU5fTlVNQkVSX09GX0FQUFNfVE9fRU5BQkxFX0dST1VQSU5HKTtcblxuICAgICAgICAgICAgdGhpcy5fcGFyc2VkU2l0ZXMucHVzaChuZXdTaXRlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VkU2l0ZXM6IEticUFwcFN3aXRjaGVyU2l0ZVtdO1xuXG4gICAgLyoqIEFycmF5IG9mIGFwcGxpY2F0aW9ucyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFwcHMoKTogS2JxQXBwU3dpdGNoZXJBcHBbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJzZWRBcHBzO1xuICAgIH1cblxuICAgIHNldCBhcHBzKGFwcHM6IEticUFwcFN3aXRjaGVyQXBwW10pIHtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEFwcHMgPSBhcHBzO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlZEFwcHMgPSB0aGlzLm1ha2VHcm91cHNGb3JBcHBzKHRoaXMub3JpZ2luYWxBcHBzLCBLQlFfTUlOX05VTUJFUl9PRl9BUFBTX1RPX0VOQUJMRV9HUk9VUElORyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWtlR3JvdXBzRm9yQXBwcyhhcHBzOiBLYnFBcHBTd2l0Y2hlckFwcFtdLCBtaW5BcHBzRm9yR3JvdXBpbmc6IG51bWJlcik6IEticUFwcFN3aXRjaGVyQXBwW10ge1xuICAgICAgICBjb25zdCBncm91cHM6IFJlY29yZDxzdHJpbmcsIEticUFwcFN3aXRjaGVyQXBwPiA9IHt9O1xuICAgICAgICBjb25zdCB1bnR5cGVkOiBLYnFBcHBTd2l0Y2hlckFwcFtdID0gW107XG4gICAgICAgIGNvbnN0IGdyb3VwZWRBcHBzOiBLYnFBcHBTd2l0Y2hlckFwcFtdID0gW107XG5cbiAgICAgICAgYXBwcy5mb3JFYWNoKChhcHApID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBCeShhcHAsIGdyb3VwcywgdW50eXBlZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC52YWx1ZXMoZ3JvdXBzKS5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgaWYgKGdyb3VwLmFsaWFzZXMgJiYgZ3JvdXAuYWxpYXNlcy5sZW5ndGggPiBtaW5BcHBzRm9yR3JvdXBpbmcpIHtcbiAgICAgICAgICAgICAgICBncm91cGVkQXBwcy5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdW50eXBlZC5wdXNoKC4uLmdyb3VwLmFsaWFzZXMhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ3JvdXBlZEFwcHMucHVzaCguLi51bnR5cGVkKTtcblxuICAgICAgICByZXR1cm4gZ3JvdXBlZEFwcHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VkQXBwczogS2JxQXBwU3dpdGNoZXJBcHBbXTtcblxuICAgIC8qKiBGdW5jdGlvbiB0byBncm91cCB0aGUgYXBwcyBieSB0eXBlLiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gYXBwIG9iamVjdCB3aXRoIHR5cGUuXG4gICAgICogVGhlIHNlY29uZCBpcyBhIGdyb3VwcyBvYmplY3QgYW5kIHRoaXJkIGlzIGFuIGFycmF5IGZvciB1bnR5cGVkIGFwcHMgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBncm91cEJ5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBCeTtcbiAgICB9XG5cbiAgICBzZXQgZ3JvdXBCeShcbiAgICAgICAgZm46IChhcHA6IEticUFwcFN3aXRjaGVyQXBwLCBncm91cHM6IFJlY29yZDxzdHJpbmcsIEticUFwcFN3aXRjaGVyQXBwPiwgdW50eXBlZDogS2JxQXBwU3dpdGNoZXJBcHBbXSkgPT4gdm9pZFxuICAgICkge1xuICAgICAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2dyb3VwQnkgPSBmbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9ncm91cEJ5ID0gZGVmYXVsdEdyb3VwQnk7XG5cbiAgICAvKiogU2VsZWN0ZWQgc2l0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNlbGVjdGVkU2l0ZSgpOiBLYnFBcHBTd2l0Y2hlclNpdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VkU2VsZWN0ZWRTaXRlO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3RlZFNpdGUodmFsdWU6IEticUFwcFN3aXRjaGVyU2l0ZSkge1xuICAgICAgICBjb25zdCBvcmlnaW5WYWx1ZSA9IHRoaXMub3JpZ2luYWxTaXRlcy5maW5kKChzaXRlKSA9PiB2YWx1ZS5pZCA9PT0gc2l0ZS5pZCkgYXMgS2JxQXBwU3dpdGNoZXJTaXRlO1xuICAgICAgICBjb25zdCBuZXdTaXRlOiBLYnFBcHBTd2l0Y2hlclNpdGUgPSB7IC4uLm9yaWdpblZhbHVlLCBhcHBzOiBbXSB9O1xuXG4gICAgICAgIG5ld1NpdGUuYXBwcyA9IHRoaXMubWFrZUdyb3Vwc0ZvckFwcHMob3JpZ2luVmFsdWUuYXBwcywgS0JRX01JTl9OVU1CRVJfT0ZfQVBQU19UT19FTkFCTEVfR1JPVVBJTkcpO1xuXG4gICAgICAgIHRoaXMuX3BhcnNlZFNlbGVjdGVkU2l0ZSA9IG5ld1NpdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcGFyc2VkU2VsZWN0ZWRTaXRlOiBLYnFBcHBTd2l0Y2hlclNpdGU7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdHJpZ2dlciBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBoYXNDbGlja1RyaWdnZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5DbGljayk7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRzIGEgY2hhbmdlIGV2ZW50IHdoZW5ldmVyIHRoZSBwbGFjZW1lbnQgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KCdrYnFQbGFjZW1lbnRDaGFuZ2UnKSByZWFkb25seSBwbGFjZW1lbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogRW1pdHMgYSBjaGFuZ2UgZXZlbnQgd2hlbmV2ZXIgdGhlIHZpc2libGUgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KCdrYnFWaXNpYmxlQ2hhbmdlJykgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkU2l0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxQXBwU3dpdGNoZXJTaXRlPigpO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkQXBwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFBcHBTd2l0Y2hlckFwcD4oKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgdHJpZ2dlcjogc3RyaW5nID0gYCR7UG9wVXBUcmlnZ2Vycy5DbGlja30sICR7UG9wVXBUcmlnZ2Vycy5LZXlkb3dufWA7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9yaWdpbmFsU2l0ZXM6IEticUFwcFN3aXRjaGVyU2l0ZVtdO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb3JpZ2luYWxBcHBzOiBLYnFBcHBTd2l0Y2hlckFwcFtdO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgb3JpZ2luU2VsZWN0b3IgPSAnLmticS1hcHAtc3dpdGNoZXInO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IG92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYW5lbENsYXNzOiAna2JxLWFwcC1zd2l0Y2hlcl9fcGFuZWwnLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuaGFzQmFja2Ryb3AsXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiB0aGlzLmJhY2tkcm9wQ2xhc3NcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBwcmV2ZW50Q2xvc2luZ0J5SW5uZXJTY3JvbGxTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZVxuICAgICAgICAgICAgPy5lbGVtZW50U2Nyb2xsZWQoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuaGlkZUlmTm90SW5WaWV3UG9ydCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jbG9zZU9uU2Nyb2xsID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXIuc2Nyb2xsZWQoKS5zdWJzY3JpYmUoKHNjcm9sbGFibGU6IENka1Njcm9sbGFibGUgfCB2b2lkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzY3JvbGxhYmxlPy5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2ticS1oaWRlLW5lc3RlZC1wb3B1cCcpKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0cyA9IHNjcm9sbGFibGUuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRSZWN0cyA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkUmVjdHMuYm90dG9tIDwgcGFyZW50UmVjdHMudG9wIHx8IGNoaWxkUmVjdHMudG9wID4gcGFyZW50UmVjdHMuYm90dG9tKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgodmlzaWJsZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1uZXN0ZWQtc3Vic2NyaWJlXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50Q2xvc2luZ0J5SW5uZXJTY3JvbGxTdWJzY3JpcHRpb24gPSB0aGlzLmNsb3NpbmdBY3Rpb25zKCkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRbJ3Njcm9sbERpc3BhdGNoZXInXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRbJ2ticVBvcG92ZXJQcmV2ZW50SGlkZSddID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Wyd0eXBlJ10gPSAnY2xpY2snO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmVudENsb3NpbmdCeUlubmVyU2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHVwZGF0ZURhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuaGVhZGVyID0gdGhpcy5oZWFkZXI7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuY29udGVudCA9IHRoaXMuY29udGVudDtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5hcnJvdyA9IHRoaXMuYXJyb3c7XG4gICAgICAgIHRoaXMuaW5zdGFuY2Uub2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZm9vdGVyID0gdGhpcy5mb290ZXI7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS51cGRhdGVUcmFwRm9jdXModGhpcy50cmlnZ2VyICE9PSBQb3BVcFRyaWdnZXJzLkZvY3VzKTtcblxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24odHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVXBkYXRlcyB0aGUgY3VycmVudCBwb3NpdGlvbi5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgdXBkYXRlUG9zaXRpb24ocmVhcHBseVBvc2l0aW9uOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSAodGhpcy5vdmVybGF5UmVmLmdldENvbmZpZygpLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXRBZGp1c3RlZFBvc2l0aW9ucygpKVxuICAgICAgICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgICAgIGlmIChyZWFwcGx5UG9zaXRpb24pIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcG9zaXRpb24ucmVhcHBseUxhc3RQb3NpdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZ2V0T3ZlcmxheUhhbmRsZUNvbXBvbmVudFR5cGUoKTogVHlwZTxLYnFBcHBTd2l0Y2hlckNvbXBvbmVudD4ge1xuICAgICAgICByZXR1cm4gS2JxQXBwU3dpdGNoZXJDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB1cGRhdGVDbGFzc01hcChuZXdQbGFjZW1lbnQ6IHN0cmluZyA9IHRoaXMucGxhY2VtZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UudXBkYXRlQ2xhc3NNYXAoUE9TSVRJT05fVE9fQ1NTX01BUFtuZXdQbGFjZW1lbnRdLCB0aGlzLmN1c3RvbUNsYXNzLCB0aGlzLnNpemUpO1xuICAgICAgICB0aGlzLmluc3RhbmNlLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgY2xvc2luZ0FjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiBtZXJnZShcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZiEub3V0c2lkZVBvaW50ZXJFdmVudHMoKSxcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZiEuYmFja2Ryb3BDbGljaygpLFxuICAgICAgICAgICAgdGhpcy5zY3JvbGxEaXNwYXRjaGVyLnNjcm9sbGVkKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVJZk5vdEluVmlld1BvcnQgPSAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zY3JvbGxhYmxlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gdGhpcy5zY3JvbGxhYmxlLmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgcmVjdC5ib3R0b20gPj0gY29udGFpbmVyUmVjdC50b3AgJiZcbiAgICAgICAgICAgICAgICByZWN0LnJpZ2h0ID49IGNvbnRhaW5lclJlY3QubGVmdCAmJlxuICAgICAgICAgICAgICAgIHJlY3QudG9wIDw9IGNvbnRhaW5lclJlY3QuYm90dG9tICYmXG4gICAgICAgICAgICAgICAgcmVjdC5sZWZ0IDw9IGNvbnRhaW5lclJlY3QucmlnaHRcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG4iLCJAaWYgKHRyaWdnZXIud2l0aFNlYXJjaCkge1xuICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyX19zZWFyY2gtY29udGFpbmVyXCIgKG1vdXNlZW50ZXIpPVwib3RoZXJTaXRlcz8uY2xvc2UoKVwiPlxuICAgICAgICA8a2JxLWZvcm0tZmllbGQgbm9Cb3JkZXJzPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtbWFnbmlmeWluZy1nbGFzc18xNlwiIGticVByZWZpeD48L2k+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIGticUlucHV0XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBsb2NhbGVEYXRhLnNlYXJjaFBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImVzY2FwZUhhbmRsZXIoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGticS1jbGVhbmVyIC8+XG4gICAgICAgIDwva2JxLWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8a2JxLWRpdmlkZXIgLz5cbn1cblxuPGRpdiBrYnEtc2Nyb2xsYmFyPlxuICAgIEBpZiAoIXNlYXJjaENvbnRyb2wuZ2V0UmF3VmFsdWUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlcl9fYXBwLWNvbnRhaW5lclwiIChtb3VzZWVudGVyKT1cIm90aGVyU2l0ZXM/LmNsb3NlKClcIj5cbiAgICAgICAgICAgIEBpZiAodHJpZ2dlci5zaXRlc01vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1ncm91cC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXItZ3JvdXAtaGVhZGVyX190ZXh0XCI+e3sgdHJpZ2dlci5zZWxlY3RlZFNpdGU/Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0cmlnZ2VyLnNlbGVjdGVkU2l0ZT8uc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8a2JxLWJhZGdlIGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1ncm91cC1oZWFkZXJfX2JhZGdlXCIgW2NvbXBhY3RdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyaWdnZXIuc2VsZWN0ZWRTaXRlLnN0YXR1cyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9rYnEtYmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGticS1kcm9wZG93biBbY2xhc3NdPVwiJ2ticS1hcHAtc3dpdGNoZXItc2l0ZXMnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBrYnFEcm9wZG93blN0YXRpY0NvbnRlbnQgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLXNpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYXBwIG9mIHRyaWdnZXIuY3VycmVudEFwcHM7IHRyYWNrIGFwcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghYXBwLmFsaWFzZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwie3sgYXBwLmxpbmsgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mua2JxLXNlbGVjdGVkXT1cImFwcC5pZCA9PT0gdHJpZ2dlci5zZWxlY3RlZEFwcD8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwXT1cImFwcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b2dnbGVdPVwiISFhcHAuYWxpYXNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2FwcFN3aXRjaGVyQXBwPVwia2JxQXBwU3dpdGNoZXJBcHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwXT1cImFwcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b2dnbGVdPVwiISFhcHAuYWxpYXNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghYXBwU3dpdGNoZXJBcHAuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGFsaWFzIG9mIGFwcC5hbGlhc2VzOyB0cmFjayBhbGlhcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1hcHAtc3dpdGNoZXItc2l0ZV9uZXN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IGFsaWFzLmxpbmsgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5rYnEtc2VsZWN0ZWRdPVwiYWxpYXMuaWQgPT09IHRyaWdnZXIuc2VsZWN0ZWRBcHA/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwXT1cImFsaWFzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwva2JxLWRyb3Bkb3duPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHRyaWdnZXIuc2l0ZXNNb2RlKSB7XG4gICAgICAgICAgICA8a2JxLWRpdmlkZXIgLz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXJfX3NpdGVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWdyb3VwLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1ncm91cC1oZWFkZXJfX3RleHRcIj57eyBsb2NhbGVEYXRhLnNpdGVzSGVhZGVyIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8a2JxLWRyb3Bkb3duICNvdGhlclNpdGVzPVwia2JxRHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrYnFEcm9wZG93blN0YXRpY0NvbnRlbnQgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLXNpdGVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChzaXRlIG9mIHRyaWdnZXIuc2l0ZXM7IHRyYWNrIHNpdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNpdGUuaWQgIT09IHRyaWdnZXIuc2VsZWN0ZWRTaXRlPy5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2JxLWFwcC1zd2l0Y2hlci1kcm9wZG93bi1zaXRlXT1cInNpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ticURyb3Bkb3duVHJpZ2dlckZvcl09XCJkcm9wZG93bldpdGhTZWxlY3RlZFNpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29mZnNldFhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJhY3RpdmVTaXRlID0gc2l0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwva2JxLWRyb3Bkb3duPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxrYnEtZHJvcGRvd24gI2Ryb3Bkb3duV2l0aFNlbGVjdGVkU2l0ZT1cImticURyb3Bkb3duXCIgW2NsYXNzXT1cIidrYnEtYXBwLXN3aXRjaGVyLXNpdGVzJ1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGFwcCBvZiBhY3RpdmVTaXRlPy5hcHBzOyB0cmFjayBhcHApIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChhcHAuYWxpYXNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bldpdGhHcm91cGVkQXBwc1RyaWdnZXI9XCJrYnFEcm9wZG93blRyaWdnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrYnEtYXBwLXN3aXRjaGVyLWRyb3Bkb3duLWFwcF09XCJhcHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrYnFEcm9wZG93blRyaWdnZXJGb3JdPVwiZHJvcGRvd25XaXRoR3JvdXBlZEFwcHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvZmZzZXRYXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5rYnEtcHJlc3NlZF09XCJkcm9wZG93bldpdGhHcm91cGVkQXBwc1RyaWdnZXIub3BlbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJhY3RpdmVBcHAgPSBhcHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IGFwcC5saW5rIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2JxLWFwcC1zd2l0Y2hlci1kcm9wZG93bi1hcHBdPVwiYXBwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QXBwSW5TaXRlKGFjdGl2ZVNpdGUsIGFwcClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwva2JxLWRyb3Bkb3duPlxuXG4gICAgICAgICAgICA8a2JxLWRyb3Bkb3duICNkcm9wZG93bldpdGhHcm91cGVkQXBwcz1cImticURyb3Bkb3duXCIgW2NsYXNzXT1cIidrYnEtYXBwLXN3aXRjaGVyLXNpdGVzJ1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGFsaWFzIG9mIGFjdGl2ZUFwcD8uYWxpYXNlczsgdHJhY2sgYWxpYXMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJ7eyBhbGlhcy5saW5rIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtrYnEtYXBwLXN3aXRjaGVyLWRyb3Bkb3duLWFwcF09XCJhbGlhc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QXBwSW5TaXRlKGFjdGl2ZVNpdGUsIGFsaWFzKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9rYnEtZHJvcGRvd24+XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXJfX3NlYXJjaC1yZXN1bHRcIj5cbiAgICAgICAgICAgIDxrYnEtZHJvcGRvd24gW2NsYXNzXT1cIidrYnEtYXBwLXN3aXRjaGVyLXNpdGVzJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYga2JxRHJvcGRvd25TdGF0aWNDb250ZW50IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1zaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHNpdGUgb2YgZmlsdGVyZWRTaXRlczsgdHJhY2sgc2l0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaXRlLmFwcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2JxLW9wdGdyb3VwIGxhYmVsPVwie3sgc2l0ZS5uYW1lIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoYXBwIG9mIHNpdGUuYXBwczsgdHJhY2sgYXBwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEga2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW0gaHJlZj1cInt7IGFwcC5saW5rIH19XCIgW2FwcF09XCJhcHBcIj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gQGVtcHR5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyX19lbXB0eS1zZWFyY2gtcmVzdWx0XCI+e3sgbG9jYWxlRGF0YS5zZWFyY2hFbXB0eVJlc3VsdCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ticS1kcm9wZG93bj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG4iXX0=
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9hcHAtc3dpdGNoZXIvYXBwLXN3aXRjaGVyLnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9hcHAtc3dpdGNoZXIvYXBwLXN3aXRjaGVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUdILE9BQU8sRUFHVixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUdILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixjQUFjLEVBQ2QsS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sZUFBZSxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixRQUFRLEVBQ1IsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsY0FBYyxFQUNqQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxN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QUFJLENBQUMsVUFBVyxDQUFDLG9CQUFvQixFQUFFLEVBQ3ZDLElBQUksQ0FBQyxVQUFXLENBQUMsYUFBYSxFQUFFLEVBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FDbkMsQ0FBQztJQUNOLENBQUM7a0lBalRRLHFCQUFxQjtzSEFBckIscUJBQXFCLDRNQXlEVixlQUFlLHNIQTBHZixnQkFBZ0I7OzRGQW5LM0IscUJBQXFCO2tCQVhqQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixJQUFJLEVBQUU7d0JBQ0YsK0JBQStCLEVBQUUsUUFBUTt3QkFDekMsb0JBQW9CLEVBQUUsMkJBQTJCO3dCQUNqRCxXQUFXLEVBQUUsd0JBQXdCO3dCQUNyQyxZQUFZLEVBQUUsbUJBQW1CO3FCQUNwQztpQkFDSjs4QkFpRFksV0FBVztzQkFBbkIsS0FBSztnQkFHNEIsU0FBUztzQkFBMUMsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBR3ZCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR2lDLE1BQU07c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUlqQyxLQUFLO3NCQURSLEtBQUs7Z0JBZ0NGLElBQUk7c0JBRFAsS0FBSztnQkFzQ0YsT0FBTztzQkFEVixLQUFLO2dCQW1CRixZQUFZO3NCQURmLEtBQUs7Z0JBa0JGLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFtQkMsZUFBZTtzQkFBckQsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBR1MsYUFBYTtzQkFBakQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBR1Asa0JBQWtCO3NCQUFwQyxNQUFNO2dCQUVZLGlCQUFpQjtzQkFBbkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENka1Njcm9sbGFibGUsXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheUNvbmZpZyxcbiAgICBTY3JvbGxTdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBpbmplY3QsXG4gICAgbnVtYmVyQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgS2JxQmFkZ2VNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHtcbiAgICBLQlFfTE9DQUxFX1NFUlZJQ0UsXG4gICAgS2JxT3B0aW9uTW9kdWxlLFxuICAgIEticVBvcFVwLFxuICAgIEticVBvcFVwVHJpZ2dlcixcbiAgICBQT1NJVElPTl9UT19DU1NfTUFQLFxuICAgIFBvcFVwUGxhY2VtZW50cyxcbiAgICBQb3BVcFNpemVzLFxuICAgIFBvcFVwVHJpZ2dlcnMsXG4gICAgYXBwbHlQb3B1cE1hcmdpbnMsXG4gICAgcnVSVUxvY2FsZURhdGFcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxRGl2aWRlck1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kaXZpZGVyJztcbmltcG9ydCB7IEticURyb3Bkb3duTW9kdWxlLCBLYnFEcm9wZG93blRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgS2JxRm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgS2JxSWNvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IEticUlucHV0LCBLYnFJbnB1dE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pbnB1dCc7XG5pbXBvcnQgeyBkZWZhdWx0T2Zmc2V0WVdpdGhBcnJvdyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IEticVNjcm9sbGJhck1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9zY3JvbGxiYXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsga2JxQXBwU3dpdGNoZXJBbmltYXRpb25zIH0gZnJvbSAnLi9hcHAtc3dpdGNoZXItYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBLYnFBcHBTd2l0Y2hlckRyb3Bkb3duQXBwIH0gZnJvbSAnLi9hcHAtc3dpdGNoZXItZHJvcGRvd24tYXBwJztcbmltcG9ydCB7IEticUFwcFN3aXRjaGVyRHJvcGRvd25TaXRlIH0gZnJvbSAnLi9hcHAtc3dpdGNoZXItZHJvcGRvd24tc2l0ZSc7XG5pbXBvcnQgeyBLYnFBcHBTd2l0Y2hlckxpc3RJdGVtIH0gZnJvbSAnLi9rYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2JxQXBwU3dpdGNoZXJBcHAge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHR5cGU/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgLyoqIElubGluZSBTVkcgbWFya3VwIGZvciB0aGUgYXBwbGljYXRpb24gaWNvbi4gVXNlIHRoaXMgZm9yIFNWRyBpY29ucyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCBkaXJlY3RseSBpbiB0aGUgRE9NLiAqL1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgLyoqIFBhdGggdG8gdGhlIGljb24gZmlsZSAoVVJMIG9yIHJlbGF0aXZlIHBhdGgpLiAqL1xuICAgIGljb25TcmM/OiBzdHJpbmc7XG4gICAgY2FwdGlvbj86IHN0cmluZztcbiAgICBhbGlhc2VzPzogS2JxQXBwU3dpdGNoZXJBcHBbXTtcbiAgICBsaW5rPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEticUFwcFN3aXRjaGVyU2l0ZSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIC8qKiBJbmxpbmUgU1ZHIG1hcmt1cCBmb3IgdGhlIHNpdGUgaWNvbi4gVXNlIHRoaXMgZm9yIFNWRyBpY29ucyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCBkaXJlY3RseSBpbiB0aGUgRE9NLiAqL1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgLyoqIFBhdGggdG8gdGhlIGljb24gZmlsZSAoVVJMIG9yIHJlbGF0aXZlIHBhdGgpLiAqL1xuICAgIGljb25TcmM/OiBzdHJpbmc7XG4gICAgYXBwczogS2JxQXBwU3dpdGNoZXJBcHBbXTtcbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0R3JvdXBCeShcbiAgICBhcHA6IEticUFwcFN3aXRjaGVyQXBwLFxuICAgIGdyb3VwczogUmVjb3JkPHN0cmluZywgS2JxQXBwU3dpdGNoZXJBcHA+LFxuICAgIHVudHlwZWQ6IEticUFwcFN3aXRjaGVyQXBwW11cbikge1xuICAgIGlmICghYXBwLnR5cGUpIHtcbiAgICAgICAgdW50eXBlZC5wdXNoKGFwcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXBwVHlwZSA9IGFwcC50eXBlLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgaWYgKGdyb3Vwc1thcHBUeXBlXSkge1xuICAgICAgICAgICAgZ3JvdXBzW2FwcFR5cGVdLmFsaWFzZXMhLnB1c2goYXBwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdyb3Vwc1thcHBUeXBlXSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBhcHBUeXBlLFxuICAgICAgICAgICAgICAgIGFsaWFzZXM6IFthcHBdLFxuICAgICAgICAgICAgICAgIGljb246IGFwcC5pY29uLFxuICAgICAgICAgICAgICAgIGljb25TcmM6IGFwcC5pY29uU3JjLFxuICAgICAgICAgICAgICAgIGlkOiAnJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEtCUV9NSU5fTlVNQkVSX09GX0FQUFNfVE9fRU5BQkxFX1NFQVJDSDogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBLQlFfTUlOX05VTUJFUl9PRl9BUFBTX1RPX0VOQUJMRV9HUk9VUElORzogbnVtYmVyID0gMztcblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBLQlFfQVBQX1NXSVRDSEVSX1NDUk9MTF9TVFJBVEVHWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjwoKSA9PiBTY3JvbGxTdHJhdGVneT4oXG4gICAgJ2ticS1hcHAtc3dpdGNoZXItc2Nyb2xsLXN0cmF0ZWd5J1xuKTtcblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBrYnFBcHBTd2l0Y2hlclNjcm9sbFN0cmF0ZWd5RmFjdG9yeShvdmVybGF5OiBPdmVybGF5KTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3kge1xuICAgIHJldHVybiAoKSA9PiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbih7IHNjcm9sbFRocm90dGxlOiAyMCB9KTtcbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBLQlFfQVBQX1NXSVRDSEVSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSID0ge1xuICAgIHByb3ZpZGU6IEtCUV9BUFBfU1dJVENIRVJfU0NST0xMX1NUUkFURUdZLFxuICAgIGRlcHM6IFtPdmVybGF5XSxcbiAgICB1c2VGYWN0b3J5OiBrYnFBcHBTd2l0Y2hlclNjcm9sbFN0cmF0ZWd5RmFjdG9yeVxufTtcblxuLyoqIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvZiBhcHAtc3dpdGNoZXIgKi9cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgS0JRX0FQUF9TV0lUQ0hFUl9ERUZBVUxUX0NPTkZJR1VSQVRJT04gPSBydVJVTG9jYWxlRGF0YS5hcHBTd2l0Y2hlcjtcblxuLyoqIEluamVjdGlvbiBUb2tlbiBmb3IgcHJvdmlkaW5nIGNvbmZpZ3VyYXRpb24gb2YgYXBwLXN3aXRjaGVyICovXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IEtCUV9BUFBfU1dJVENIRVJfQ09ORklHVVJBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbignS2JxQXBwU3dpdGNoZXJDb25maWd1cmF0aW9uJyk7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWFwcC1zd2l0Y2hlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcC1zd2l0Y2hlci5odG1sJyxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBzdHlsZVVybHM6IFsnLi9hcHAtc3dpdGNoZXIuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtYXBwLXN3aXRjaGVyJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEticUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgS2JxSW5wdXRNb2R1bGUsXG4gICAgICAgIEticUljb25Nb2R1bGUsXG4gICAgICAgIEticURpdmlkZXJNb2R1bGUsXG4gICAgICAgIEticUJhZGdlTW9kdWxlLFxuICAgICAgICBLYnFEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgS2JxU2Nyb2xsYmFyTW9kdWxlLFxuICAgICAgICBLYnFPcHRpb25Nb2R1bGUsXG4gICAgICAgIEticUFwcFN3aXRjaGVyRHJvcGRvd25BcHAsXG4gICAgICAgIEticUFwcFN3aXRjaGVyRHJvcGRvd25TaXRlLFxuICAgICAgICBLYnFBcHBTd2l0Y2hlckxpc3RJdGVtLFxuICAgICAgICBKc29uUGlwZVxuICAgIF0sXG4gICAgYW5pbWF0aW9uczogW2ticUFwcFN3aXRjaGVyQW5pbWF0aW9ucy5zdGF0ZV1cbn0pXG5leHBvcnQgY2xhc3MgS2JxQXBwU3dpdGNoZXJDb21wb25lbnQgZXh0ZW5kcyBLYnFQb3BVcCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxDb25maWd1cmF0aW9uID0gaW5qZWN0KEtCUV9BUFBfU1dJVENIRVJfQ09ORklHVVJBVElPTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIGNvbmZpZ3VyYXRpb247XG5cbiAgICAvKiogbG9jYWxpemVkIGRhdGFcbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgZ2V0IGxvY2FsZURhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZmlsdGVyZWRTaXRlczogS2JxQXBwU3dpdGNoZXJTaXRlW107XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByZWZpeCA9ICdrYnEtYXBwLXN3aXRjaGVyJztcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgdHJpZ2dlcjogS2JxQXBwU3dpdGNoZXJUcmlnZ2VyO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBpc1RyYXBGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgYWN0aXZlU2l0ZTogS2JxQXBwU3dpdGNoZXJTaXRlO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIGFjdGl2ZUFwcDogS2JxQXBwU3dpdGNoZXJBcHA7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBWaWV3Q2hpbGQoS2JxSW5wdXQpIGlucHV0OiBLYnFJbnB1dDtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBWaWV3Q2hpbGQoJ290aGVyU2l0ZXMnKSBvdGhlclNpdGVzOiBLYnFEcm9wZG93blRyaWdnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlTG9jYWxlUGFyYW1zKTtcblxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9mZnNldCAhPT0gbnVsbCAmJiBzdGF0ZSkge1xuICAgICAgICAgICAgICAgIGFwcGx5UG9wdXBNYXJnaW5zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMub2Zmc2V0IS50b1N0cmluZygpfXB4YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gKHRoaXMuZmlsdGVyZWRTaXRlcyA9IHRoaXMuZmlsdGVyU2l0ZXModmFsdWUpKSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB1cGRhdGVDbGFzc01hcChwbGFjZW1lbnQ6IHN0cmluZywgY3VzdG9tQ2xhc3M6IHN0cmluZywgc2l6ZTogUG9wVXBTaXplcykge1xuICAgICAgICBzdXBlci51cGRhdGVDbGFzc01hcChwbGFjZW1lbnQsIGN1c3RvbUNsYXNzLCB7IFtgJHt0aGlzLnByZWZpeH1fJHtzaXplfWBdOiAhIXNpemUgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB1cGRhdGVUcmFwRm9jdXMoaXNUcmFwRm9jdXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1RyYXBGb2N1cyA9IGlzVHJhcEZvY3VzO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZXNjYXBlSGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5oaWRlKDApO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgc2VsZWN0QXBwSW5TaXRlKHNpdGU6IEticUFwcFN3aXRjaGVyU2l0ZSwgYXBwOiBLYnFBcHBTd2l0Y2hlckFwcCkge1xuICAgICAgICB0aGlzLnRyaWdnZXIuc2VsZWN0ZWRTaXRlID0gc2l0ZTtcbiAgICAgICAgdGhpcy50cmlnZ2VyLnNlbGVjdGVkQXBwID0gYXBwO1xuXG4gICAgICAgIHRoaXMudHJpZ2dlci5zZWxlY3RlZFNpdGVDaGFuZ2UuZW1pdChzaXRlKTtcbiAgICAgICAgdGhpcy50cmlnZ2VyLnNlbGVjdGVkQXBwQ2hhbmdlLmVtaXQoYXBwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlclNpdGVzKHF1ZXJ5OiBzdHJpbmcgfCBudWxsKTogS2JxQXBwU3dpdGNoZXJTaXRlW10ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFNpdGVzID0gc3RydWN0dXJlZENsb25lKHRoaXMudHJpZ2dlci5vcmlnaW5hbFNpdGVzKTtcblxuICAgICAgICByZXR1cm4gcXVlcnlcbiAgICAgICAgICAgID8gZmlsdGVyZWRTaXRlcy5maWx0ZXIoKHNpdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQXBwcyA9IHNpdGUuYXBwcy5maWx0ZXIoKGFwcCkgPT4gYXBwLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZEFwcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgc2l0ZS5hcHBzID0gZmlsdGVyZWRBcHBzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogZmlsdGVyZWRTaXRlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxvY2FsZVBhcmFtcyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gdGhpcy5leHRlcm5hbENvbmZpZ3VyYXRpb24gfHwgdGhpcy5sb2NhbGVTZXJ2aWNlPy5nZXRQYXJhbXMoJ2FwcFN3aXRjaGVyJyk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpbml0RGVmYXVsdFBhcmFtcygpIHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gS0JRX0FQUF9TV0lUQ0hFUl9ERUZBVUxUX0NPTkZJR1VSQVRJT047XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUFwcFN3aXRjaGVyXScsXG4gICAgZXhwb3J0QXM6ICdrYnFBcHBTd2l0Y2hlcicsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmticS1hcHAtc3dpdGNoZXJfb3Blbl0nOiAnaXNPcGVuJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYWN0aXZlXSc6ICdoYXNDbGlja1RyaWdnZXIgJiYgaXNPcGVuJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdrZXlkb3duSGFuZGxlcigkZXZlbnQpJyxcbiAgICAgICAgJyh0b3VjaGVuZCknOiAndG91Y2hlbmRIYW5kbGVyKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFBcHBTd2l0Y2hlclRyaWdnZXJcbiAgICBleHRlbmRzIEticVBvcFVwVHJpZ2dlcjxLYnFBcHBTd2l0Y2hlckNvbXBvbmVudD5cbiAgICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uSW5pdFxue1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHNjcm9sbFN0cmF0ZWd5OiAoKSA9PiBTY3JvbGxTdHJhdGVneSA9IGluamVjdChLQlFfQVBQX1NXSVRDSEVSX1NDUk9MTF9TVFJBVEVHWSk7XG5cbiAgICAvLyBub3QgdXNlZFxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgYXJyb3c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGN1c3RvbUNsYXNzOiBzdHJpbmc7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcml2YXRlIGhhc0JhY2tkcm9wOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcml2YXRlIHNpemU6IFBvcFVwU2l6ZXMgPSBQb3BVcFNpemVzLk1lZGl1bTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBoZWFkZXI6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBmb290ZXI6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcml2YXRlIGNsb3NlT25TY3JvbGw6IG51bGw7XG5cbiAgICAvKiogV2hldGhlciBzZWFyY2ggaXMgdXNlZCBvciBub3QgKi9cbiAgICBnZXQgd2l0aFNlYXJjaCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwc0NvdW50ID4gS0JRX01JTl9OVU1CRVJfT0ZfQVBQU19UT19FTkFCTEVfU0VBUkNIO1xuICAgIH1cblxuICAgIC8qKiBOdW1iZXIgb2YgYXBwbGljYXRpb25zIHRvIGNob29zZSBmcm9tXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGdldCBhcHBzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxTaXRlcy5yZWR1Y2UoKGFjYywgc2l0ZSkgPT4gYWNjICsgc2l0ZS5hcHBzLmxlbmd0aCwgMCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNpdGVzIGFyZSB1c2VkIG9yIG5vdFxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgc2l0ZXNNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbFNpdGVzLmxlbmd0aCA+IDE7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgY3VycmVudEFwcHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpdGVzTW9kZSA/IHRoaXMuc2VsZWN0ZWRTaXRlLmFwcHMgOiB0aGlzLl9wYXJzZWRBcHBzO1xuICAgIH1cblxuICAgIC8qKiBTZWxlY3RlZCBhcHBsaWNhdGlvbiAqL1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQXBwOiBLYnFBcHBTd2l0Y2hlckFwcDtcblxuICAgIC8qKiBQbGFjZW1lbnQgb2YgcG9wVXAgKi9cbiAgICBASW5wdXQoJ2ticUFwcFN3aXRjaGVyUGxhY2VtZW50JykgcGxhY2VtZW50OiBQb3BVcFBsYWNlbWVudHMgPSBQb3BVcFBsYWNlbWVudHMuQm90dG9tTGVmdDtcblxuICAgIC8qKiBDbGFzcyB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgYmFja2dyb3VuZCAqL1xuICAgIEBJbnB1dCgpIGJhY2tkcm9wQ2xhc3M6IHN0cmluZyA9ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCc7XG5cbiAgICAvKiogT2Zmc2V0IG9mIHBvcFVwICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgb2Zmc2V0OiBudW1iZXIgfCBudWxsID0gZGVmYXVsdE9mZnNldFlXaXRoQXJyb3c7XG5cbiAgICAvKiogQXJyYXkgb2Ygc2l0ZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBzaXRlcygpOiBLYnFBcHBTd2l0Y2hlclNpdGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJzZWRTaXRlcztcbiAgICB9XG5cbiAgICBzZXQgc2l0ZXModmFsdWU6IEticUFwcFN3aXRjaGVyU2l0ZVtdKSB7XG4gICAgICAgIHRoaXMub3JpZ2luYWxTaXRlcyA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLm9yaWdpbmFsU2l0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLl9wYXJzZWRBcHBzID0gdGhpcy5tYWtlR3JvdXBzRm9yQXBwcyhcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsU2l0ZXNbMF0uYXBwcyxcbiAgICAgICAgICAgICAgICBLQlFfTUlOX05VTUJFUl9PRl9BUFBTX1RPX0VOQUJMRV9HUk9VUElOR1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcnNlZFNpdGVzID0gW107XG5cbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHNpdGU6IEticUFwcFN3aXRjaGVyU2l0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NpdGU6IEticUFwcFN3aXRjaGVyU2l0ZSA9IHsgLi4uc2l0ZSwgYXBwczogW10gfTtcblxuICAgICAgICAgICAgICAgIG5ld1NpdGUuYXBwcyA9IHRoaXMubWFrZUdyb3Vwc0ZvckFwcHMoc2l0ZS5hcHBzLCBLQlFfTUlOX05VTUJFUl9PRl9BUFBTX1RPX0VOQUJMRV9HUk9VUElORyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZWRTaXRlcy5wdXNoKG5ld1NpdGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZWRTaXRlczogS2JxQXBwU3dpdGNoZXJTaXRlW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciByZWxlYXNlLCB1c2UgYHNpdGVzYCB3aXRoIG9uZSBlbGVtZW50IGluc3RlYWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgYXBwcygpOiBLYnFBcHBTd2l0Y2hlckFwcFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlZEFwcHM7XG4gICAgfVxuXG4gICAgc2V0IGFwcHMoYXBwczogS2JxQXBwU3dpdGNoZXJBcHBbXSkge1xuICAgICAgICB0aGlzLm9yaWdpbmFsQXBwcyA9IGFwcHM7XG5cbiAgICAgICAgdGhpcy5fcGFyc2VkQXBwcyA9IHRoaXMubWFrZUdyb3Vwc0ZvckFwcHModGhpcy5vcmlnaW5hbEFwcHMsIEtCUV9NSU5fTlVNQkVSX09GX0FQUFNfVE9fRU5BQkxFX0dST1VQSU5HKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VHcm91cHNGb3JBcHBzKGFwcHM6IEticUFwcFN3aXRjaGVyQXBwW10sIG1pbkFwcHNGb3JHcm91cGluZzogbnVtYmVyKTogS2JxQXBwU3dpdGNoZXJBcHBbXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwczogUmVjb3JkPHN0cmluZywgS2JxQXBwU3dpdGNoZXJBcHA+ID0ge307XG4gICAgICAgIGNvbnN0IHVudHlwZWQ6IEticUFwcFN3aXRjaGVyQXBwW10gPSBbXTtcbiAgICAgICAgY29uc3QgZ3JvdXBlZEFwcHM6IEticUFwcFN3aXRjaGVyQXBwW10gPSBbXTtcblxuICAgICAgICBhcHBzLmZvckVhY2goKGFwcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ncm91cEJ5KGFwcCwgZ3JvdXBzLCB1bnR5cGVkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LnZhbHVlcyhncm91cHMpLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZ3JvdXAuYWxpYXNlcyAmJiBncm91cC5hbGlhc2VzLmxlbmd0aCA+IG1pbkFwcHNGb3JHcm91cGluZykge1xuICAgICAgICAgICAgICAgIGdyb3VwZWRBcHBzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1bnR5cGVkLnB1c2goLi4uZ3JvdXAuYWxpYXNlcyEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBncm91cGVkQXBwcy5wdXNoKC4uLnVudHlwZWQpO1xuXG4gICAgICAgIHJldHVybiBncm91cGVkQXBwcztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZWRBcHBzOiBLYnFBcHBTd2l0Y2hlckFwcFtdO1xuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdyb3VwIHRoZSBhcHBzIGJ5IHR5cGUuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBhcHAgb2JqZWN0IHdpdGggdHlwZS5cbiAgICAgKiBUaGUgc2Vjb25kIGlzIGEgZ3JvdXBzIG9iamVjdCBhbmQgdGhpcmQgaXMgYW4gYXJyYXkgZm9yIHVudHlwZWQgYXBwcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGdyb3VwQnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cEJ5O1xuICAgIH1cblxuICAgIHNldCBncm91cEJ5KFxuICAgICAgICBmbjogKGFwcDogS2JxQXBwU3dpdGNoZXJBcHAsIGdyb3VwczogUmVjb3JkPHN0cmluZywgS2JxQXBwU3dpdGNoZXJBcHA+LCB1bnR5cGVkOiBLYnFBcHBTd2l0Y2hlckFwcFtdKSA9PiB2b2lkXG4gICAgKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZ3JvdXBCeSA9IGZuO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dyb3VwQnkgPSBkZWZhdWx0R3JvdXBCeTtcblxuICAgIC8qKiBTZWxlY3RlZCBzaXRlICovXG4gICAgQElucHV0KClcbiAgICBnZXQgc2VsZWN0ZWRTaXRlKCk6IEticUFwcFN3aXRjaGVyU2l0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJzZWRTZWxlY3RlZFNpdGU7XG4gICAgfVxuXG4gICAgc2V0IHNlbGVjdGVkU2l0ZSh2YWx1ZTogS2JxQXBwU3dpdGNoZXJTaXRlKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpblZhbHVlID0gdGhpcy5vcmlnaW5hbFNpdGVzLmZpbmQoKHNpdGUpID0+IHZhbHVlLmlkID09PSBzaXRlLmlkKSBhcyBLYnFBcHBTd2l0Y2hlclNpdGU7XG4gICAgICAgIGNvbnN0IG5ld1NpdGU6IEticUFwcFN3aXRjaGVyU2l0ZSA9IHsgLi4ub3JpZ2luVmFsdWUsIGFwcHM6IFtdIH07XG5cbiAgICAgICAgbmV3U2l0ZS5hcHBzID0gdGhpcy5tYWtlR3JvdXBzRm9yQXBwcyhvcmlnaW5WYWx1ZS5hcHBzLCBLQlFfTUlOX05VTUJFUl9PRl9BUFBTX1RPX0VOQUJMRV9HUk9VUElORyk7XG5cbiAgICAgICAgdGhpcy5fcGFyc2VkU2VsZWN0ZWRTaXRlID0gbmV3U2l0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJzZWRTZWxlY3RlZFNpdGU6IEticUFwcFN3aXRjaGVyU2l0ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0cmlnZ2VyIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZ2V0IGhhc0NsaWNrVHJpZ2dlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkNsaWNrKTtcbiAgICB9XG5cbiAgICAvKiogRW1pdHMgYSBjaGFuZ2UgZXZlbnQgd2hlbmV2ZXIgdGhlIHBsYWNlbWVudCBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoJ2ticVBsYWNlbWVudENoYW5nZScpIHJlYWRvbmx5IHBsYWNlbWVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBFbWl0cyBhIGNoYW5nZSBldmVudCB3aGVuZXZlciB0aGUgdmlzaWJsZSBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoJ2ticVZpc2libGVDaGFuZ2UnKSByZWFkb25seSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRTaXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFBcHBTd2l0Y2hlclNpdGU+KCk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRBcHBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEticUFwcFN3aXRjaGVyQXBwPigpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB0cmlnZ2VyOiBzdHJpbmcgPSBgJHtQb3BVcFRyaWdnZXJzLkNsaWNrfSwgJHtQb3BVcFRyaWdnZXJzLktleWRvd259YDtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb3JpZ2luYWxTaXRlczogS2JxQXBwU3dpdGNoZXJTaXRlW107XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvcmlnaW5hbEFwcHM6IEticUFwcFN3aXRjaGVyQXBwW107XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBvcmlnaW5TZWxlY3RvciA9ICcua2JxLWFwcC1zd2l0Y2hlcic7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBnZXQgb3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdrYnEtYXBwLXN3aXRjaGVyX19wYW5lbCcsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5oYXNCYWNrZHJvcCxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IHRoaXMuYmFja2Ryb3BDbGFzc1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHByZXZlbnRDbG9zaW5nQnlJbm5lclNjcm9sbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgdGhpcy5zY3JvbGxhYmxlXG4gICAgICAgICAgICA/LmVsZW1lbnRTY3JvbGxlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5oaWRlSWZOb3RJblZpZXdQb3J0KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25TY3JvbGwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5zY3JvbGxlZCgpLnN1YnNjcmliZSgoc2Nyb2xsYWJsZTogQ2RrU2Nyb2xsYWJsZSB8IHZvaWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXNjcm9sbGFibGU/LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygna2JxLWhpZGUtbmVzdGVkLXBvcHVwJykpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFJlY3RzID0gc2Nyb2xsYWJsZS5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFJlY3RzID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRSZWN0cy5ib3R0b20gPCBwYXJlbnRSZWN0cy50b3AgfHwgY2hpbGRSZWN0cy50b3AgPiBwYXJlbnRSZWN0cy5ib3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh2aXNpYmxlOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzL25vLW5lc3RlZC1zdWJzY3JpYmVcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRDbG9zaW5nQnlJbm5lclNjcm9sbFN1YnNjcmlwdGlvbiA9IHRoaXMuY2xvc2luZ0FjdGlvbnMoKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudFsnc2Nyb2xsRGlzcGF0Y2hlciddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFsna2JxUG9wb3ZlclByZXZlbnRIaWRlJ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRbJ3R5cGUnXSA9ICdjbGljayc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50Q2xvc2luZ0J5SW5uZXJTY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgdXBkYXRlRGF0YSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5oZWFkZXIgPSB0aGlzLmhlYWRlcjtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5jb250ZW50ID0gdGhpcy5jb250ZW50O1xuICAgICAgICB0aGlzLmluc3RhbmNlLmFycm93ID0gdGhpcy5hcnJvdztcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5mb290ZXIgPSB0aGlzLmZvb3RlcjtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnVwZGF0ZVRyYXBGb2N1cyh0aGlzLnRyaWdnZXIgIT09IFBvcFVwVHJpZ2dlcnMuRm9jdXMpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbih0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBVcGRhdGVzIHRoZSBjdXJyZW50IHBvc2l0aW9uLlxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB1cGRhdGVQb3NpdGlvbihyZWFwcGx5UG9zaXRpb246IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9ICh0aGlzLm92ZXJsYXlSZWYuZ2V0Q29uZmlnKCkucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyh0aGlzLmdldEFkanVzdGVkUG9zaXRpb25zKCkpXG4gICAgICAgICAgICAud2l0aFB1c2godHJ1ZSk7XG5cbiAgICAgICAgaWYgKHJlYXBwbHlQb3NpdGlvbikge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBwb3NpdGlvbi5yZWFwcGx5TGFzdFBvc2l0aW9uKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXRPdmVybGF5SGFuZGxlQ29tcG9uZW50VHlwZSgpOiBUeXBlPEticUFwcFN3aXRjaGVyQ29tcG9uZW50PiB7XG4gICAgICAgIHJldHVybiBLYnFBcHBTd2l0Y2hlckNvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHVwZGF0ZUNsYXNzTWFwKG5ld1BsYWNlbWVudDogc3RyaW5nID0gdGhpcy5wbGFjZW1lbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS51cGRhdGVDbGFzc01hcChQT1NJVElPTl9UT19DU1NfTUFQW25ld1BsYWNlbWVudF0sIHRoaXMuY3VzdG9tQ2xhc3MsIHRoaXMuc2l6ZSk7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBjbG9zaW5nQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmIS5vdXRzaWRlUG9pbnRlckV2ZW50cygpLFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmIS5iYWNrZHJvcENsaWNrKCksXG4gICAgICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXIuc2Nyb2xsZWQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZUlmTm90SW5WaWV3UG9ydCA9ICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbGFibGUpIHJldHVybjtcblxuICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSB0aGlzLnNjcm9sbGFibGUuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICByZWN0LmJvdHRvbSA+PSBjb250YWluZXJSZWN0LnRvcCAmJlxuICAgICAgICAgICAgICAgIHJlY3QucmlnaHQgPj0gY29udGFpbmVyUmVjdC5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgcmVjdC50b3AgPD0gY29udGFpbmVyUmVjdC5ib3R0b20gJiZcbiAgICAgICAgICAgICAgICByZWN0LmxlZnQgPD0gY29udGFpbmVyUmVjdC5yaWdodFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsIkBpZiAodHJpZ2dlci53aXRoU2VhcmNoKSB7XG4gICAgPGRpdiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXJfX3NlYXJjaC1jb250YWluZXJcIiAobW91c2VlbnRlcik9XCJvdGhlclNpdGVzPy5jbG9zZSgpXCI+XG4gICAgICAgIDxrYnEtZm9ybS1maWVsZCBub0JvcmRlcnM+XG4gICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1tYWduaWZ5aW5nLWdsYXNzXzE2XCIga2JxUHJlZml4PjwvaT5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAga2JxSW5wdXRcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGxvY2FsZURhdGEuc2VhcmNoUGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiZXNjYXBlSGFuZGxlcigpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8a2JxLWNsZWFuZXIgLz5cbiAgICAgICAgPC9rYnEtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuICAgIDxrYnEtZGl2aWRlciAvPlxufVxuXG48ZGl2IGticS1zY3JvbGxiYXI+XG4gICAgQGlmICghc2VhcmNoQ29udHJvbC5nZXRSYXdWYWx1ZSgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyX19hcHAtY29udGFpbmVyXCIgKG1vdXNlZW50ZXIpPVwib3RoZXJTaXRlcz8uY2xvc2UoKVwiPlxuICAgICAgICAgICAgQGlmICh0cmlnZ2VyLnNpdGVzTW9kZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWdyb3VwLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1ncm91cC1oZWFkZXJfX3RleHRcIj57eyB0cmlnZ2VyLnNlbGVjdGVkU2l0ZT8ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRyaWdnZXIuc2VsZWN0ZWRTaXRlPy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtYmFkZ2UgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWdyb3VwLWhlYWRlcl9fYmFkZ2VcIiBbY29tcGFjdF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHJpZ2dlci5zZWxlY3RlZFNpdGUuc3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ticS1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8a2JxLWRyb3Bkb3duIFtjbGFzc109XCIna2JxLWFwcC1zd2l0Y2hlci1zaXRlcydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGticURyb3Bkb3duU3RhdGljQ29udGVudCBjbGFzcz1cImticS1hcHAtc3dpdGNoZXItc2l0ZVwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChhcHAgb2YgdHJpZ2dlci5jdXJyZW50QXBwczsgdHJhY2sgYXBwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhcHAuYWxpYXNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJ7eyBhcHAubGluayB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5rYnEtc2VsZWN0ZWRdPVwiYXBwLmlkID09PSB0cmlnZ2VyLnNlbGVjdGVkQXBwPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBdPVwiYXBwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvZ2dsZV09XCIhIWFwcC5hbGlhc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXBwU3dpdGNoZXJBcHA9XCJrYnFBcHBTd2l0Y2hlckFwcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBdPVwiYXBwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvZ2dsZV09XCIhIWFwcC5hbGlhc2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhcHBTd2l0Y2hlckFwcC5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoYWxpYXMgb2YgYXBwLmFsaWFzZXM7IHRyYWNrIGFsaWFzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1zaXRlX25lc3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwie3sgYWxpYXMubGluayB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmticS1zZWxlY3RlZF09XCJhbGlhcy5pZCA9PT0gdHJpZ2dlci5zZWxlY3RlZEFwcD8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBdPVwiYWxpYXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9rYnEtZHJvcGRvd24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAodHJpZ2dlci5zaXRlc01vZGUpIHtcbiAgICAgICAgICAgIDxrYnEtZGl2aWRlciAvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlcl9fc2l0ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXItZ3JvdXAtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWdyb3VwLWhlYWRlcl9fdGV4dFwiPnt7IGxvY2FsZURhdGEuc2l0ZXNIZWFkZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxrYnEtZHJvcGRvd24gI290aGVyU2l0ZXM9XCJrYnFEcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGticURyb3Bkb3duU3RhdGljQ29udGVudCBjbGFzcz1cImticS1hcHAtc3dpdGNoZXItc2l0ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHNpdGUgb2YgdHJpZ2dlci5zaXRlczsgdHJhY2sgc2l0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2l0ZS5pZCAhPT0gdHJpZ2dlci5zZWxlY3RlZFNpdGU/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrYnEtYXBwLXN3aXRjaGVyLWRyb3Bkb3duLXNpdGVdPVwic2l0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2JxRHJvcGRvd25UcmlnZ2VyRm9yXT1cImRyb3Bkb3duV2l0aFNlbGVjdGVkU2l0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2Zmc2V0WF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImFjdGl2ZVNpdGUgPSBzaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9rYnEtZHJvcGRvd24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGticS1kcm9wZG93biAjZHJvcGRvd25XaXRoU2VsZWN0ZWRTaXRlPVwia2JxRHJvcGRvd25cIiBbY2xhc3NdPVwiJ2ticS1hcHAtc3dpdGNoZXItc2l0ZXMnXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYXBwIG9mIGFjdGl2ZVNpdGU/LmFwcHM7IHRyYWNrIGFwcCkge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGFwcC5hbGlhc2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duV2l0aEdyb3VwZWRBcHBzVHJpZ2dlcj1cImticURyb3Bkb3duVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ticS1hcHAtc3dpdGNoZXItZHJvcGRvd24tYXBwXT1cImFwcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ticURyb3Bkb3duVHJpZ2dlckZvcl09XCJkcm9wZG93bldpdGhHcm91cGVkQXBwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29mZnNldFhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmticS1wcmVzc2VkXT1cImRyb3Bkb3duV2l0aEdyb3VwZWRBcHBzVHJpZ2dlci5vcGVuZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImFjdGl2ZUFwcCA9IGFwcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwie3sgYXBwLmxpbmsgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrYnEtYXBwLXN3aXRjaGVyLWRyb3Bkb3duLWFwcF09XCJhcHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBcHBJblNpdGUoYWN0aXZlU2l0ZSwgYXBwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9rYnEtZHJvcGRvd24+XG5cbiAgICAgICAgICAgIDxrYnEtZHJvcGRvd24gI2Ryb3Bkb3duV2l0aEdyb3VwZWRBcHBzPVwia2JxRHJvcGRvd25cIiBbY2xhc3NdPVwiJ2ticS1hcHAtc3dpdGNoZXItc2l0ZXMnXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYWxpYXMgb2YgYWN0aXZlQXBwPy5hbGlhc2VzOyB0cmFjayBhbGlhcykge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IGFsaWFzLmxpbmsgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ticS1hcHAtc3dpdGNoZXItZHJvcGRvd24tYXBwXT1cImFsaWFzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBcHBJblNpdGUoYWN0aXZlU2l0ZSwgYWxpYXMpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2ticS1kcm9wZG93bj5cbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlcl9fc2VhcmNoLXJlc3VsdFwiPlxuICAgICAgICAgICAgPGticS1kcm9wZG93biBbY2xhc3NdPVwiJ2ticS1hcHAtc3dpdGNoZXItc2l0ZXMnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBrYnFEcm9wZG93blN0YXRpY0NvbnRlbnQgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLXNpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoc2l0ZSBvZiBmaWx0ZXJlZFNpdGVzOyB0cmFjayBzaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRyaWdnZXIuc2l0ZXNNb2RlICYmIHNpdGUuYXBwcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtb3B0Z3JvdXAgbGFiZWw9XCJ7eyBzaXRlLm5hbWUgfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChhcHAgb2Ygc2l0ZS5hcHBzOyB0cmFjayBhcHApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbSBocmVmPVwie3sgYXBwLmxpbmsgfX1cIiBbYXBwXT1cImFwcFwiPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBAZW1wdHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXJfX2VtcHR5LXNlYXJjaC1yZXN1bHRcIj57eyBsb2NhbGVEYXRhLnNlYXJjaEVtcHR5UmVzdWx0IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwva2JxLWRyb3Bkb3duPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
@@ -1,10 +1,11 @@
1
- import { NgTemplateOutlet } from '@angular/common';
1
+ import { NgOptimizedImage } from '@angular/common';
2
2
  import { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';
3
3
  import { DomSanitizer } from '@angular/platform-browser';
4
4
  import { KBQ_TITLE_TEXT_REF } from '@koobiq/components/core';
5
5
  import { KbqDropdownItem } from '@koobiq/components/dropdown';
6
- import { KbqIcon } from '@koobiq/components/icon';
6
+ import { KbqIconModule } from '@koobiq/components/icon';
7
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "@koobiq/components/icon";
8
9
  /** @docs-private */
9
10
  export class KbqAppSwitcherListItem extends KbqDropdownItem {
10
11
  constructor() {
@@ -28,7 +29,13 @@ export class KbqAppSwitcherListItem extends KbqDropdownItem {
28
29
  { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherListItem },
29
30
  { provide: KbqDropdownItem, useExisting: KbqAppSwitcherListItem }
30
31
  ], exportAs: ["kbqAppSwitcherApp"], usesInheritance: true, ngImport: i0, template: `
31
- <span class="kbq-app-switcher-list-item__icon" [innerHtml]="getIcon(app.icon)"></span>
32
+ @if (app.icon) {
33
+ <span class="kbq-app-switcher-list-item__icon" [innerHtml]="getIcon(app.icon)"></span>
34
+ } @else if (app.iconSrc) {
35
+ <span class="kbq-app-switcher-list-item__icon">
36
+ <img width="24" height="24" alt="{{ app.type }}" [ngSrc]="app.iconSrc" />
37
+ </span>
38
+ }
32
39
 
33
40
  <div class="kbq-app-switcher-list-item__container">
34
41
  <div class="kbq-app-switcher-list-item__name">{{ app.name }}</div>
@@ -42,12 +49,21 @@ export class KbqAppSwitcherListItem extends KbqDropdownItem {
42
49
  <i kbq-icon="kbq-chevron-down-s_16" [color]="'contrast-fade'"></i>
43
50
  </div>
44
51
  }
45
- `, isInline: true, styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-app-switcher-list-item{position:relative;display:flex;flex-direction:row;max-width:100%;min-height:38px;border-radius:var(--kbq-size-s);padding:var(--kbq-size-xxs) var(--kbq-size-m) var(--kbq-size-xs) var(--kbq-size-m);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent;cursor:pointer}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested{margin-left:var(--kbq-size-xxl);border-top-left-radius:unset;border-bottom-left-radius:unset}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:after{content:\"\";position:absolute;left:-1px;top:0;height:100%;border-left-width:1px;border-left-style:solid}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:has(+:not(.kbq-app-switcher-site_nested)),.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:last-child{border-bottom-left-radius:var(--kbq-size-s)}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:has(+:not(.kbq-app-switcher-site_nested)):after,.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:last-child:after{top:0;width:var(--kbq-size-m);height:var(--kbq-size-xxl);border-bottom-left-radius:var(--kbq-size-s);border-bottom-width:1px;border-bottom-style:solid}.kbq-app-switcher-list-item__toggle{position:absolute;display:none;align-items:center;justify-content:center;top:var(--kbq-size-m);left:var(--kbq-size-m);width:var(--kbq-size-xxl);height:var(--kbq-size-xxl);border-radius:var(--kbq-size-xxs)}.kbq-app-switcher-list-item__toggle .kbq-icon{transform:rotate(0)}.kbq-app-switcher-list-item__toggle.kbq-expanded .kbq-icon{transform:rotate(180deg)}.kbq-app-switcher-list-item__icon{padding-top:var(--kbq-size-s);padding-right:var(--kbq-size-m)}.kbq-app-switcher-list-item__container{max-width:100%;min-width:0;align-self:center}.kbq-app-switcher-list-item__container .kbq-app-switcher-list-item__name,.kbq-app-switcher-list-item__container .kbq-app-switcher-list-item__caption{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-app-switcher-site_nested:after{border-left-color:var(--kbq-line-contrast-less);border-bottom-color:var(--kbq-line-contrast-less)}.kbq-app-switcher-list-item__caption{color:var(--kbq-foreground-contrast-secondary)}.kbq-app-switcher-list-item{background:var(--kbq-list-default-container-background);color:var(--kbq-list-default-text-color)}.kbq-app-switcher-list-item:hover:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon,.kbq-app-switcher-list-item.kbq-hover:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon,.kbq-app-switcher-list-item.kbq-focused:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon{visibility:hidden}.kbq-app-switcher-list-item:hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-focused .kbq-app-switcher-list-item__toggle{display:flex}.kbq-app-switcher-list-item:hover,.kbq-app-switcher-list-item.kbq-hover,.kbq-app-switcher-list-item:hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-hover .kbq-app-switcher-list-item__toggle{background:var(--kbq-states-background-transparent-hover)}.kbq-app-switcher-list-item:active,.kbq-app-switcher-list-item.kbq-active{background:var(--kbq-states-background-transparent-active)}.kbq-app-switcher-list-item.kbq-selected{background:var(--kbq-background-theme-less)}.kbq-app-switcher-list-item.kbq-selected:hover,.kbq-app-switcher-list-item.kbq-selected.kbq-hover{background:var(--kbq-states-background-theme-less-hover)}.kbq-app-switcher-list-item.kbq-selected:active,.kbq-app-switcher-list-item.kbq-selected.kbq-active{background:var(--kbq-states-background-theme-less-active)}.kbq-app-switcher-list-item.cdk-keyboard-focused{outline:none;border-color:var(--kbq-list-states-focused-focus-outline-color)}.kbq-app-switcher-list-item__name{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}.kbq-app-switcher-list-item__caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n"], dependencies: [{ kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
52
+ `, isInline: true, styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-app-switcher-list-item{position:relative;display:flex;flex-direction:row;max-width:100%;min-height:38px;border-radius:var(--kbq-size-s);padding:var(--kbq-size-xxs) var(--kbq-size-m) var(--kbq-size-xs) var(--kbq-size-m);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent;cursor:pointer}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested{margin-left:var(--kbq-size-xxl);border-top-left-radius:unset;border-bottom-left-radius:unset}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:after{content:\"\";position:absolute;left:-1px;top:0;height:100%;border-left-width:1px;border-left-style:solid}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:has(+:not(.kbq-app-switcher-site_nested)),.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:last-child{border-bottom-left-radius:var(--kbq-size-s)}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:has(+:not(.kbq-app-switcher-site_nested)):after,.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:last-child:after{top:0;width:var(--kbq-size-m);height:var(--kbq-size-xxl);border-bottom-left-radius:var(--kbq-size-s);border-bottom-width:1px;border-bottom-style:solid}.kbq-app-switcher-list-item__toggle{position:absolute;display:none;align-items:center;justify-content:center;top:var(--kbq-size-m);left:var(--kbq-size-m);width:var(--kbq-size-xxl);height:var(--kbq-size-xxl);border-radius:var(--kbq-size-xxs)}.kbq-app-switcher-list-item__toggle .kbq-icon{transform:rotate(0)}.kbq-app-switcher-list-item__toggle.kbq-expanded .kbq-icon{transform:rotate(180deg)}.kbq-app-switcher-list-item__icon{padding-top:var(--kbq-size-s);padding-right:var(--kbq-size-m)}.kbq-app-switcher-list-item__container{max-width:100%;min-width:0;align-self:center}.kbq-app-switcher-list-item__container .kbq-app-switcher-list-item__name,.kbq-app-switcher-list-item__container .kbq-app-switcher-list-item__caption{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-app-switcher-site_nested:after{border-left-color:var(--kbq-line-contrast-less);border-bottom-color:var(--kbq-line-contrast-less)}.kbq-app-switcher-list-item__caption{color:var(--kbq-foreground-contrast-secondary)}.kbq-app-switcher-list-item{background:var(--kbq-list-default-container-background);color:var(--kbq-list-default-text-color)}.kbq-app-switcher-list-item:hover:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon,.kbq-app-switcher-list-item.kbq-hover:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon,.kbq-app-switcher-list-item.kbq-focused:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon{visibility:hidden}.kbq-app-switcher-list-item:hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-focused .kbq-app-switcher-list-item__toggle{display:flex}.kbq-app-switcher-list-item:hover,.kbq-app-switcher-list-item.kbq-hover,.kbq-app-switcher-list-item:hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-hover .kbq-app-switcher-list-item__toggle{background:var(--kbq-states-background-transparent-hover)}.kbq-app-switcher-list-item:active,.kbq-app-switcher-list-item.kbq-active{background:var(--kbq-states-background-transparent-active)}.kbq-app-switcher-list-item.kbq-selected{background:var(--kbq-background-theme-less)}.kbq-app-switcher-list-item.kbq-selected:hover,.kbq-app-switcher-list-item.kbq-selected.kbq-hover{background:var(--kbq-states-background-theme-less-hover)}.kbq-app-switcher-list-item.kbq-selected:active,.kbq-app-switcher-list-item.kbq-selected.kbq-active{background:var(--kbq-states-background-theme-less-active)}.kbq-app-switcher-list-item.cdk-keyboard-focused{outline:none;border-color:var(--kbq-list-states-focused-focus-outline-color)}.kbq-app-switcher-list-item__name{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}.kbq-app-switcher-list-item__caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n"], dependencies: [{ kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i1.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
46
53
  }
47
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqAppSwitcherListItem, decorators: [{
48
55
  type: Component,
49
- args: [{ standalone: true, selector: '[kbq-app-switcher-list-item]', exportAs: 'kbqAppSwitcherApp', template: `
50
- <span class="kbq-app-switcher-list-item__icon" [innerHtml]="getIcon(app.icon)"></span>
56
+ args: [{ standalone: true, selector: '[kbq-app-switcher-list-item]', exportAs: 'kbqAppSwitcherApp', imports: [
57
+ KbqIconModule,
58
+ NgOptimizedImage
59
+ ], template: `
60
+ @if (app.icon) {
61
+ <span class="kbq-app-switcher-list-item__icon" [innerHtml]="getIcon(app.icon)"></span>
62
+ } @else if (app.iconSrc) {
63
+ <span class="kbq-app-switcher-list-item__icon">
64
+ <img width="24" height="24" alt="{{ app.type }}" [ngSrc]="app.iconSrc" />
65
+ </span>
66
+ }
51
67
 
52
68
  <div class="kbq-app-switcher-list-item__container">
53
69
  <div class="kbq-app-switcher-list-item__name">{{ app.name }}</div>
@@ -65,10 +81,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
65
81
  class: 'kbq-app-switcher-list-item',
66
82
  '[class.kbq-dropdown-item]': 'false',
67
83
  '(click)': 'clickHandler($event)'
68
- }, imports: [
69
- KbqIcon,
70
- NgTemplateOutlet
71
- ], providers: [
84
+ }, providers: [
72
85
  { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqAppSwitcherListItem },
73
86
  { provide: KbqDropdownItem, useExisting: KbqAppSwitcherListItem }
74
87
  ], styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-app-switcher-list-item{position:relative;display:flex;flex-direction:row;max-width:100%;min-height:38px;border-radius:var(--kbq-size-s);padding:var(--kbq-size-xxs) var(--kbq-size-m) var(--kbq-size-xs) var(--kbq-size-m);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent;cursor:pointer}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested{margin-left:var(--kbq-size-xxl);border-top-left-radius:unset;border-bottom-left-radius:unset}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:after{content:\"\";position:absolute;left:-1px;top:0;height:100%;border-left-width:1px;border-left-style:solid}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:has(+:not(.kbq-app-switcher-site_nested)),.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:last-child{border-bottom-left-radius:var(--kbq-size-s)}.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:has(+:not(.kbq-app-switcher-site_nested)):after,.kbq-app-switcher-list-item.kbq-app-switcher-site_nested:last-child:after{top:0;width:var(--kbq-size-m);height:var(--kbq-size-xxl);border-bottom-left-radius:var(--kbq-size-s);border-bottom-width:1px;border-bottom-style:solid}.kbq-app-switcher-list-item__toggle{position:absolute;display:none;align-items:center;justify-content:center;top:var(--kbq-size-m);left:var(--kbq-size-m);width:var(--kbq-size-xxl);height:var(--kbq-size-xxl);border-radius:var(--kbq-size-xxs)}.kbq-app-switcher-list-item__toggle .kbq-icon{transform:rotate(0)}.kbq-app-switcher-list-item__toggle.kbq-expanded .kbq-icon{transform:rotate(180deg)}.kbq-app-switcher-list-item__icon{padding-top:var(--kbq-size-s);padding-right:var(--kbq-size-m)}.kbq-app-switcher-list-item__container{max-width:100%;min-width:0;align-self:center}.kbq-app-switcher-list-item__container .kbq-app-switcher-list-item__name,.kbq-app-switcher-list-item__container .kbq-app-switcher-list-item__caption{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-app-switcher-site_nested:after{border-left-color:var(--kbq-line-contrast-less);border-bottom-color:var(--kbq-line-contrast-less)}.kbq-app-switcher-list-item__caption{color:var(--kbq-foreground-contrast-secondary)}.kbq-app-switcher-list-item{background:var(--kbq-list-default-container-background);color:var(--kbq-list-default-text-color)}.kbq-app-switcher-list-item:hover:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon,.kbq-app-switcher-list-item.kbq-hover:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon,.kbq-app-switcher-list-item.kbq-focused:has(.kbq-app-switcher-list-item__toggle) .kbq-app-switcher-list-item__icon{visibility:hidden}.kbq-app-switcher-list-item:hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-focused .kbq-app-switcher-list-item__toggle{display:flex}.kbq-app-switcher-list-item:hover,.kbq-app-switcher-list-item.kbq-hover,.kbq-app-switcher-list-item:hover .kbq-app-switcher-list-item__toggle,.kbq-app-switcher-list-item.kbq-hover .kbq-app-switcher-list-item__toggle{background:var(--kbq-states-background-transparent-hover)}.kbq-app-switcher-list-item:active,.kbq-app-switcher-list-item.kbq-active{background:var(--kbq-states-background-transparent-active)}.kbq-app-switcher-list-item.kbq-selected{background:var(--kbq-background-theme-less)}.kbq-app-switcher-list-item.kbq-selected:hover,.kbq-app-switcher-list-item.kbq-selected.kbq-hover{background:var(--kbq-states-background-theme-less-hover)}.kbq-app-switcher-list-item.kbq-selected:active,.kbq-app-switcher-list-item.kbq-selected.kbq-active{background:var(--kbq-states-background-theme-less-active)}.kbq-app-switcher-list-item.cdk-keyboard-focused{outline:none;border-color:var(--kbq-list-states-focused-focus-outline-color)}.kbq-app-switcher-list-item__name{font-size:var(--kbq-typography-text-normal-medium-font-size);font-style:var(--kbq-typography-text-normal-medium-font-style);font-weight:var(--kbq-typography-text-normal-medium-font-weight);line-height:var(--kbq-typography-text-normal-medium-line-height);font-family:var(--kbq-typography-text-normal-medium-font-family);text-transform:var(--kbq-typography-text-normal-medium-text-transform);font-feature-settings:var(--kbq-typography-text-normal-medium-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-medium-letter-spacing)}.kbq-app-switcher-list-item__caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n"] }]
@@ -81,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
81
94
  type: Input,
82
95
  args: [{ transform: booleanAttribute }]
83
96
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2FwcC1zd2l0Y2hlci9rYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBR2xELG9CQUFvQjtBQXNDcEIsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGVBQWU7SUFyQzNEOztRQXNDWSxjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBR0QsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGNBQVMsR0FBWSxLQUFLLENBQUM7S0FjdEU7SUFaRyxZQUFZLENBQUMsS0FBaUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRXZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3JDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQW1CO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztrSUFsQlEsc0JBQXNCO3NIQUF0QixzQkFBc0IsbUhBSVgsZ0JBQWdCLHlDQUNoQixnQkFBZ0IsNEtBVnpCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQ3BFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7U0FDcEUsa0ZBL0JTOzs7Ozs7Ozs7Ozs7Ozs7S0FlVCwrMk9BVUcsT0FBTzs7NEZBUUYsc0JBQXNCO2tCQXJDbEMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sOEJBQThCLFlBQzlCLG1CQUFtQixZQUNuQjs7Ozs7Ozs7Ozs7Ozs7O0tBZVQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsS0FBSyxFQUFFLDRCQUE0Qjt3QkFDbkMsMkJBQTJCLEVBQUUsT0FBTzt3QkFDcEMsU0FBUyxFQUFFLHNCQUFzQjtxQkFDcEMsV0FDUTt3QkFDTCxPQUFPO3dCQUNQLGdCQUFnQjtxQkFDbkIsYUFDVTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUNwRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTtxQkFDcEU7OEJBS1EsR0FBRztzQkFBWCxLQUFLO2dCQUNrQyxNQUFNO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEtCUV9USVRMRV9URVhUX1JFRiB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURyb3Bkb3duSXRlbSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxQXBwU3dpdGNoZXJBcHAgfSBmcm9tICcuL2FwcC1zd2l0Y2hlcic7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtXScsXG4gICAgZXhwb3J0QXM6ICdrYnFBcHBTd2l0Y2hlckFwcCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbV9faWNvblwiIFtpbm5lckh0bWxdPVwiZ2V0SWNvbihhcHAuaWNvbilcIj48L3NwYW4+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtX19jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbV9fbmFtZVwiPnt7IGFwcC5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICBAaWYgKGFwcC5jYXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtX19jYXB0aW9uXCI+e3sgYXBwLmNhcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmICh0b2dnbGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbV9fdG9nZ2xlXCIgW2NsYXNzLmticS1leHBhbmRlZF09XCIhY29sbGFwc2VkXCI+XG4gICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2hldnJvbi1kb3duLXNfMTZcIiBbY29sb3JdPVwiJ2NvbnRyYXN0LWZhZGUnXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIHN0eWxlVXJsczogWydrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbS5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW0nLFxuICAgICAgICAnW2NsYXNzLmticS1kcm9wZG93bi1pdGVtXSc6ICdmYWxzZScsXG4gICAgICAgICcoY2xpY2spJzogJ2NsaWNrSGFuZGxlcigkZXZlbnQpJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBLYnFJY29uLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBLQlFfVElUTEVfVEVYVF9SRUYsIHVzZUV4aXN0aW5nOiBLYnFBcHBTd2l0Y2hlckxpc3RJdGVtIH0sXG4gICAgICAgIHsgcHJvdmlkZTogS2JxRHJvcGRvd25JdGVtLCB1c2VFeGlzdGluZzogS2JxQXBwU3dpdGNoZXJMaXN0SXRlbSB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBLYnFBcHBTd2l0Y2hlckxpc3RJdGVtIGV4dGVuZHMgS2JxRHJvcGRvd25JdGVtIHtcbiAgICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuXG4gICAgQElucHV0KCkgYXBwOiBLYnFBcHBTd2l0Y2hlckFwcDtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdG9nZ2xlID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY2xpY2tIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEljb24oaWNvbjogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaWNvbiB8fCAnJyk7XG4gICAgfVxufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2FwcC1zd2l0Y2hlci9rYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUd4RCxvQkFBb0I7QUE0Q3BCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxlQUFlO0lBM0MzRDs7UUE0Q1ksY0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUdELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixjQUFTLEdBQVksS0FBSyxDQUFDO0tBY3RFO0lBWkcsWUFBWSxDQUFDLEtBQWlCO1FBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNyQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFtQjtRQUN2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7a0lBbEJRLHNCQUFzQjtzSEFBdEIsc0JBQXNCLG1IQUlYLGdCQUFnQix5Q0FDaEIsZ0JBQWdCLDRLQVZ6QjtZQUNQLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNwRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1NBQ3BFLGtGQWpDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBcUJULDgyT0F4QkcsYUFBYSw0SUFDYixnQkFBZ0I7OzRGQXFDWCxzQkFBc0I7a0JBM0NsQyxTQUFTO2lDQUNNLElBQUksWUFDTiw4QkFBOEIsWUFDOUIsbUJBQW1CLFdBQ3BCO3dCQUNMLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNuQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxQlQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsS0FBSyxFQUFFLDRCQUE0Qjt3QkFDbkMsMkJBQTJCLEVBQUUsT0FBTzt3QkFDcEMsU0FBUyxFQUFFLHNCQUFzQjtxQkFDcEMsYUFDVTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUNwRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTtxQkFDcEU7OEJBS1EsR0FBRztzQkFBWCxLQUFLO2dCQUNrQyxNQUFNO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ09wdGltaXplZEltYWdlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEtCUV9USVRMRV9URVhUX1JFRiB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURyb3Bkb3duSXRlbSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBLYnFJY29uTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxQXBwU3dpdGNoZXJBcHAgfSBmcm9tICcuL2FwcC1zd2l0Y2hlcic7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtXScsXG4gICAgZXhwb3J0QXM6ICdrYnFBcHBTd2l0Y2hlckFwcCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBLYnFJY29uTW9kdWxlLFxuICAgICAgICBOZ09wdGltaXplZEltYWdlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICBAaWYgKGFwcC5pY29uKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtX19pY29uXCIgW2lubmVySHRtbF09XCJnZXRJY29uKGFwcC5pY29uKVwiPjwvc3Bhbj5cbiAgICAgICAgfSBAZWxzZSBpZiAoYXBwLmljb25TcmMpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW1fX2ljb25cIj5cbiAgICAgICAgICAgICAgICA8aW1nIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGFsdD1cInt7IGFwcC50eXBlIH19XCIgW25nU3JjXT1cImFwcC5pY29uU3JjXCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbV9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW1fX25hbWVcIj57eyBhcHAubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgQGlmIChhcHAuY2FwdGlvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtYXBwLXN3aXRjaGVyLWxpc3QtaXRlbV9fY2FwdGlvblwiPnt7IGFwcC5jYXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAodG9nZ2xlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW1fX3RvZ2dsZVwiIFtjbGFzcy5rYnEtZXhwYW5kZWRdPVwiIWNvbGxhcHNlZFwiPlxuICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLWNoZXZyb24tZG93bi1zXzE2XCIgW2NvbG9yXT1cIidjb250cmFzdC1mYWRlJ1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFsna2JxLWFwcC1zd2l0Y2hlci1saXN0LWl0ZW0uc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1hcHAtc3dpdGNoZXItbGlzdC1pdGVtJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtZHJvcGRvd24taXRlbV0nOiAnZmFsc2UnLFxuICAgICAgICAnKGNsaWNrKSc6ICdjbGlja0hhbmRsZXIoJGV2ZW50KSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEtCUV9USVRMRV9URVhUX1JFRiwgdXNlRXhpc3Rpbmc6IEticUFwcFN3aXRjaGVyTGlzdEl0ZW0gfSxcbiAgICAgICAgeyBwcm92aWRlOiBLYnFEcm9wZG93bkl0ZW0sIHVzZUV4aXN0aW5nOiBLYnFBcHBTd2l0Y2hlckxpc3RJdGVtIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEticUFwcFN3aXRjaGVyTGlzdEl0ZW0gZXh0ZW5kcyBLYnFEcm9wZG93bkl0ZW0ge1xuICAgIHByaXZhdGUgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG5cbiAgICBASW5wdXQoKSBhcHA6IEticUFwcFN3aXRjaGVyQXBwO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0b2dnbGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjbGlja0hhbmRsZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudG9nZ2xlKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SWNvbihpY29uOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpY29uIHx8ICcnKTtcbiAgICB9XG59XG4iXX0=