barsa-tiles 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,6 +42,7 @@ export class BarsaShellbarComponent extends BaseComponent {
42
42
  };
43
43
  this.searchTerms = ['مرخصی', 'ماموریت', 'تیکت', 'پروژه'];
44
44
  this.showVersion = false;
45
+ this.isServiceDesk = false;
45
46
  this._viewedNotifications$ = new Subject();
46
47
  this.onBellNotification = () => {
47
48
  this._document?.body && this._document.body.click();
@@ -68,7 +69,7 @@ export class BarsaShellbarComponent extends BaseComponent {
68
69
  const culture = e.currentTarget.textContent.trim();
69
70
  this._changeCulture(culture);
70
71
  };
71
- this.showVersion = !BarsaApi.LoginFormData.IsServiceDesk;
72
+ this.isServiceDesk = BarsaApi.LoginFormData.IsServiceDesk;
72
73
  this.showVersion = false;
73
74
  document.body.addEventListener('click', () => {
74
75
  this.isOpenQuickAccess = false;
@@ -101,11 +102,11 @@ export class BarsaShellbarComponent extends BaseComponent {
101
102
  this.cultureChanged.emit(culture);
102
103
  }
103
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaShellbarComponent, deps: [{ token: i1.NotificationService }, { token: i2.DialogService }, { token: DOCUMENT }, { token: APP_VERSION }], target: i0.ɵɵFactoryTarget.Component }); }
104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: { cssCustomUrl: "cssCustomUrl", cssUrl: "cssUrl", allowAnonymous: "allowAnonymous", multiLanguages: "multiLanguages", userLoggedIn: "userLoggedIn", settings: "settings", productMenuControl: "productMenuControl", deviceSize: "deviceSize", cultures: "cultures", shellbarData: "shellbarData", notificationCount: "notificationCount", notifcationLoaded: "notifcationLoaded", notificationLoading: "notificationLoading", notifications: "notifications", productMenuItems1: "productMenuItems1", bodyClick: "bodyClick", logo: "logo", actions: "actions", userMenu: "userMenu", productSwitcher: "productSwitcher", subtitle: "subtitle", isMobile: "isMobile" }, outputs: { openNotificationPanel: "openNotificationPanel", openQuickAccessPanel: "openQuickAccessPanel", cultureChanged: "cultureChanged", notificationLoadMore: "notificationLoadMore", removeNotification: "removeNotification", notifiationActionClick: "notifiationActionClick", notificationViewed: "notificationViewed" }, viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (cssUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\r\n} @if (cssCustomUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\r\n} @if (userLoggedIn || allowAnonymous) {\r\n<fd-shellbar [size]=\"deviceSize\" [ngClass]=\"deviceSize\">\r\n @if (deviceSize === 's' && userLoggedIn && !settings?.HideQuickAccess) {\r\n <fd-shellbar-action\r\n [glyph]=\"'apps'\"\r\n [label]=\"'Quick Access' | bbbTranslate\"\r\n [notificationCount]=\"notificationCount.unread ?? 0\"\r\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\r\n [callback]=\"onOpenQuickAccess\"\r\n >\r\n </fd-shellbar-action>\r\n }\r\n <!-- @if (userLoggedIn && !settings?.HideQuickAccess) {-->\r\n <!-- <fd-popover-->\r\n <!-- [(isOpen)]=\"isOpenQuickAccess\"-->\r\n <!-- [triggers]=\"[]\"-->\r\n <!-- [focusTrapped]=\"true\"-->\r\n <!-- [noArrow]=\"true\"-->\r\n <!-- placement=\"bottom\"-->\r\n <!-- title=\"Quick Access Popover\"-->\r\n <!-- [focusAutoCapture]=\"true\"-->\r\n <!-- [mobile]=\"deviceSize === 's'\"-->\r\n <!-- #popoverComponent-->\r\n <!-- >-->\r\n <!-- <fd-popover-control>-->\r\n <!-- <fd-shellbar-action-->\r\n <!-- [glyph]=\"'grid'\"-->\r\n <!-- [label]=\"'Quick Access'\"-->\r\n <!-- [callback]=\"onOpenQuickAccess\"-->\r\n <!-- >-->\r\n <!-- </fd-shellbar-action>-->\r\n <!-- </fd-popover-control>-->\r\n <!-- <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(&#45;&#45;sapContent_Shadow0)\">-->\r\n <!-- <ng-container-->\r\n <!-- *ngTemplateOutlet=\"QuickAccessTemplate\"-->\r\n <!-- ></ng-container>-->\r\n <!-- </fd-popover-body>-->\r\n <!-- </fd-popover>-->\r\n <!-- }-->\r\n @if (userLoggedIn && !settings?.HideQuickAccess) {\r\n <button\r\n fd-shellbar-side-nav\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"menu2\"\r\n style=\"width: 2.75rem\"\r\n (click)=\"$event.stopPropagation(); isOpenQuickAccess = !isOpenQuickAccess\"\r\n ></button>\r\n } @if (logo) {\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\r\n href=\"/\"\r\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\r\n aria-label=\"Barsa Novin Ray\"\r\n ></a>\r\n </fd-shellbar-logo>\r\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\r\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\r\n </fd-product-menu>\r\n }\r\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\r\n @if (user && (userMenu?.length || !settings?.HideLanguage)) {\r\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\r\n @for (action of actions; track action) {\r\n <fd-shellbar-action [glyph]=\"action.Icon\" [callback]=\"action.Callback\" [label]=\"action.Label\">\r\n </fd-shellbar-action>\r\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notifications' | bbbTranslate\"\r\n [notificationCount]=\"notificationCount.unread ?? 0\"\r\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\r\n [callback]=\"onBellNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (!settings?.HideNotifications && userLoggedIn) {\r\n <fd-popover\r\n [(isOpen)]=\"isOpenNotificatoin\"\r\n [triggers]=\"[]\"\r\n [focusTrapped]=\"true\"\r\n [noArrow]=\"true\"\r\n placement=\"bottom\"\r\n title=\"Notification Popover\"\r\n [focusAutoCapture]=\"true\"\r\n [mobile]=\"deviceSize === 's'\"\r\n #popoverComponent\r\n >\r\n <fd-popover-control>\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationCount.unread\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\r\n ></ng-container>\r\n </fd-popover-body>\r\n </fd-popover>\r\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\r\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\r\n </fd-shellbar-action>\r\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\r\n track culture) {\r\n <fd-shellbar-action\r\n [label]=\"culture.value\"\r\n [callback]=\"onLanguage\"\r\n class=\"culture-abbrivation\"\r\n [glyph]=\"culture.key\"\r\n [ngClass]=\"'flags'\"\r\n >\r\n </fd-shellbar-action>\r\n } } @if (productSwitcher?.length) {\r\n <fd-product-switch>\r\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\r\n </fd-product-switch-body>\r\n </fd-product-switch>\r\n }\r\n </fd-shellbar-actions>\r\n }\r\n</fd-shellbar>\r\n}\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<div\r\n class=\"tw-fixed tw-top-[38.5px] tw-h-[calc(100vh-38.5px)] tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\r\n [class.!tw-right-0]=\"isOpenQuickAccess\"\r\n [ngClass]=\"isMobile ? 'tw-w-screen -tw-right-full' : 'tw-w-80 -tw-right-80'\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"QuickAccessTemplate\"></ng-container>\r\n</div>\r\n\r\n@if(isOpenQuickAccess) {\r\n<div\r\n class=\"tw-fixed tw-right-0 tw-top-[38.5px] tw-h-[calc(100vh-38.5px)] tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\r\n (click)=\"isOpenQuickAccess = false\"\r\n></div>\r\n}\r\n<fd-menu #menu>\r\n <ul fd-list>\r\n @for (culture of cultures | keyvalue; track culture) {\r\n <li fd-list-item>\r\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\r\n <span fd-list-title>\r\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\r\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</fd-menu>\r\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\r\n @if (!notifcationLoaded && notificationLoading === true) {\r\n <div style=\"position: relative; height: 100px\">\r\n <bsu-mask size=\"s\"></bsu-mask>\r\n </div>\r\n }\r\n <bt-notification-group\r\n [notifications]=\"notifications\"\r\n [notificationCount]=\"notificationCount\"\r\n [loading]=\"notificationLoading === true\"\r\n (viewed)=\"onNotificationItemViewed($event)\"\r\n (remove)=\"onRemoveNotifications($event)\"\r\n (showEvent)=\"popoverComponent.close(); onShowNotification($event)\"\r\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\r\n (loadMore)=\"onNotificationLoadMore()\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bt-notification-group>\r\n</ng-template>\r\n<ng-template #QuickAccessTemplate>\r\n @if (!notifcationLoaded && notificationLoading === true) {\r\n <div style=\"position: relative; height: 100px\">\r\n <bsu-mask size=\"s\"></bsu-mask>\r\n </div>\r\n }\r\n <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body class=\"mobile\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\r\n ></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:contents}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s{padding:0}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i5.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i5.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i5.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i6.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i6.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i7.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i7.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i7.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i7.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i8.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i9.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled"] }, { kind: "component", type: i9.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i10.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i10.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i10.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i11.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex"] }, { kind: "component", type: i11.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i11.ShellbarSubtitleComponent, selector: "fd-shellbar-subtitle" }, { kind: "component", type: i11.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect"], outputs: ["searchOpen"] }, { kind: "component", type: i11.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i11.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "directive", type: i11.ShellbarSidenavDirective, selector: "[fdShellbarSidenav], [fd-shellbar-side-nav]" }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i12.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i13.PopoverAppFinderComponent, selector: "bt-popover-app-finder", outputs: ["closeMenu"] }, { kind: "component", type: i14.NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount"], outputs: ["viewed", "remove", "actionClick", "showEvent", "loadMore"] }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: { cssCustomUrl: "cssCustomUrl", cssUrl: "cssUrl", allowAnonymous: "allowAnonymous", multiLanguages: "multiLanguages", userLoggedIn: "userLoggedIn", settings: "settings", productMenuControl: "productMenuControl", deviceSize: "deviceSize", cultures: "cultures", shellbarData: "shellbarData", notificationCount: "notificationCount", notifcationLoaded: "notifcationLoaded", notificationLoading: "notificationLoading", notifications: "notifications", productMenuItems1: "productMenuItems1", bodyClick: "bodyClick", logo: "logo", actions: "actions", userMenu: "userMenu", productSwitcher: "productSwitcher", subtitle: "subtitle", isMobile: "isMobile", hideShellbarActions: "hideShellbarActions", showLoginButton: "showLoginButton", isTablet: "isTablet", isDesktop: "isDesktop" }, outputs: { openNotificationPanel: "openNotificationPanel", openQuickAccessPanel: "openQuickAccessPanel", cultureChanged: "cultureChanged", notificationLoadMore: "notificationLoadMore", removeNotification: "removeNotification", notifiationActionClick: "notifiationActionClick", notificationViewed: "notificationViewed" }, viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (cssUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n} @if (cssCustomUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n} @if (userLoggedIn || allowAnonymous) {\n<fd-shellbar [size]=\"deviceSize\" [ngClass]=\"deviceSize\">\n @if (deviceSize === 's' && userLoggedIn && !settings?.HideQuickAccess) {\n <fd-shellbar-action\n [glyph]=\"'apps'\"\n [label]=\"'Quick Access' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\n [callback]=\"onOpenQuickAccess\"\n >\n </fd-shellbar-action>\n } @if (userLoggedIn && !settings?.HideQuickAccess) {\n <button\n fd-shellbar-side-nav\n fd-button\n fdType=\"transparent\"\n glyph=\"menu2\"\n style=\"width: 2.75rem\"\n (click)=\"$event.stopPropagation(); isOpenQuickAccess = !isOpenQuickAccess\"\n ></button>\n } @if (logo) {\n <fd-shellbar-logo>\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\n </fd-product-menu>\n }\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\n @if (!hideShellbarActions&& user && (userMenu?.length || !settings?.HideLanguage)) {\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\n @for (action of actions; track action) {\n <fd-shellbar-action\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n notificationLabel=\"login\"\n >\n </fd-shellbar-action>\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n } @if (!settings?.HideNotifications && userLoggedIn) {\n <fd-popover\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\n </fd-shellbar-action>\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\n track culture) {\n <fd-shellbar-action\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n } } @if (productSwitcher?.length) {\n <fd-product-switch>\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n }\n </fd-shellbar-actions>\n }\n</fd-shellbar>\n} @if(showLoginButton){\n<div\n [class.fd-shellbar--xl]=\"isDesktop\"\n [class.fd-shellbar--m]=\"isTablet\"\n [class.fd-shellbar--s]=\"isMobile\"\n class=\"login-wrapper\"\n [class.service-desk]=\"isServiceDesk\"\n>\n <button\n fd-button\n [label]=\"'\u0648\u0631\u0648\u062F' | bbbTranslate\"\n glyph=\"person-placeholder\"\n [routerLink]=\"['/login']\"\n fdType=\"emphasized\"\n ></button>\n</div>\n}\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<div\n class=\"tw-fixed tw-top-[38.5px] tw-h-[calc(100vh-38.5px)] tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\n [class.!tw-right-0]=\"isOpenQuickAccess\"\n [ngClass]=\"isMobile ? 'tw-w-screen -tw-right-full' : 'tw-w-80 -tw-right-80'\"\n (click)=\"$event.stopPropagation()\"\n>\n <ng-container *ngTemplateOutlet=\"QuickAccessTemplate\"></ng-container>\n</div>\n\n@if(isOpenQuickAccess) {\n<div\n class=\"tw-fixed tw-right-0 tw-top-[38.5px] tw-h-[calc(100vh-38.5px)] tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\n (click)=\"isOpenQuickAccess = false\"\n></div>\n}\n<fd-menu #menu>\n <ul fd-list>\n @for (culture of cultures | keyvalue; track culture) {\n <li fd-list-item>\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n }\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n @if (!notifcationLoaded && notificationLoading === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bt-notification-group\n [notifications]=\"notifications\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"notificationLoading === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (showEvent)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n<ng-template #QuickAccessTemplate>\n @if (!notifcationLoaded && notificationLoading === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:contents;position:relative}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s{padding:0}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.login-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0}.login-wrapper button{background-color:var(--sapShellColor);border-color:var(--sapButton_Emphasized_TextColor)}.login-wrapper.service-desk button{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i5.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i5.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i5.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i6.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i6.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i7.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i7.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i7.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i7.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i8.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i9.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled"] }, { kind: "component", type: i9.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i10.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i10.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i10.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i11.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex"] }, { kind: "component", type: i11.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i11.ShellbarSubtitleComponent, selector: "fd-shellbar-subtitle" }, { kind: "component", type: i11.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect"], outputs: ["searchOpen"] }, { kind: "component", type: i11.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i11.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "directive", type: i11.ShellbarSidenavDirective, selector: "[fdShellbarSidenav], [fd-shellbar-side-nav]" }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i12.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i13.PopoverAppFinderComponent, selector: "bt-popover-app-finder", outputs: ["closeMenu"] }, { kind: "component", type: i14.NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount"], outputs: ["viewed", "remove", "actionClick", "showEvent", "loadMore"] }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
106
  }
106
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaShellbarComponent, decorators: [{
107
108
  type: Component,
108
- args: [{ selector: 'bt-barsa-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (cssUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\r\n} @if (cssCustomUrl) {\r\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\r\n} @if (userLoggedIn || allowAnonymous) {\r\n<fd-shellbar [size]=\"deviceSize\" [ngClass]=\"deviceSize\">\r\n @if (deviceSize === 's' && userLoggedIn && !settings?.HideQuickAccess) {\r\n <fd-shellbar-action\r\n [glyph]=\"'apps'\"\r\n [label]=\"'Quick Access' | bbbTranslate\"\r\n [notificationCount]=\"notificationCount.unread ?? 0\"\r\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\r\n [callback]=\"onOpenQuickAccess\"\r\n >\r\n </fd-shellbar-action>\r\n }\r\n <!-- @if (userLoggedIn && !settings?.HideQuickAccess) {-->\r\n <!-- <fd-popover-->\r\n <!-- [(isOpen)]=\"isOpenQuickAccess\"-->\r\n <!-- [triggers]=\"[]\"-->\r\n <!-- [focusTrapped]=\"true\"-->\r\n <!-- [noArrow]=\"true\"-->\r\n <!-- placement=\"bottom\"-->\r\n <!-- title=\"Quick Access Popover\"-->\r\n <!-- [focusAutoCapture]=\"true\"-->\r\n <!-- [mobile]=\"deviceSize === 's'\"-->\r\n <!-- #popoverComponent-->\r\n <!-- >-->\r\n <!-- <fd-popover-control>-->\r\n <!-- <fd-shellbar-action-->\r\n <!-- [glyph]=\"'grid'\"-->\r\n <!-- [label]=\"'Quick Access'\"-->\r\n <!-- [callback]=\"onOpenQuickAccess\"-->\r\n <!-- >-->\r\n <!-- </fd-shellbar-action>-->\r\n <!-- </fd-popover-control>-->\r\n <!-- <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(&#45;&#45;sapContent_Shadow0)\">-->\r\n <!-- <ng-container-->\r\n <!-- *ngTemplateOutlet=\"QuickAccessTemplate\"-->\r\n <!-- ></ng-container>-->\r\n <!-- </fd-popover-body>-->\r\n <!-- </fd-popover>-->\r\n <!-- }-->\r\n @if (userLoggedIn && !settings?.HideQuickAccess) {\r\n <button\r\n fd-shellbar-side-nav\r\n fd-button\r\n fdType=\"transparent\"\r\n glyph=\"menu2\"\r\n style=\"width: 2.75rem\"\r\n (click)=\"$event.stopPropagation(); isOpenQuickAccess = !isOpenQuickAccess\"\r\n ></button>\r\n } @if (logo) {\r\n <fd-shellbar-logo>\r\n <a\r\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\r\n href=\"/\"\r\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\r\n aria-label=\"Barsa Novin Ray\"\r\n ></a>\r\n </fd-shellbar-logo>\r\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\r\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\r\n </fd-product-menu>\r\n }\r\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\r\n @if (user && (userMenu?.length || !settings?.HideLanguage)) {\r\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\r\n @for (action of actions; track action) {\r\n <fd-shellbar-action [glyph]=\"action.Icon\" [callback]=\"action.Callback\" [label]=\"action.Label\">\r\n </fd-shellbar-action>\r\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notifications' | bbbTranslate\"\r\n [notificationCount]=\"notificationCount.unread ?? 0\"\r\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\r\n [callback]=\"onBellNotification\"\r\n >\r\n </fd-shellbar-action>\r\n } @if (!settings?.HideNotifications && userLoggedIn) {\r\n <fd-popover\r\n [(isOpen)]=\"isOpenNotificatoin\"\r\n [triggers]=\"[]\"\r\n [focusTrapped]=\"true\"\r\n [noArrow]=\"true\"\r\n placement=\"bottom\"\r\n title=\"Notification Popover\"\r\n [focusAutoCapture]=\"true\"\r\n [mobile]=\"deviceSize === 's'\"\r\n #popoverComponent\r\n >\r\n <fd-popover-control>\r\n <fd-shellbar-action\r\n [glyph]=\"'bell'\"\r\n [label]=\"'Notification'\"\r\n [notificationCount]=\"notificationCount.unread\"\r\n [notificationLabel]=\"'Notification Label'\"\r\n [callback]=\"onOpenNotification\"\r\n >\r\n </fd-shellbar-action>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\r\n ></ng-container>\r\n </fd-popover-body>\r\n </fd-popover>\r\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\r\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\r\n </fd-shellbar-action>\r\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\r\n track culture) {\r\n <fd-shellbar-action\r\n [label]=\"culture.value\"\r\n [callback]=\"onLanguage\"\r\n class=\"culture-abbrivation\"\r\n [glyph]=\"culture.key\"\r\n [ngClass]=\"'flags'\"\r\n >\r\n </fd-shellbar-action>\r\n } } @if (productSwitcher?.length) {\r\n <fd-product-switch>\r\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\r\n </fd-product-switch-body>\r\n </fd-product-switch>\r\n }\r\n </fd-shellbar-actions>\r\n }\r\n</fd-shellbar>\r\n}\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<div\r\n class=\"tw-fixed tw-top-[38.5px] tw-h-[calc(100vh-38.5px)] tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\r\n [class.!tw-right-0]=\"isOpenQuickAccess\"\r\n [ngClass]=\"isMobile ? 'tw-w-screen -tw-right-full' : 'tw-w-80 -tw-right-80'\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"QuickAccessTemplate\"></ng-container>\r\n</div>\r\n\r\n@if(isOpenQuickAccess) {\r\n<div\r\n class=\"tw-fixed tw-right-0 tw-top-[38.5px] tw-h-[calc(100vh-38.5px)] tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\r\n (click)=\"isOpenQuickAccess = false\"\r\n></div>\r\n}\r\n<fd-menu #menu>\r\n <ul fd-list>\r\n @for (culture of cultures | keyvalue; track culture) {\r\n <li fd-list-item>\r\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\r\n <span fd-list-title>\r\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\r\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\r\n </span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</fd-menu>\r\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\r\n @if (!notifcationLoaded && notificationLoading === true) {\r\n <div style=\"position: relative; height: 100px\">\r\n <bsu-mask size=\"s\"></bsu-mask>\r\n </div>\r\n }\r\n <bt-notification-group\r\n [notifications]=\"notifications\"\r\n [notificationCount]=\"notificationCount\"\r\n [loading]=\"notificationLoading === true\"\r\n (viewed)=\"onNotificationItemViewed($event)\"\r\n (remove)=\"onRemoveNotifications($event)\"\r\n (showEvent)=\"popoverComponent.close(); onShowNotification($event)\"\r\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\r\n (loadMore)=\"onNotificationLoadMore()\"\r\n [deviceSize]=\"deviceSize\"\r\n ></bt-notification-group>\r\n</ng-template>\r\n<ng-template #QuickAccessTemplate>\r\n @if (!notifcationLoaded && notificationLoading === true) {\r\n <div style=\"position: relative; height: 100px\">\r\n <bsu-mask size=\"s\"></bsu-mask>\r\n </div>\r\n }\r\n <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder>\r\n</ng-template>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-header>\r\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\r\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\r\n </fd-dialog-header>\r\n <fd-dialog-body class=\"mobile\">\r\n <ng-container\r\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\r\n ></ng-container>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{display:contents}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s{padding:0}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}\n"] }]
109
+ args: [{ selector: 'bt-barsa-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (cssUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n} @if (cssCustomUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n} @if (userLoggedIn || allowAnonymous) {\n<fd-shellbar [size]=\"deviceSize\" [ngClass]=\"deviceSize\">\n @if (deviceSize === 's' && userLoggedIn && !settings?.HideQuickAccess) {\n <fd-shellbar-action\n [glyph]=\"'apps'\"\n [label]=\"'Quick Access' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\n [callback]=\"onOpenQuickAccess\"\n >\n </fd-shellbar-action>\n } @if (userLoggedIn && !settings?.HideQuickAccess) {\n <button\n fd-shellbar-side-nav\n fd-button\n fdType=\"transparent\"\n glyph=\"menu2\"\n style=\"width: 2.75rem\"\n (click)=\"$event.stopPropagation(); isOpenQuickAccess = !isOpenQuickAccess\"\n ></button>\n } @if (logo) {\n <fd-shellbar-logo>\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\n </fd-product-menu>\n }\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\n @if (!hideShellbarActions&& user && (userMenu?.length || !settings?.HideLanguage)) {\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\n @for (action of actions; track action) {\n <fd-shellbar-action\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n notificationLabel=\"login\"\n >\n </fd-shellbar-action>\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n } @if (!settings?.HideNotifications && userLoggedIn) {\n <fd-popover\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\n </fd-shellbar-action>\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\n track culture) {\n <fd-shellbar-action\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n } } @if (productSwitcher?.length) {\n <fd-product-switch>\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n }\n </fd-shellbar-actions>\n }\n</fd-shellbar>\n} @if(showLoginButton){\n<div\n [class.fd-shellbar--xl]=\"isDesktop\"\n [class.fd-shellbar--m]=\"isTablet\"\n [class.fd-shellbar--s]=\"isMobile\"\n class=\"login-wrapper\"\n [class.service-desk]=\"isServiceDesk\"\n>\n <button\n fd-button\n [label]=\"'\u0648\u0631\u0648\u062F' | bbbTranslate\"\n glyph=\"person-placeholder\"\n [routerLink]=\"['/login']\"\n fdType=\"emphasized\"\n ></button>\n</div>\n}\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<div\n class=\"tw-fixed tw-top-[38.5px] tw-h-[calc(100vh-38.5px)] tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\n [class.!tw-right-0]=\"isOpenQuickAccess\"\n [ngClass]=\"isMobile ? 'tw-w-screen -tw-right-full' : 'tw-w-80 -tw-right-80'\"\n (click)=\"$event.stopPropagation()\"\n>\n <ng-container *ngTemplateOutlet=\"QuickAccessTemplate\"></ng-container>\n</div>\n\n@if(isOpenQuickAccess) {\n<div\n class=\"tw-fixed tw-right-0 tw-top-[38.5px] tw-h-[calc(100vh-38.5px)] tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\n (click)=\"isOpenQuickAccess = false\"\n></div>\n}\n<fd-menu #menu>\n <ul fd-list>\n @for (culture of cultures | keyvalue; track culture) {\n <li fd-list-item>\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n }\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n @if (!notifcationLoaded && notificationLoading === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bt-notification-group\n [notifications]=\"notifications\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"notificationLoading === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (showEvent)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n<ng-template #QuickAccessTemplate>\n @if (!notifcationLoaded && notificationLoading === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:contents;position:relative}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s{padding:0}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.login-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0}.login-wrapper button{background-color:var(--sapShellColor);border-color:var(--sapButton_Emphasized_TextColor)}.login-wrapper.service-desk button{background-color:transparent}\n"] }]
109
110
  }], ctorParameters: () => [{ type: i1.NotificationService }, { type: i2.DialogService }, { type: Document, decorators: [{
110
111
  type: Inject,
111
112
  args: [DOCUMENT]
@@ -156,6 +157,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
156
157
  type: Input
157
158
  }], isMobile: [{
158
159
  type: Input
160
+ }], hideShellbarActions: [{
161
+ type: Input
162
+ }], showLoginButton: [{
163
+ type: Input
164
+ }], isTablet: [{
165
+ type: Input
166
+ }], isDesktop: [{
167
+ type: Input
159
168
  }], openNotificationPanel: [{
160
169
  type: Output
161
170
  }], openQuickAccessPanel: [{
@@ -180,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
180
189
  type: ViewChild,
181
190
  args: ['notificationsDialog', { static: true, read: TemplateRef }]
182
191
  }] } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9iYXJzYS1zaGVsbGJhci9iYXJzYS1zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXNoZWxsYmFyL2JhcnNhLXNoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUNILGlCQUFpQixFQU1wQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQUlSLFdBQVcsRUFLZCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBa0I5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQWtFckQsWUFDWSxvQkFBeUMsRUFDekMsY0FBNkIsRUFDWCxTQUFtQixFQUNqQixVQUFrQjtRQUU5QyxLQUFLLEVBQUUsQ0FBQztRQUxBLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDWCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ2pCLGVBQVUsR0FBVixVQUFVLENBQVE7UUE5Q3hDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDakQseUJBQW9CLEdBQUcs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Q0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUkscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFdUIsaUJBQWlCO3NCQUE5QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDc0IsZ0JBQWdCO3NCQUFqRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDdUIsb0JBQW9CO3NCQUExRixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBpbmplY3QsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29tYm9ib3hDb21wb25lbnQsXHJcbiAgICBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcclxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxyXG4gICAgU2hlbGxiYXJNZW51SXRlbSxcclxuICAgIFNoZWxsYmFyVXNlclxyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIEZpbGVQaWN0dXJlSW5mb01vZGVsLFxyXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcclxuICAgIEFQUF9WRVJTSU9OLFxyXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIE5vdGlmaWNhdGlvbkl0ZW0sXHJcbiAgICBOb3RpZmljYXRpb25BY3Rpb24sXHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbnRlcmZhY2UgU2hlbGxiYXJTZXR0aW5nIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XHJcbiAgICBzdWJ0aXRsZTogc3RyaW5nO1xyXG4gICAgY2FsY1N1YnRpdGxlOiBzdHJpbmc7XHJcbiAgICBsb2dvOiBGaWxlUGljdHVyZUluZm9Nb2RlbDtcclxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcclxuICAgIFByb2R1Y3RNZW51SXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XHJcbiAgICBVc2VyTWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xyXG4gICAgQWN0aW9uSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdidC1iYXJzYS1zaGVsbGJhcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYVNoZWxsYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBjc3NDdXN0b21Vcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGw7XHJcbiAgICBASW5wdXQoKSBjc3NVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGw7XHJcbiAgICBASW5wdXQoKSBhbGxvd0Fub255bW91czogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIG11bHRpTGFuZ3VhZ2VzOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgdXNlckxvZ2dlZEluOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBASW5wdXQoKSBwcm9kdWN0TWVudUNvbnRyb2w6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcclxuICAgIEBJbnB1dCgpIGN1bHR1cmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgQElucHV0KCkgc2hlbGxiYXJEYXRhOiBTaGVsbGJhclNldHRpbmc7XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25Db3VudDogeyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfTtcclxuICAgIEBJbnB1dCgpIG5vdGlmY2F0aW9uTG9hZGVkOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uTG9hZGluZzogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkl0ZW1bXTtcclxuICAgIEBJbnB1dCgpIHByb2R1Y3RNZW51SXRlbXMxOiBTaGVsbGJhck1lbnVJdGVtW107XHJcbiAgICBASW5wdXQoKSBib2R5Q2xpY2s6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGxvZ286IHsgRmlsZUlkOiBzdHJpbmcgfTtcclxuICAgIEBJbnB1dCgpIGFjdGlvbnM6IEFycmF5PE1ldGFvYmplY3REYXRhTW9kZWw+O1xyXG4gICAgQElucHV0KCkgdXNlck1lbnU6IHsgdGV4dDogc3RyaW5nOyBjYWxsYmFjazogKCkgPT4gdm9pZCB9W107XHJcbiAgICBASW5wdXQoKSBwcm9kdWN0U3dpdGNoZXI6IFByb2R1Y3RTd2l0Y2hJdGVtW107XHJcbiAgICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaXNNb2JpbGU6IGJvb2xlYW47XHJcblxyXG4gICAgQE91dHB1dCgpIG9wZW5Ob3RpZmljYXRpb25QYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBvcGVuUXVpY2tBY2Nlc3NQYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBjdWx0dXJlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIG5vdGlmaWNhdGlvbkxvYWRNb3JlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIHJlbW92ZU5vdGlmaWNhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdOyBzaWxlbnQ6IGJvb2xlYW4gfT4oKTtcclxuICAgIEBPdXRwdXQoKSBub3RpZmlhdGlvbkFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW06IE5vdGlmaWNhdGlvbkl0ZW07IGJ0bjogTm90aWZpY2F0aW9uQWN0aW9uIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uVmlld2VkID0gbmV3IEV2ZW50RW1pdHRlcjxOb3RpZmljYXRpb25JdGVtPigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoQ29tYm9ib3hDb21wb25lbnQpIGNvbWJvYm94Q29tcG9uZW50OiBDb21ib2JveENvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ3BvcG92ZXJDb21wb25lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9wb3ZlckNvbXBvbmVudDogUG9wb3ZlckNvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbnNEaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX25vdGlmaWNhdGlvbnNEaWFsb2c6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgcHJpdmF0ZSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBBcnJheSA9IEFycmF5O1xyXG4gICAgaXNPcGVuTm90aWZpY2F0b2luID0gZmFsc2U7XHJcbiAgICBpc09wZW5RdWlja0FjY2VzcyA9IGZhbHNlO1xyXG5cclxuICAgIHVzZXI6IFNoZWxsYmFyVXNlciA9IHtcclxuICAgICAgICBpbml0aWFsczogJ1dXJyxcclxuICAgICAgICBjb2xvckFjY2VudDogMVxyXG4gICAgfTtcclxuICAgIHNlYXJjaFRlcm1zID0gWyfZhdix2K7YtduMJywgJ9mF2KfZhdmI2LHbjNiqJywgJ9iq24zaqdiqJywgJ9m+2LHZiNqY2YcnXTtcclxuICAgIHNlYXJjaFRlcm06IHN0cmluZztcclxuICAgIGFjdGlvbnMkOiBPYnNlcnZhYmxlPFNoZWxsYmFyTWVudUl0ZW1bXT47XHJcblxyXG4gICAgc2hvd1ZlcnNpb24gPSBmYWxzZTtcclxuXHJcbiAgICBfdmlld2VkTm90aWZpY2F0aW9ucyQgPSBuZXcgU3ViamVjdDxOb3RpZmljYXRpb25JdGVtPigpO1xyXG4gICAgb25CZWxsTm90aWZpY2F0aW9uID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuX2RvY3VtZW50Py5ib2R5ICYmIHRoaXMuX2RvY3VtZW50LmJvZHkuY2xpY2soKTtcclxuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5vcGVuKHRoaXMuX25vdGlmaWNhdGlvbnNEaWFsb2csIHtcclxuICAgICAgICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsUGFkZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuYWZ0ZXJMb2FkZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvblBhbmVsLmVtaXQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkl0ZW1bXSA9IFtdO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCxcclxuICAgICAgICBASW5qZWN0KEFQUF9WRVJTSU9OKSBwdWJsaWMgYXBwVmVyc2lvbjogc3RyaW5nXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuc2hvd1ZlcnNpb24gPSAhQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1NlcnZpY2VEZXNrO1xyXG4gICAgICAgIHRoaXMuc2hvd1ZlcnNpb24gPSBmYWxzZTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzT3BlblF1aWNrQWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XHJcbiAgICB9XHJcbiAgICBvblNob3dOb3RpZmljYXRpb24oZTogeyB0YWc6IHN0cmluZzsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IG5hbWE6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLlNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZSk7XHJcbiAgICB9XHJcbiAgICBvbk5vdGlmaWNhdGlvbkl0ZW1WaWV3ZWQodmlld2VkTW86IE5vdGlmaWNhdGlvbkl0ZW0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblZpZXdlZC5lbWl0KHZpZXdlZE1vKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlbW92ZU5vdGlmaWNhdGlvbnMoZTogeyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdOyBzaWxlbnQ6IGJvb2xlYW4gfSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlTm90aWZpY2F0aW9uLmVtaXQoZSk7XHJcbiAgICB9XHJcbiAgICBvbk9wZW5RdWlja0FjY2VzcyA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmlzT3BlblF1aWNrQWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wZW5RdWlja0FjY2Vzc1BhbmVsLmVtaXQoKTtcclxuICAgIH07XHJcbiAgICBvbk9wZW5Ob3RpZmljYXRpb24gPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvblBhbmVsLmVtaXQoKTtcclxuICAgIH07XHJcbiAgICBvbk5vdGlmaWNhdGlvbkFjdGlvbihlOiB7IGl0ZW06IE5vdGlmaWNhdGlvbkl0ZW07IGJ0bjogTm90aWZpY2F0aW9uQWN0aW9uIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWF0aW9uQWN0aW9uQ2xpY2suZW1pdChlKTtcclxuICAgIH1cclxuICAgIG9uTGFuZ3VhZ2UgPSAoZSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGNvbnN0IGN1bHR1cmUgPSBlLmN1cnJlbnRUYXJnZXQudGV4dENvbnRlbnQudHJpbSgpO1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XHJcbiAgICB9O1xyXG4gICAgb25Ob3RpZmljYXRpb25Mb2FkTW9yZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRNb3JlLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VDdWx0dXJlKGN1bHR1cmU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY3VsdHVyZUNoYW5nZWQuZW1pdChjdWx0dXJlKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGNzc1VybCkge1xyXG48bGluayB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgW2hyZWZdPVwiY3NzVXJsXCIgLz5cclxufSBAaWYgKGNzc0N1c3RvbVVybCkge1xyXG48bGluayB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgW2hyZWZdPVwiY3NzQ3VzdG9tVXJsXCIgLz5cclxufSBAaWYgKHVzZXJMb2dnZWRJbiB8fCBhbGxvd0Fub255bW91cykge1xyXG48ZmQtc2hlbGxiYXIgW3NpemVdPVwiZGV2aWNlU2l6ZVwiIFtuZ0NsYXNzXT1cImRldmljZVNpemVcIj5cclxuICAgIEBpZiAoZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHVzZXJMb2dnZWRJbiAmJiAhc2V0dGluZ3M/LkhpZGVRdWlja0FjY2Vzcykge1xyXG4gICAgPGZkLXNoZWxsYmFyLWFjdGlvblxyXG4gICAgICAgIFtnbHlwaF09XCInYXBwcydcIlxyXG4gICAgICAgIFtsYWJlbF09XCInUXVpY2sgQWNjZXNzJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50LnVucmVhZCA/PyAwXCJcclxuICAgICAgICBbbm90aWZpY2F0aW9uTGFiZWxdPVwiJ1F1aWNrIEFjY2VzcycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIFtjYWxsYmFja109XCJvbk9wZW5RdWlja0FjY2Vzc1wiXHJcbiAgICA+XHJcbiAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cclxuICAgIH1cclxuICAgIDwhLS0gICAgICAgIEBpZiAodXNlckxvZ2dlZEluICYmICFzZXR0aW5ncz8uSGlkZVF1aWNrQWNjZXNzKSB7LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgPGZkLXBvcG92ZXItLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgWyhpc09wZW4pXT1cImlzT3BlblF1aWNrQWNjZXNzXCItLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgW3RyaWdnZXJzXT1cIltdXCItLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCItLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgW25vQXJyb3ddPVwidHJ1ZVwiLS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiLS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgIHRpdGxlPVwiUXVpY2sgQWNjZXNzIFBvcG92ZXJcIi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCItLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgW21vYmlsZV09XCJkZXZpY2VTaXplID09PSAncydcIi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAjcG9wb3ZlckNvbXBvbmVudC0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgID4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb24tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ2dyaWQnXCItLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1F1aWNrIEFjY2VzcydcIi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFja109XCJvbk9wZW5RdWlja0FjY2Vzc1wiLS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+LS0+XHJcbiAgICA8IS0tICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgc3R5bGU9XCJtaW4td2lkdGg6IDMyMHB4OyBvdmVyZmxvdy14OiBhdXRvOyBib3gtc2hhZG93OiB2YXIoJiM0NTsmIzQ1O3NhcENvbnRlbnRfU2hhZG93MClcIj4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXItLT5cclxuICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlF1aWNrQWNjZXNzVGVtcGxhdGVcIi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPi0tPlxyXG4gICAgPCEtLSAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT4tLT5cclxuICAgIDwhLS0gICAgICAgICAgICA8L2ZkLXBvcG92ZXI+LS0+XHJcbiAgICA8IS0tICAgICAgICB9LS0+XHJcbiAgICBAaWYgKHVzZXJMb2dnZWRJbiAmJiAhc2V0dGluZ3M/LkhpZGVRdWlja0FjY2Vzcykge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLXNoZWxsYmFyLXNpZGUtbmF2XHJcbiAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgIGdseXBoPVwibWVudTJcIlxyXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDIuNzVyZW1cIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGlzT3BlblF1aWNrQWNjZXNzID0gIWlzT3BlblF1aWNrQWNjZXNzXCJcclxuICAgID48L2J1dHRvbj5cclxuICAgIH0gQGlmIChsb2dvKSB7XHJcbiAgICA8ZmQtc2hlbGxiYXItbG9nbz5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZEltYWdlXT1cIid1cmwoJyArIChsb2dvPy5GaWxlSWQgfCBwaWNGaWVsZFNyYzogJ0dldFBpY3R1cmVGcm9tRmlsZUluZm8nOm51bGwpICsgJyknXCJcclxuICAgICAgICAgICAgaHJlZj1cIi9cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZkLXNoZWxsYmFyX19sb2dvIGZkLXNoZWxsYmFyX19sb2dvLS1pbWFnZS1yZXBsYWNlZFwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJCYXJzYSBOb3ZpbiBSYXlcIlxyXG4gICAgICAgID48L2E+XHJcbiAgICA8L2ZkLXNoZWxsYmFyLWxvZ28+XHJcbiAgICB9IEBpZiAoIXNldHRpbmdzPy5IaWRlUHJvZHVjdE1lbnUgJiYgcHJvZHVjdE1lbnVJdGVtczEgJiYgcHJvZHVjdE1lbnVJdGVtczEubGVuZ3RoID4gMCkge1xyXG4gICAgPGZkLXByb2R1Y3QtbWVudSBbY29udHJvbF09XCJwcm9kdWN0TWVudUNvbnRyb2xcIiBbY2xvc2VQb3BvdmVyT25TZWxlY3RdPVwidHJ1ZVwiIFtpdGVtc109XCJwcm9kdWN0TWVudUl0ZW1zMVwiPlxyXG4gICAgPC9mZC1wcm9kdWN0LW1lbnU+XHJcbiAgICB9XHJcbiAgICA8ZmQtc2hlbGxiYXItc3VidGl0bGU+IHt7IHN1YnRpdGxlIHwgYmJiVHJhbnNsYXRlIH19e3sgc2hvd1ZlcnNpb24gPyBhcHBWZXJzaW9uIDogJycgfX08L2ZkLXNoZWxsYmFyLXN1YnRpdGxlPlxyXG4gICAgQGlmICh1c2VyICYmICh1c2VyTWVudT8ubGVuZ3RoIHx8ICFzZXR0aW5ncz8uSGlkZUxhbmd1YWdlKSkge1xyXG4gICAgPGZkLXNoZWxsYmFyLWFjdGlvbnMgW3VzZXJdPVwidXNlclwiIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiICNsYW5nUmVmPlxyXG4gICAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zOyB0cmFjayBhY3Rpb24pIHtcclxuICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uIFtnbHlwaF09XCJhY3Rpb24uSWNvblwiIFtjYWxsYmFja109XCJhY3Rpb24uQ2FsbGJhY2tcIiBbbGFiZWxdPVwiYWN0aW9uLkxhYmVsXCI+XHJcbiAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XHJcbiAgICAgICAgfSBAaWYgKGRldmljZVNpemUgPT09ICdzJyAmJiB1c2VyTG9nZ2VkSW4gJiYgIXNldHRpbmdzPy5IaWRlTm90aWZpY2F0aW9ucykge1xyXG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cclxuICAgICAgICAgICAgW2dseXBoXT1cIidiZWxsJ1wiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInTm90aWZpY2F0aW9ucycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbbm90aWZpY2F0aW9uQ291bnRdPVwibm90aWZpY2F0aW9uQ291bnQudW5yZWFkID8/IDBcIlxyXG4gICAgICAgICAgICBbbm90aWZpY2F0aW9uTGFiZWxdPVwiJ05vdGlmaWNhdGlvbnMnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2NhbGxiYWNrXT1cIm9uQmVsbE5vdGlmaWNhdGlvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxyXG4gICAgICAgIH0gQGlmICghc2V0dGluZ3M/LkhpZGVOb3RpZmljYXRpb25zICYmIHVzZXJMb2dnZWRJbikge1xyXG4gICAgICAgIDxmZC1wb3BvdmVyXHJcbiAgICAgICAgICAgIFsoaXNPcGVuKV09XCJpc09wZW5Ob3RpZmljYXRvaW5cIlxyXG4gICAgICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxyXG4gICAgICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbbm9BcnJvd109XCJ0cnVlXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJOb3RpZmljYXRpb24gUG9wb3ZlclwiXHJcbiAgICAgICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbbW9iaWxlXT1cImRldmljZVNpemUgPT09ICdzJ1wiXHJcbiAgICAgICAgICAgICNwb3BvdmVyQ29tcG9uZW50XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxyXG4gICAgICAgICAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInYmVsbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInTm90aWZpY2F0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50LnVucmVhZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25vdGlmaWNhdGlvbkxhYmVsXT1cIidOb3RpZmljYXRpb24gTGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2tdPVwib25PcGVuTm90aWZpY2F0aW9uXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxyXG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cclxuICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keSBzdHlsZT1cIm1pbi13aWR0aDogMzIwcHg7IG92ZXJmbG93LXg6IGF1dG87IGJveC1zaGFkb3c6IHZhcigtLXNhcENvbnRlbnRfU2hhZG93MClcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5vdGlmaWNhdGlvbkdyb3VwVHBsOyBjb250ZXh0OiB7IG5vdGlmaWNhdGlvbkNvdW50OiBub3RpZmljYXRpb25Db3VudCB9XCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XHJcbiAgICAgICAgPC9mZC1wb3BvdmVyPlxyXG4gICAgICAgIH0gQGlmICghc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSAmJiBkZXZpY2VTaXplICE9PSAncycgJiYgbXVsdGlMYW5ndWFnZXMpIHtcclxuICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uIFtnbHlwaF09XCInd29ybGQnXCIgW2xhYmVsXT1cIidsYW5ndWFnZSdcIiBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCIgKGNhbGxiYWNrKT1cIihvbkxhbmd1YWdlKVwiPlxyXG4gICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxyXG4gICAgICAgIH0gQGlmICghc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSAmJiBkZXZpY2VTaXplID09PSAncycgJiYgbXVsdGlMYW5ndWFnZXMpIHsgQGZvciAoY3VsdHVyZSBvZiBjdWx0dXJlcyB8IGtleXZhbHVlO1xyXG4gICAgICAgIHRyYWNrIGN1bHR1cmUpIHtcclxuICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCJjdWx0dXJlLnZhbHVlXCJcclxuICAgICAgICAgICAgW2NhbGxiYWNrXT1cIm9uTGFuZ3VhZ2VcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImN1bHR1cmUtYWJicml2YXRpb25cIlxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwiY3VsdHVyZS5rZXlcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCInZmxhZ3MnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XHJcbiAgICAgICAgfSB9IEBpZiAocHJvZHVjdFN3aXRjaGVyPy5sZW5ndGgpIHtcclxuICAgICAgICA8ZmQtcHJvZHVjdC1zd2l0Y2g+XHJcbiAgICAgICAgICAgIDxmZC1wcm9kdWN0LXN3aXRjaC1ib2R5IFtwcm9kdWN0c109XCJwcm9kdWN0U3dpdGNoZXJcIiBbZm9yY2VMaXN0TW9kZV09XCJkZXZpY2VTaXplID09PSAncydcIj5cclxuICAgICAgICAgICAgPC9mZC1wcm9kdWN0LXN3aXRjaC1ib2R5PlxyXG4gICAgICAgIDwvZmQtcHJvZHVjdC1zd2l0Y2g+XHJcbiAgICAgICAgfVxyXG4gICAgPC9mZC1zaGVsbGJhci1hY3Rpb25zPlxyXG4gICAgfVxyXG48L2ZkLXNoZWxsYmFyPlxyXG59XHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cclxuICAgIDxic3UtbWFzaz48L2JzdS1tYXNrPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdlxyXG4gICAgY2xhc3M9XCJ0dy1maXhlZCB0dy10b3AtWzM4LjVweF0gdHctaC1bY2FsYygxMDB2aC0zOC41cHgpXSB0dy1iZy13aGl0ZSB0dy10cmFuc2l0aW9uLWFsbCB0dy16LVsxMDBdIHR3LXNoYWRvdy0yeGwgdHctb3ZlcmZsb3ctYXV0b1wiXHJcbiAgICBbY2xhc3MuIXR3LXJpZ2h0LTBdPVwiaXNPcGVuUXVpY2tBY2Nlc3NcIlxyXG4gICAgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAndHctdy1zY3JlZW4gLXR3LXJpZ2h0LWZ1bGwnIDogJ3R3LXctODAgLXR3LXJpZ2h0LTgwJ1wiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIlF1aWNrQWNjZXNzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG5AaWYoaXNPcGVuUXVpY2tBY2Nlc3MpIHtcclxuPGRpdlxyXG4gICAgY2xhc3M9XCJ0dy1maXhlZCB0dy1yaWdodC0wIHR3LXRvcC1bMzguNXB4XSB0dy1oLVtjYWxjKDEwMHZoLTM4LjVweCldIHR3LWJnLXNsYXRlLTgwMC9bLjVdIHR3LXotWzkwXSB0dy13LXNjcmVlbiB0dy1iYWNrZHJvcC1ibHVyLXNtXCJcclxuICAgIChjbGljayk9XCJpc09wZW5RdWlja0FjY2VzcyA9IGZhbHNlXCJcclxuPjwvZGl2PlxyXG59XHJcbjxmZC1tZW51ICNtZW51PlxyXG4gICAgPHVsIGZkLWxpc3Q+XHJcbiAgICAgICAgQGZvciAoY3VsdHVyZSBvZiBjdWx0dXJlcyB8IGtleXZhbHVlOyB0cmFjayBjdWx0dXJlKSB7XHJcbiAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cclxuICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyB3aWR0aD1cIjE0cHhcIiBoZWlnaHQ9XCIxMnB4XCIgW3NyY109XCInL2Fzc2V0cy9mbGFncy8nICsgY3VsdHVyZS5rZXkgKyAnLnBuZydcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3VsdHVyZS1hYmJyaXZhdGlvblwiIFtuZ0NsYXNzXT1cImN1bHR1cmUua2V5XCI+IHt7IGN1bHR1cmUua2V5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICB9XHJcbiAgICA8L3VsPlxyXG48L2ZkLW1lbnU+XHJcbjxuZy10ZW1wbGF0ZSAjbm90aWZpY2F0aW9uR3JvdXBUcGwgbGV0LW5vdGlmaWNhdGlvbkNvdW50PVwibm90aWZpY2F0aW9uQ291bnRcIj5cclxuICAgIEBpZiAoIW5vdGlmY2F0aW9uTG9hZGVkICYmIG5vdGlmaWNhdGlvbkxvYWRpbmcgPT09IHRydWUpIHtcclxuICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMTAwcHhcIj5cclxuICAgICAgICA8YnN1LW1hc2sgc2l6ZT1cInNcIj48L2JzdS1tYXNrPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8YnQtbm90aWZpY2F0aW9uLWdyb3VwXHJcbiAgICAgICAgW25vdGlmaWNhdGlvbnNdPVwibm90aWZpY2F0aW9uc1wiXHJcbiAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50XCJcclxuICAgICAgICBbbG9hZGluZ109XCJub3RpZmljYXRpb25Mb2FkaW5nID09PSB0cnVlXCJcclxuICAgICAgICAodmlld2VkKT1cIm9uTm90aWZpY2F0aW9uSXRlbVZpZXdlZCgkZXZlbnQpXCJcclxuICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlTm90aWZpY2F0aW9ucygkZXZlbnQpXCJcclxuICAgICAgICAoc2hvd0V2ZW50KT1cInBvcG92ZXJDb21wb25lbnQuY2xvc2UoKTsgb25TaG93Tm90aWZpY2F0aW9uKCRldmVudClcIlxyXG4gICAgICAgIChhY3Rpb25DbGljayk9XCJwb3BvdmVyQ29tcG9uZW50LmNsb3NlKCk7IG9uTm90aWZpY2F0aW9uQWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgIChsb2FkTW9yZSk9XCJvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKClcIlxyXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgPjwvYnQtbm90aWZpY2F0aW9uLWdyb3VwPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI1F1aWNrQWNjZXNzVGVtcGxhdGU+XHJcbiAgICBAaWYgKCFub3RpZmNhdGlvbkxvYWRlZCAmJiBub3RpZmljYXRpb25Mb2FkaW5nID09PSB0cnVlKSB7XHJcbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4XCI+XHJcbiAgICAgICAgPGJzdS1tYXNrIHNpemU9XCJzXCI+PC9ic3UtbWFzaz5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPGJ0LXBvcG92ZXItYXBwLWZpbmRlciAoY2xvc2VNZW51KT1cImlzT3BlblF1aWNrQWNjZXNzID0gZmFsc2VcIj48L2J0LXBvcG92ZXItYXBwLWZpbmRlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjbm90aWZpY2F0aW9uc0RpYWxvZz5cclxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgICAgICA8aDEgaWQ9XCJmZC1kaWFsb2ctaGVhZGVyLTEwXCIgZmQtdGl0bGU+e3sgJ05vdGlmaWNhdGlvbicgfCBiYmJUcmFuc2xhdGUgfX08L2gxPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZkLWRpYWxvZy1jbG9zZS1idXR0b24gKGNsaWNrKT1cImRpYWxvZy5kaXNtaXNzKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5IGNsYXNzPVwibW9iaWxlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm90aWZpY2F0aW9uR3JvdXBUcGw7IGNvbnRleHQ6IHsgbm90aWZpY2F0aW9uQ291bnQ6IG5vdGlmaWNhdGlvbkNvdW50IH1cIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cclxuICAgIDwvZmQtZGlhbG9nPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9iYXJzYS1zaGVsbGJhci9iYXJzYS1zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXNoZWxsYmFyL2JhcnNhLXNoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUNILGlCQUFpQixFQU1wQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQUlSLFdBQVcsRUFLZCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBa0I5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQXVFckQsWUFDWSxvQkFBeUMsRUFDekMsY0FBNkIsRUFDWCxTQUFtQixFQUNqQixVQUFrQjtRQUU5QyxLQUFLLEVBQUUsQ0FBQztRQUxBLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDWCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ2pCLGVBQVUsR0FBVixVQUFVLENBQVE7UUEvQ3hDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDakQseUJBQW9CLEdBQUcs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RyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUV1QixpQkFBaUI7c0JBQTlDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNzQixnQkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUN1QixvQkFBb0I7c0JBQTFGLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgQ29tYm9ib3hDb21wb25lbnQsXG4gICAgRGlhbG9nU2VydmljZSxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxuICAgIFNoZWxsYmFyTWVudUl0ZW0sXG4gICAgU2hlbGxiYXJVc2VyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbXBvbmVudCxcbiAgICBCYXJzYUFwaSxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIEZpbGVQaWN0dXJlSW5mb01vZGVsLFxuICAgIE1vRm9yUmVwb3J0TW9kZWwsXG4gICAgQVBQX1ZFUlNJT04sXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvbixcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemVcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbnRlcmZhY2UgU2hlbGxiYXJTZXR0aW5nIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBjYWxjU3VidGl0bGU6IHN0cmluZztcbiAgICBsb2dvOiBGaWxlUGljdHVyZUluZm9Nb2RlbDtcbiAgICBQcm9kdWN0U3dpdGNoSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgUHJvZHVjdE1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBVc2VyTWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIEFjdGlvbkl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LWJhcnNhLXNoZWxsYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXNoZWxsYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFyc2FTaGVsbGJhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNzc0N1c3RvbVVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbDtcbiAgICBASW5wdXQoKSBjc3NVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGw7XG4gICAgQElucHV0KCkgYWxsb3dBbm9ueW1vdXM6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbXVsdGlMYW5ndWFnZXM6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIHByb2R1Y3RNZW51Q29udHJvbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBjdWx0dXJlczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBASW5wdXQoKSBzaGVsbGJhckRhdGE6IFNoZWxsYmFyU2V0dGluZztcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25Db3VudDogeyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfTtcbiAgICBASW5wdXQoKSBub3RpZmNhdGlvbkxvYWRlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25Mb2FkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkl0ZW1bXTtcbiAgICBASW5wdXQoKSBwcm9kdWN0TWVudUl0ZW1zMTogU2hlbGxiYXJNZW51SXRlbVtdO1xuICAgIEBJbnB1dCgpIGJvZHlDbGljazogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxvZ286IHsgRmlsZUlkOiBzdHJpbmcgfTtcbiAgICBASW5wdXQoKSBhY3Rpb25zOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcbiAgICBASW5wdXQoKSB1c2VyTWVudTogeyB0ZXh0OiBzdHJpbmc7IGNhbGxiYWNrOiAoKSA9PiB2b2lkIH1bXTtcbiAgICBASW5wdXQoKSBwcm9kdWN0U3dpdGNoZXI6IFByb2R1Y3RTd2l0Y2hJdGVtW107XG4gICAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlU2hlbGxiYXJBY3Rpb25zOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dMb2dpbkJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc1RhYmxldDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0Rlc2t0b3A6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgb3Blbk5vdGlmaWNhdGlvblBhbmVsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBvcGVuUXVpY2tBY2Nlc3NQYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgY3VsdHVyZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uTG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHJlbW92ZU5vdGlmaWNhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdOyBzaWxlbnQ6IGJvb2xlYW4gfT4oKTtcbiAgICBAT3V0cHV0KCkgbm90aWZpYXRpb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtOiBOb3RpZmljYXRpb25JdGVtOyBidG46IE5vdGlmaWNhdGlvbkFjdGlvbiB9PigpO1xuICAgIEBPdXRwdXQoKSBub3RpZmljYXRpb25WaWV3ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5vdGlmaWNhdGlvbkl0ZW0+KCk7XG5cbiAgICBAVmlld0NoaWxkKENvbWJvYm94Q29tcG9uZW50KSBjb21ib2JveENvbXBvbmVudDogQ29tYm9ib3hDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgncG9wb3ZlckNvbXBvbmVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3BvdmVyQ29tcG9uZW50OiBQb3BvdmVyQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbnNEaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX25vdGlmaWNhdGlvbnNEaWFsb2c6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcml2YXRlIF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgQXJyYXkgPSBBcnJheTtcbiAgICBpc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcbiAgICBpc09wZW5RdWlja0FjY2VzcyA9IGZhbHNlO1xuXG4gICAgdXNlcjogU2hlbGxiYXJVc2VyID0ge1xuICAgICAgICBpbml0aWFsczogJ1dXJyxcbiAgICAgICAgY29sb3JBY2NlbnQ6IDFcbiAgICB9O1xuICAgIHNlYXJjaFRlcm1zID0gWyfZhdix2K7YtduMJywgJ9mF2KfZhdmI2LHbjNiqJywgJ9iq24zaqdiqJywgJ9m+2LHZiNqY2YcnXTtcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gICAgYWN0aW9ucyQ6IE9ic2VydmFibGU8U2hlbGxiYXJNZW51SXRlbVtdPjtcblxuICAgIHNob3dWZXJzaW9uID0gZmFsc2U7XG4gICAgaXNTZXJ2aWNlRGVzayA9IGZhbHNlO1xuXG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnMkID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uSXRlbT4oKTtcbiAgICBvbkJlbGxOb3RpZmljYXRpb24gPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2RvY3VtZW50Py5ib2R5ICYmIHRoaXMuX2RvY3VtZW50LmJvZHkuY2xpY2soKTtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZVxuICAgICAgICAgICAgLm9wZW4odGhpcy5fbm90aWZpY2F0aW9uc0RpYWxvZywge1xuICAgICAgICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFmdGVyTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uUGFuZWwuZW1pdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdID0gW107XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX25vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChBUFBfVkVSU0lPTikgcHVibGljIGFwcFZlcnNpb246IHN0cmluZ1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmlzU2VydmljZURlc2sgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzU2VydmljZURlc2s7XG4gICAgICAgIHRoaXMuc2hvd1ZlcnNpb24gPSBmYWxzZTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuUXVpY2tBY2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIG9uQ3VsdHVyZUNoYW5nZShjdWx0dXJlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XG4gICAgfVxuICAgIG9uU2hvd05vdGlmaWNhdGlvbihlOiB7IHRhZzogc3RyaW5nOyBtbzogTWV0YW9iamVjdERhdGFNb2RlbDsgbmFtYTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5TaG93Tm90aWZpY2F0aW9uUmVsYXRlZE1vKGUpO1xuICAgIH1cbiAgICBvbk5vdGlmaWNhdGlvbkl0ZW1WaWV3ZWQodmlld2VkTW86IE5vdGlmaWNhdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25WaWV3ZWQuZW1pdCh2aWV3ZWRNbyk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVOb3RpZmljYXRpb25zKGU6IHsgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTsgc2lsZW50OiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOb3RpZmljYXRpb24uZW1pdChlKTtcbiAgICB9XG4gICAgb25PcGVuUXVpY2tBY2Nlc3MgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaXNPcGVuUXVpY2tBY2Nlc3MgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wZW5RdWlja0FjY2Vzc1BhbmVsLmVtaXQoKTtcbiAgICB9O1xuICAgIG9uT3Blbk5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSB0cnVlO1xuICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb25QYW5lbC5lbWl0KCk7XG4gICAgfTtcbiAgICBvbk5vdGlmaWNhdGlvbkFjdGlvbihlOiB7IGl0ZW06IE5vdGlmaWNhdGlvbkl0ZW07IGJ0bjogTm90aWZpY2F0aW9uQWN0aW9uIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub3RpZmlhdGlvbkFjdGlvbkNsaWNrLmVtaXQoZSk7XG4gICAgfVxuICAgIG9uTGFuZ3VhZ2UgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBjdWx0dXJlID0gZS5jdXJyZW50VGFyZ2V0LnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlQ3VsdHVyZShjdWx0dXJlKTtcbiAgICB9O1xuICAgIG9uTm90aWZpY2F0aW9uTG9hZE1vcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTG9hZE1vcmUuZW1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoYW5nZUN1bHR1cmUoY3VsdHVyZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VsdHVyZUNoYW5nZWQuZW1pdChjdWx0dXJlKTtcbiAgICB9XG59XG4iLCJAaWYgKGNzc1VybCkge1xuPGxpbmsgdHlwZT1cInRleHQvY3NzXCIgcmVsPVwic3R5bGVzaGVldFwiIFtocmVmXT1cImNzc1VybFwiIC8+XG59IEBpZiAoY3NzQ3VzdG9tVXJsKSB7XG48bGluayB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgW2hyZWZdPVwiY3NzQ3VzdG9tVXJsXCIgLz5cbn0gQGlmICh1c2VyTG9nZ2VkSW4gfHwgYWxsb3dBbm9ueW1vdXMpIHtcbjxmZC1zaGVsbGJhciBbc2l6ZV09XCJkZXZpY2VTaXplXCIgW25nQ2xhc3NdPVwiZGV2aWNlU2l6ZVwiPlxuICAgIEBpZiAoZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHVzZXJMb2dnZWRJbiAmJiAhc2V0dGluZ3M/LkhpZGVRdWlja0FjY2Vzcykge1xuICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cbiAgICAgICAgW2dseXBoXT1cIidhcHBzJ1wiXG4gICAgICAgIFtsYWJlbF09XCInUXVpY2sgQWNjZXNzJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFtub3RpZmljYXRpb25Db3VudF09XCJub3RpZmljYXRpb25Db3VudC51bnJlYWQgPz8gMFwiXG4gICAgICAgIFtub3RpZmljYXRpb25MYWJlbF09XCInUXVpY2sgQWNjZXNzJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFtjYWxsYmFja109XCJvbk9wZW5RdWlja0FjY2Vzc1wiXG4gICAgPlxuICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgIH0gQGlmICh1c2VyTG9nZ2VkSW4gJiYgIXNldHRpbmdzPy5IaWRlUXVpY2tBY2Nlc3MpIHtcbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLXNoZWxsYmFyLXNpZGUtbmF2XG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIGdseXBoPVwibWVudTJcIlxuICAgICAgICBzdHlsZT1cIndpZHRoOiAyLjc1cmVtXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaXNPcGVuUXVpY2tBY2Nlc3MgPSAhaXNPcGVuUXVpY2tBY2Nlc3NcIlxuICAgID48L2J1dHRvbj5cbiAgICB9IEBpZiAobG9nbykge1xuICAgIDxmZC1zaGVsbGJhci1sb2dvPlxuICAgICAgICA8YVxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRJbWFnZV09XCIndXJsKCcgKyAobG9nbz8uRmlsZUlkIHwgcGljRmllbGRTcmM6ICdHZXRQaWN0dXJlRnJvbUZpbGVJbmZvJzpudWxsKSArICcpJ1wiXG4gICAgICAgICAgICBocmVmPVwiL1wiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXNoZWxsYmFyX19sb2dvIGZkLXNoZWxsYmFyX19sb2dvLS1pbWFnZS1yZXBsYWNlZFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQmFyc2EgTm92aW4gUmF5XCJcbiAgICAgICAgPjwvYT5cbiAgICA8L2ZkLXNoZWxsYmFyLWxvZ28+XG4gICAgfSBAaWYgKCFzZXR0aW5ncz8uSGlkZVByb2R1Y3RNZW51ICYmIHByb2R1Y3RNZW51SXRlbXMxICYmIHByb2R1Y3RNZW51SXRlbXMxLmxlbmd0aCA+IDApIHtcbiAgICA8ZmQtcHJvZHVjdC1tZW51IFtjb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiIFtjbG9zZVBvcG92ZXJPblNlbGVjdF09XCJ0cnVlXCIgW2l0ZW1zXT1cInByb2R1Y3RNZW51SXRlbXMxXCI+XG4gICAgPC9mZC1wcm9kdWN0LW1lbnU+XG4gICAgfVxuICAgIDxmZC1zaGVsbGJhci1zdWJ0aXRsZT4ge3sgc3VidGl0bGUgfCBiYmJUcmFuc2xhdGUgfX17eyBzaG93VmVyc2lvbiA/IGFwcFZlcnNpb24gOiAnJyB9fTwvZmQtc2hlbGxiYXItc3VidGl0bGU+XG4gICAgQGlmICghaGlkZVNoZWxsYmFyQWN0aW9ucyYmIHVzZXIgJiYgKHVzZXJNZW51Py5sZW5ndGggfHwgIXNldHRpbmdzPy5IaWRlTGFuZ3VhZ2UpKSB7XG4gICAgPGZkLXNoZWxsYmFyLWFjdGlvbnMgW3VzZXJdPVwidXNlclwiIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiICNsYW5nUmVmPlxuICAgICAgICBAZm9yIChhY3Rpb24gb2YgYWN0aW9uczsgdHJhY2sgYWN0aW9uKSB7XG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cbiAgICAgICAgICAgIFtnbHlwaF09XCJhY3Rpb24uSWNvblwiXG4gICAgICAgICAgICBbY2FsbGJhY2tdPVwiYWN0aW9uLkNhbGxiYWNrXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJhY3Rpb24uTGFiZWxcIlxuICAgICAgICAgICAgbm90aWZpY2F0aW9uTGFiZWw9XCJsb2dpblwiXG4gICAgICAgID5cbiAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XG4gICAgICAgIH0gQGlmIChkZXZpY2VTaXplID09PSAncycgJiYgdXNlckxvZ2dlZEluICYmICFzZXR0aW5ncz8uSGlkZU5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgW2dseXBoXT1cIidiZWxsJ1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ05vdGlmaWNhdGlvbnMnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtub3RpZmljYXRpb25Db3VudF09XCJub3RpZmljYXRpb25Db3VudC51bnJlYWQgPz8gMFwiXG4gICAgICAgICAgICBbbm90aWZpY2F0aW9uTGFiZWxdPVwiJ05vdGlmaWNhdGlvbnMnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtjYWxsYmFja109XCJvbkJlbGxOb3RpZmljYXRpb25cIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgICAgICB9IEBpZiAoIXNldHRpbmdzPy5IaWRlTm90aWZpY2F0aW9ucyAmJiB1c2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgPGZkLXBvcG92ZXJcbiAgICAgICAgICAgIFsoaXNPcGVuKV09XCJpc09wZW5Ob3RpZmljYXRvaW5cIlxuICAgICAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbbm9BcnJvd109XCJ0cnVlXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICB0aXRsZT1cIk5vdGlmaWNhdGlvbiBQb3BvdmVyXCJcbiAgICAgICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICAgICAgW21vYmlsZV09XCJkZXZpY2VTaXplID09PSAncydcIlxuICAgICAgICAgICAgI3BvcG92ZXJDb21wb25lbnRcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInYmVsbCdcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ05vdGlmaWNhdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICBbbm90aWZpY2F0aW9uQ291bnRdPVwibm90aWZpY2F0aW9uQ291bnQudW5yZWFkXCJcbiAgICAgICAgICAgICAgICAgICAgW25vdGlmaWNhdGlvbkxhYmVsXT1cIidOb3RpZmljYXRpb24gTGFiZWwnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrXT1cIm9uT3Blbk5vdGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IHN0eWxlPVwibWluLXdpZHRoOiAzMjBweDsgb3ZlcmZsb3cteDogYXV0bzsgYm94LXNoYWRvdzogdmFyKC0tc2FwQ29udGVudF9TaGFkb3cwKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub3RpZmljYXRpb25Hcm91cFRwbDsgY29udGV4dDogeyBub3RpZmljYXRpb25Db3VudDogbm90aWZpY2F0aW9uQ291bnQgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICAgICAgfSBAaWYgKCFzZXR0aW5ncz8uSGlkZUxhbmd1YWdlICYmIGRldmljZVNpemUgIT09ICdzJyAmJiBtdWx0aUxhbmd1YWdlcykge1xuICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uIFtnbHlwaF09XCInd29ybGQnXCIgW2xhYmVsXT1cIidsYW5ndWFnZSdcIiBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCIgKGNhbGxiYWNrKT1cIihvbkxhbmd1YWdlKVwiPlxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgfSBAaWYgKCFzZXR0aW5ncz8uSGlkZUxhbmd1YWdlICYmIGRldmljZVNpemUgPT09ICdzJyAmJiBtdWx0aUxhbmd1YWdlcykgeyBAZm9yIChjdWx0dXJlIG9mIGN1bHR1cmVzIHwga2V5dmFsdWU7XG4gICAgICAgIHRyYWNrIGN1bHR1cmUpIHtcbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgW2xhYmVsXT1cImN1bHR1cmUudmFsdWVcIlxuICAgICAgICAgICAgW2NhbGxiYWNrXT1cIm9uTGFuZ3VhZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdWx0dXJlLWFiYnJpdmF0aW9uXCJcbiAgICAgICAgICAgIFtnbHlwaF09XCJjdWx0dXJlLmtleVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCInZmxhZ3MnXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgfSB9IEBpZiAocHJvZHVjdFN3aXRjaGVyPy5sZW5ndGgpIHtcbiAgICAgICAgPGZkLXByb2R1Y3Qtc3dpdGNoPlxuICAgICAgICAgICAgPGZkLXByb2R1Y3Qtc3dpdGNoLWJvZHkgW3Byb2R1Y3RzXT1cInByb2R1Y3RTd2l0Y2hlclwiIFtmb3JjZUxpc3RNb2RlXT1cImRldmljZVNpemUgPT09ICdzJ1wiPlxuICAgICAgICAgICAgPC9mZC1wcm9kdWN0LXN3aXRjaC1ib2R5PlxuICAgICAgICA8L2ZkLXByb2R1Y3Qtc3dpdGNoPlxuICAgICAgICB9XG4gICAgPC9mZC1zaGVsbGJhci1hY3Rpb25zPlxuICAgIH1cbjwvZmQtc2hlbGxiYXI+XG59IEBpZihzaG93TG9naW5CdXR0b24pe1xuPGRpdlxuICAgIFtjbGFzcy5mZC1zaGVsbGJhci0teGxdPVwiaXNEZXNrdG9wXCJcbiAgICBbY2xhc3MuZmQtc2hlbGxiYXItLW1dPVwiaXNUYWJsZXRcIlxuICAgIFtjbGFzcy5mZC1zaGVsbGJhci0tc109XCJpc01vYmlsZVwiXG4gICAgY2xhc3M9XCJsb2dpbi13cmFwcGVyXCJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuPlxuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIFtsYWJlbF09XCIn2YjYsdmI2K8nIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgZ2x5cGg9XCJwZXJzb24tcGxhY2Vob2xkZXJcIlxuICAgICAgICBbcm91dGVyTGlua109XCJbJy9sb2dpbiddXCJcbiAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgPjwvYnV0dG9uPlxuPC9kaXY+XG59XG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgPGJzdS1tYXNrPjwvYnN1LW1hc2s+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2XG4gICAgY2xhc3M9XCJ0dy1maXhlZCB0dy10b3AtWzM4LjVweF0gdHctaC1bY2FsYygxMDB2aC0zOC41cHgpXSB0dy1iZy13aGl0ZSB0dy10cmFuc2l0aW9uLWFsbCB0dy16LVsxMDBdIHR3LXNoYWRvdy0yeGwgdHctb3ZlcmZsb3ctYXV0b1wiXG4gICAgW2NsYXNzLiF0dy1yaWdodC0wXT1cImlzT3BlblF1aWNrQWNjZXNzXCJcbiAgICBbbmdDbGFzc109XCJpc01vYmlsZSA/ICd0dy13LXNjcmVlbiAtdHctcmlnaHQtZnVsbCcgOiAndHctdy04MCAtdHctcmlnaHQtODAnXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiUXVpY2tBY2Nlc3NUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbkBpZihpc09wZW5RdWlja0FjY2Vzcykge1xuPGRpdlxuICAgIGNsYXNzPVwidHctZml4ZWQgdHctcmlnaHQtMCB0dy10b3AtWzM4LjVweF0gdHctaC1bY2FsYygxMDB2aC0zOC41cHgpXSB0dy1iZy1zbGF0ZS04MDAvWy41XSB0dy16LVs5MF0gdHctdy1zY3JlZW4gdHctYmFja2Ryb3AtYmx1ci1zbVwiXG4gICAgKGNsaWNrKT1cImlzT3BlblF1aWNrQWNjZXNzID0gZmFsc2VcIlxuPjwvZGl2PlxufVxuPGZkLW1lbnUgI21lbnU+XG4gICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgIEBmb3IgKGN1bHR1cmUgb2YgY3VsdHVyZXMgfCBrZXl2YWx1ZTsgdHJhY2sgY3VsdHVyZSkge1xuICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZS52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHdpZHRoPVwiMTRweFwiIGhlaWdodD1cIjEycHhcIiBbc3JjXT1cIicvYXNzZXRzL2ZsYWdzLycgKyBjdWx0dXJlLmtleSArICcucG5nJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3VsdHVyZS1hYmJyaXZhdGlvblwiIFtuZ0NsYXNzXT1cImN1bHR1cmUua2V5XCI+IHt7IGN1bHR1cmUua2V5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgIDwvdWw+XG48L2ZkLW1lbnU+XG48bmctdGVtcGxhdGUgI25vdGlmaWNhdGlvbkdyb3VwVHBsIGxldC1ub3RpZmljYXRpb25Db3VudD1cIm5vdGlmaWNhdGlvbkNvdW50XCI+XG4gICAgQGlmICghbm90aWZjYXRpb25Mb2FkZWQgJiYgbm90aWZpY2F0aW9uTG9hZGluZyA9PT0gdHJ1ZSkge1xuICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMTAwcHhcIj5cbiAgICAgICAgPGJzdS1tYXNrIHNpemU9XCJzXCI+PC9ic3UtbWFzaz5cbiAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGJ0LW5vdGlmaWNhdGlvbi1ncm91cFxuICAgICAgICBbbm90aWZpY2F0aW9uc109XCJub3RpZmljYXRpb25zXCJcbiAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50XCJcbiAgICAgICAgW2xvYWRpbmddPVwibm90aWZpY2F0aW9uTG9hZGluZyA9PT0gdHJ1ZVwiXG4gICAgICAgICh2aWV3ZWQpPVwib25Ob3RpZmljYXRpb25JdGVtVmlld2VkKCRldmVudClcIlxuICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlTm90aWZpY2F0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgKHNob3dFdmVudCk9XCJwb3BvdmVyQ29tcG9uZW50LmNsb3NlKCk7IG9uU2hvd05vdGlmaWNhdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cInBvcG92ZXJDb21wb25lbnQuY2xvc2UoKTsgb25Ob3RpZmljYXRpb25BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgIChsb2FkTW9yZSk9XCJvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKClcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICA+PC9idC1ub3RpZmljYXRpb24tZ3JvdXA+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNRdWlja0FjY2Vzc1RlbXBsYXRlPlxuICAgIEBpZiAoIW5vdGlmY2F0aW9uTG9hZGVkICYmIG5vdGlmaWNhdGlvbkxvYWRpbmcgPT09IHRydWUpIHtcbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4XCI+XG4gICAgICAgIDxic3UtbWFzayBzaXplPVwic1wiPjwvYnN1LW1hc2s+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxidC1wb3BvdmVyLWFwcC1maW5kZXIgKGNsb3NlTWVudSk9XCJpc09wZW5RdWlja0FjY2VzcyA9IGZhbHNlXCI+PC9idC1wb3BvdmVyLWFwcC1maW5kZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LWRpYWxvZyBsZXQtZGlhbG9nQ29uZmlnPVwiZGlhbG9nQ29uZmlnXCIgI25vdGlmaWNhdGlvbnNEaWFsb2c+XG4gICAgPGZkLWRpYWxvZyBbZGlhbG9nQ29uZmlnXT1cImRpYWxvZ0NvbmZpZ1wiIFtkaWFsb2dSZWZdPVwiZGlhbG9nXCI+XG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICAgICAgPGgxIGlkPVwiZmQtZGlhbG9nLWhlYWRlci0xMFwiIGZkLXRpdGxlPnt7ICdOb3RpZmljYXRpb24nIHwgYmJiVHJhbnNsYXRlIH19PC9oMT5cbiAgICAgICAgICAgIDxidXR0b24gZmQtZGlhbG9nLWNsb3NlLWJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nLmRpc21pc3MoKVwiPjwvYnV0dG9uPlxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxmZC1kaWFsb2ctYm9keSBjbGFzcz1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm90aWZpY2F0aW9uR3JvdXBUcGw7IGNvbnRleHQ6IHsgbm90aWZpY2F0aW9uQ291bnQ6IG5vdGlmaWNhdGlvbkNvdW50IH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -6,6 +6,36 @@ import * as i2 from "../tile/tile.component";
6
6
  import * as i3 from "barsa-sap-ui";
7
7
  import * as i4 from "../pipes/tile-prop.pipe";
8
8
  export class NumericTileComponent extends BaseBtTileComponent {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.kpiStateIsColor = false;
12
+ this.scalseStateIsColor = false;
13
+ }
14
+ ngOnInit() {
15
+ super.ngOnInit();
16
+ switch (this.kpiState) {
17
+ case 'positive':
18
+ case 'negative':
19
+ case 'informative':
20
+ case 'critical':
21
+ case 'neutral':
22
+ break;
23
+ default:
24
+ this.kpiStateIsColor = this.kpiState !== '';
25
+ break;
26
+ }
27
+ switch (this.scaleState) {
28
+ case 'positive':
29
+ case 'negative':
30
+ case 'informative':
31
+ case 'critical':
32
+ case 'neutral':
33
+ break;
34
+ default:
35
+ this.scalseStateIsColor = this.scaleState !== '';
36
+ break;
37
+ }
38
+ }
9
39
  get launchIcon() {
10
40
  return this.settings.LaunchIcon;
11
41
  }
@@ -25,10 +55,10 @@ export class NumericTileComponent extends BaseBtTileComponent {
25
55
  return this.settings.ScaleArrowIcon;
26
56
  }
27
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NumericTileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: NumericTileComponent, selector: "bt-numeric-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\n [data]=\"data\"\n [type]=\"'launch'\"\n [edit]=\"edit\"\n [backColor]=\"backColor\"\n [title]=\"data | tileProp: 'Title':parameters\"\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\n [footer]=\"data | tileProp: 'Footer':parameters\"\n (hideClick)=\"hideClick.emit()\"\n (renameClick)=\"renameClick.emit()\"\n (click)=\"onTileClick()\"\n>\n <div fd-tile-content>\n <div fd-numeric-content>\n <div fd-numeric-content-launch-icon-container>\n <i fd-numeric-content-launch-icon [glyph]=\"launchIcon\" [class]=\"launchIcon | sapFontClass\"></i>\n </div>\n <div fd-numeric-content-kpi-container>\n <div fd-numeric-content-kpi [state]=\"kpiState\">{{ kpi }}</div>\n </div>\n <div fd-numeric-content-scale-container style=\"padding-top: 0.2rem\">\n <div fd-numeric-content-scale [state]=\"scaleState\">\n <span\n fd-numeric-content-scale-arrow\n [glyph]=\"scaleArrowIcon\"\n [class]=\"scaleArrowIcon | sapFontClass\"\n ></span>\n <span fd-numeric-content-scale-text>{{ scaleText }}</span>\n </div>\n </div>\n </div>\n </div>\n</bt-tile>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "directive", type: i1.NumericContentDirective, selector: "[fd-numeric-content]", inputs: ["class", "size"] }, { kind: "directive", type: i1.NumericContentKpiContainerDirective, selector: "[fd-numeric-content-kpi-container]" }, { kind: "directive", type: i1.NumericContentKpiDirective, selector: "[fd-numeric-content-kpi]", inputs: ["state", "class", "glyph"] }, { kind: "directive", type: i1.NumericContentLaunchIconContainerDirective, selector: "[fd-numeric-content-launch-icon-container]" }, { kind: "directive", type: i1.NumericContentLaunchIconDirective, selector: "[fd-numeric-content-launch-icon]", inputs: ["class", "glyph", "glyphFont"] }, { kind: "directive", type: i1.NumericContentScaleArrowDirective, selector: "[fd-numeric-content-scale-arrow]", inputs: ["class", "glyph", "glyphFont"] }, { kind: "directive", type: i1.NumericContentScaleContainerDirective, selector: "[fd-numeric-content-scale-container]" }, { kind: "directive", type: i1.NumericContentScaleDirective, selector: "[fd-numeric-content-scale]", inputs: ["state", "class"] }, { kind: "directive", type: i1.NumericContentScaleTextDirective, selector: "[fd-numeric-content-scale-text]" }, { kind: "component", type: i2.TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "disableClick", "title", "icon", "subtitle", "isDouble", "edit", "backColor", "dynamicCommand"] }, { kind: "pipe", type: i3.SapFontClassPipe, name: "sapFontClass" }, { kind: "pipe", type: i4.TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: NumericTileComponent, selector: "bt-numeric-tile", usesInheritance: true, ngImport: i0, template: "<bt-tile\n [data]=\"data\"\n [type]=\"'launch'\"\n [edit]=\"edit\"\n [backColor]=\"backColor\"\n [title]=\"data | tileProp: 'Title':parameters\"\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\n [footer]=\"data | tileProp: 'Footer':parameters\"\n (hideClick)=\"hideClick.emit()\"\n (renameClick)=\"renameClick.emit()\"\n (click)=\"onTileClick()\"\n>\n <div fd-tile-content>\n <div fd-numeric-content>\n <div fd-numeric-content-launch-icon-container>\n <i fd-numeric-content-launch-icon [glyph]=\"launchIcon\" [class]=\"launchIcon | sapFontClass\"></i>\n </div>\n <div fd-numeric-content-kpi-container>\n <div fd-numeric-content-kpi [state]=\"kpiState\" [style.color]=\"kpiStateIsColor ? kpiState : null\">\n {{ kpi }}\n </div>\n </div>\n <div fd-numeric-content-scale-container style=\"padding-top: 0.2rem\">\n <div\n fd-numeric-content-scale\n [state]=\"scaleState\"\n [style.color]=\"scalseStateIsColor ? scaleState : null\"\n >\n <span\n fd-numeric-content-scale-arrow\n [glyph]=\"scaleArrowIcon\"\n [class]=\"scaleArrowIcon | sapFontClass\"\n [style.color]=\"scalseStateIsColor ? scaleState : null\"\n ></span>\n <span fd-numeric-content-scale-text [style.color]=\"scalseStateIsColor ? scaleState : null\">{{\n scaleText\n }}</span>\n </div>\n </div>\n </div>\n </div>\n</bt-tile>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.TileContentDirective, selector: "[fdTileContent], [fd-tile-content]", inputs: ["twoColumn"] }, { kind: "directive", type: i1.NumericContentDirective, selector: "[fd-numeric-content]", inputs: ["class", "size"] }, { kind: "directive", type: i1.NumericContentKpiContainerDirective, selector: "[fd-numeric-content-kpi-container]" }, { kind: "directive", type: i1.NumericContentKpiDirective, selector: "[fd-numeric-content-kpi]", inputs: ["state", "class", "glyph"] }, { kind: "directive", type: i1.NumericContentLaunchIconContainerDirective, selector: "[fd-numeric-content-launch-icon-container]" }, { kind: "directive", type: i1.NumericContentLaunchIconDirective, selector: "[fd-numeric-content-launch-icon]", inputs: ["class", "glyph", "glyphFont"] }, { kind: "directive", type: i1.NumericContentScaleArrowDirective, selector: "[fd-numeric-content-scale-arrow]", inputs: ["class", "glyph", "glyphFont"] }, { kind: "directive", type: i1.NumericContentScaleContainerDirective, selector: "[fd-numeric-content-scale-container]" }, { kind: "directive", type: i1.NumericContentScaleDirective, selector: "[fd-numeric-content-scale]", inputs: ["state", "class"] }, { kind: "directive", type: i1.NumericContentScaleTextDirective, selector: "[fd-numeric-content-scale-text]" }, { kind: "component", type: i2.TileComponent, selector: "bt-tile", inputs: ["type", "footerTemplate", "footer", "disableClick", "title", "icon", "subtitle", "isDouble", "edit", "backColor", "dynamicCommand"] }, { kind: "pipe", type: i3.SapFontClassPipe, name: "sapFontClass" }, { kind: "pipe", type: i4.TilePropPipe, name: "tileProp" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
59
  }
30
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NumericTileComponent, decorators: [{
31
61
  type: Component,
32
- args: [{ selector: 'bt-numeric-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\n [data]=\"data\"\n [type]=\"'launch'\"\n [edit]=\"edit\"\n [backColor]=\"backColor\"\n [title]=\"data | tileProp: 'Title':parameters\"\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\n [footer]=\"data | tileProp: 'Footer':parameters\"\n (hideClick)=\"hideClick.emit()\"\n (renameClick)=\"renameClick.emit()\"\n (click)=\"onTileClick()\"\n>\n <div fd-tile-content>\n <div fd-numeric-content>\n <div fd-numeric-content-launch-icon-container>\n <i fd-numeric-content-launch-icon [glyph]=\"launchIcon\" [class]=\"launchIcon | sapFontClass\"></i>\n </div>\n <div fd-numeric-content-kpi-container>\n <div fd-numeric-content-kpi [state]=\"kpiState\">{{ kpi }}</div>\n </div>\n <div fd-numeric-content-scale-container style=\"padding-top: 0.2rem\">\n <div fd-numeric-content-scale [state]=\"scaleState\">\n <span\n fd-numeric-content-scale-arrow\n [glyph]=\"scaleArrowIcon\"\n [class]=\"scaleArrowIcon | sapFontClass\"\n ></span>\n <span fd-numeric-content-scale-text>{{ scaleText }}</span>\n </div>\n </div>\n </div>\n </div>\n</bt-tile>\n" }]
62
+ args: [{ selector: 'bt-numeric-tile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tile\n [data]=\"data\"\n [type]=\"'launch'\"\n [edit]=\"edit\"\n [backColor]=\"backColor\"\n [title]=\"data | tileProp: 'Title':parameters\"\n [subtitle]=\"data | tileProp: 'Subtitle':parameters\"\n [dynamicCommand]=\"data | tileProp: 'DynamicCommand':parameters\"\n [isDouble]=\"data | tileProp: 'IsDouble':parameters\"\n [footer]=\"data | tileProp: 'Footer':parameters\"\n (hideClick)=\"hideClick.emit()\"\n (renameClick)=\"renameClick.emit()\"\n (click)=\"onTileClick()\"\n>\n <div fd-tile-content>\n <div fd-numeric-content>\n <div fd-numeric-content-launch-icon-container>\n <i fd-numeric-content-launch-icon [glyph]=\"launchIcon\" [class]=\"launchIcon | sapFontClass\"></i>\n </div>\n <div fd-numeric-content-kpi-container>\n <div fd-numeric-content-kpi [state]=\"kpiState\" [style.color]=\"kpiStateIsColor ? kpiState : null\">\n {{ kpi }}\n </div>\n </div>\n <div fd-numeric-content-scale-container style=\"padding-top: 0.2rem\">\n <div\n fd-numeric-content-scale\n [state]=\"scaleState\"\n [style.color]=\"scalseStateIsColor ? scaleState : null\"\n >\n <span\n fd-numeric-content-scale-arrow\n [glyph]=\"scaleArrowIcon\"\n [class]=\"scaleArrowIcon | sapFontClass\"\n [style.color]=\"scalseStateIsColor ? scaleState : null\"\n ></span>\n <span fd-numeric-content-scale-text [style.color]=\"scalseStateIsColor ? scaleState : null\">{{\n scaleText\n }}</span>\n </div>\n </div>\n </div>\n </div>\n</bt-tile>\n" }]
33
63
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy10aWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvbnVtZXJpYy10aWxlL251bWVyaWMtdGlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL251bWVyaWMtdGlsZS9udW1lcmljLXRpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sV0FBVyxDQUFDOzs7Ozs7QUFPcEUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUF1QztJQUM3RSxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO0lBQ3hDLENBQUM7OEdBbEJRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDhFQ1JqQyw0OENBbUNBOzsyRkQzQmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNJLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlQnRUaWxlQ29tcG9uZW50LCBOdW1lcmljVGlsZVNldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnQtbnVtZXJpYy10aWxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9udW1lcmljLXRpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbnVtZXJpYy10aWxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTnVtZXJpY1RpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQnRUaWxlQ29tcG9uZW50PE51bWVyaWNUaWxlU2V0dGluZz4ge1xyXG4gICAgZ2V0IGxhdW5jaEljb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5MYXVuY2hJY29uO1xyXG4gICAgfVxyXG4gICAgZ2V0IGtwaVN0YXRlKCk6ICdwb3NpdGl2ZScgfCAnbmVnYXRpdmUnIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5Db250ZW50S3BpU3RhdGU7XHJcbiAgICB9XHJcbiAgICBnZXQga3BpKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuQ29udGVudEtwaTtcclxuICAgIH1cclxuICAgIGdldCBzY2FsZVN0YXRlKCk6ICdwb3NpdGl2ZScgfCAnbmVnYXRpdmUnIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5TY2FsZVN0YXRlO1xyXG4gICAgfVxyXG4gICAgZ2V0IHNjYWxlVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLlNjYWxlVGV4dDtcclxuICAgIH1cclxuICAgIGdldCBzY2FsZUFycm93SWNvbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLlNjYWxlQXJyb3dJY29uO1xyXG4gICAgfVxyXG59XHJcbiIsIjxidC10aWxlXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW3R5cGVdPVwiJ2xhdW5jaCdcIlxuICAgIFtlZGl0XT1cImVkaXRcIlxuICAgIFtiYWNrQ29sb3JdPVwiYmFja0NvbG9yXCJcbiAgICBbdGl0bGVdPVwiZGF0YSB8IHRpbGVQcm9wOiAnVGl0bGUnOnBhcmFtZXRlcnNcIlxuICAgIFtzdWJ0aXRsZV09XCJkYXRhIHwgdGlsZVByb3A6ICdTdWJ0aXRsZSc6cGFyYW1ldGVyc1wiXG4gICAgW2R5bmFtaWNDb21tYW5kXT1cImRhdGEgfCB0aWxlUHJvcDogJ0R5bmFtaWNDb21tYW5kJzpwYXJhbWV0ZXJzXCJcbiAgICBbaXNEb3VibGVdPVwiZGF0YSB8IHRpbGVQcm9wOiAnSXNEb3VibGUnOnBhcmFtZXRlcnNcIlxuICAgIFtmb290ZXJdPVwiZGF0YSB8IHRpbGVQcm9wOiAnRm9vdGVyJzpwYXJhbWV0ZXJzXCJcbiAgICAoaGlkZUNsaWNrKT1cImhpZGVDbGljay5lbWl0KClcIlxuICAgIChyZW5hbWVDbGljayk9XCJyZW5hbWVDbGljay5lbWl0KClcIlxuICAgIChjbGljayk9XCJvblRpbGVDbGljaygpXCJcbj5cbiAgICA8ZGl2IGZkLXRpbGUtY29udGVudD5cbiAgICAgICAgPGRpdiBmZC1udW1lcmljLWNvbnRlbnQ+XG4gICAgICAgICAgICA8ZGl2IGZkLW51bWVyaWMtY29udGVudC1sYXVuY2gtaWNvbi1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGkgZmQtbnVtZXJpYy1jb250ZW50LWxhdW5jaC1pY29uIFtnbHlwaF09XCJsYXVuY2hJY29uXCIgW2NsYXNzXT1cImxhdW5jaEljb24gfCBzYXBGb250Q2xhc3NcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtbnVtZXJpYy1jb250ZW50LWtwaS1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1udW1lcmljLWNvbnRlbnQta3BpIFtzdGF0ZV09XCJrcGlTdGF0ZVwiPnt7IGtwaSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLW51bWVyaWMtY29udGVudC1zY2FsZS1jb250YWluZXIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMC4ycmVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1udW1lcmljLWNvbnRlbnQtc2NhbGUgW3N0YXRlXT1cInNjYWxlU3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLW51bWVyaWMtY29udGVudC1zY2FsZS1hcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cInNjYWxlQXJyb3dJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJzY2FsZUFycm93SWNvbiB8IHNhcEZvbnRDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW51bWVyaWMtY29udGVudC1zY2FsZS10ZXh0Pnt7IHNjYWxlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvYnQtdGlsZT5cbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy10aWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvbnVtZXJpYy10aWxlL251bWVyaWMtdGlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL251bWVyaWMtdGlsZS9udW1lcmljLXRpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sV0FBVyxDQUFDOzs7Ozs7QUFRcEUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUF1QztJQU5qRjs7UUFPSSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7S0E0QzlCO0lBM0NHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsS0FBSyxVQUFVLENBQUM7WUFDaEIsS0FBSyxVQUFVLENBQUM7WUFDaEIsS0FBSyxhQUFhLENBQUM7WUFDbkIsS0FBSyxVQUFVLENBQUM7WUFDaEIsS0FBSyxTQUFTO2dCQUNWLE1BQU07WUFDVjtnQkFDSSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDO2dCQUM1QyxNQUFNO1FBQ2QsQ0FBQztRQUNELFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssYUFBYSxDQUFDO1lBQ25CLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssU0FBUztnQkFDVixNQUFNO1lBQ1Y7Z0JBQ0ksSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDO2dCQUNqRCxNQUFNO1FBQ2QsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO0lBQ3hDLENBQUM7OEdBN0NRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDhFQ1RqQywyMkRBNENBOzsyRkRuQ2Esb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNJLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUJ0VGlsZUNvbXBvbmVudCwgTnVtZXJpY1RpbGVTZXR0aW5nIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IE51bWVyaWNDb250ZW50U3RhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdidC1udW1lcmljLXRpbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9udW1lcmljLXRpbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL251bWVyaWMtdGlsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE51bWVyaWNUaWxlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUJ0VGlsZUNvbXBvbmVudDxOdW1lcmljVGlsZVNldHRpbmc+IHtcbiAgICBrcGlTdGF0ZUlzQ29sb3IgPSBmYWxzZTtcbiAgICBzY2Fsc2VTdGF0ZUlzQ29sb3IgPSBmYWxzZTtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgc3dpdGNoICh0aGlzLmtwaVN0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICdwb3NpdGl2ZSc6XG4gICAgICAgICAgICBjYXNlICduZWdhdGl2ZSc6XG4gICAgICAgICAgICBjYXNlICdpbmZvcm1hdGl2ZSc6XG4gICAgICAgICAgICBjYXNlICdjcml0aWNhbCc6XG4gICAgICAgICAgICBjYXNlICduZXV0cmFsJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5rcGlTdGF0ZUlzQ29sb3IgPSB0aGlzLmtwaVN0YXRlICE9PSAnJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuc2NhbGVTdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAncG9zaXRpdmUnOlxuICAgICAgICAgICAgY2FzZSAnbmVnYXRpdmUnOlxuICAgICAgICAgICAgY2FzZSAnaW5mb3JtYXRpdmUnOlxuICAgICAgICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICAgICAgY2FzZSAnbmV1dHJhbCc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuc2NhbHNlU3RhdGVJc0NvbG9yID0gdGhpcy5zY2FsZVN0YXRlICE9PSAnJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgbGF1bmNoSWNvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5MYXVuY2hJY29uO1xuICAgIH1cbiAgICBnZXQga3BpU3RhdGUoKTogTnVtZXJpY0NvbnRlbnRTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLkNvbnRlbnRLcGlTdGF0ZTtcbiAgICB9XG4gICAgZ2V0IGtwaSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5Db250ZW50S3BpO1xuICAgIH1cbiAgICBnZXQgc2NhbGVTdGF0ZSgpOiBOdW1lcmljQ29udGVudFN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuU2NhbGVTdGF0ZTtcbiAgICB9XG4gICAgZ2V0IHNjYWxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5TY2FsZVRleHQ7XG4gICAgfVxuICAgIGdldCBzY2FsZUFycm93SWNvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5TY2FsZUFycm93SWNvbjtcbiAgICB9XG59XG4iLCI8YnQtdGlsZVxuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIFt0eXBlXT1cIidsYXVuY2gnXCJcbiAgICBbZWRpdF09XCJlZGl0XCJcbiAgICBbYmFja0NvbG9yXT1cImJhY2tDb2xvclwiXG4gICAgW3RpdGxlXT1cImRhdGEgfCB0aWxlUHJvcDogJ1RpdGxlJzpwYXJhbWV0ZXJzXCJcbiAgICBbc3VidGl0bGVdPVwiZGF0YSB8IHRpbGVQcm9wOiAnU3VidGl0bGUnOnBhcmFtZXRlcnNcIlxuICAgIFtkeW5hbWljQ29tbWFuZF09XCJkYXRhIHwgdGlsZVByb3A6ICdEeW5hbWljQ29tbWFuZCc6cGFyYW1ldGVyc1wiXG4gICAgW2lzRG91YmxlXT1cImRhdGEgfCB0aWxlUHJvcDogJ0lzRG91YmxlJzpwYXJhbWV0ZXJzXCJcbiAgICBbZm9vdGVyXT1cImRhdGEgfCB0aWxlUHJvcDogJ0Zvb3Rlcic6cGFyYW1ldGVyc1wiXG4gICAgKGhpZGVDbGljayk9XCJoaWRlQ2xpY2suZW1pdCgpXCJcbiAgICAocmVuYW1lQ2xpY2spPVwicmVuYW1lQ2xpY2suZW1pdCgpXCJcbiAgICAoY2xpY2spPVwib25UaWxlQ2xpY2soKVwiXG4+XG4gICAgPGRpdiBmZC10aWxlLWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgZmQtbnVtZXJpYy1jb250ZW50PlxuICAgICAgICAgICAgPGRpdiBmZC1udW1lcmljLWNvbnRlbnQtbGF1bmNoLWljb24tY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxpIGZkLW51bWVyaWMtY29udGVudC1sYXVuY2gtaWNvbiBbZ2x5cGhdPVwibGF1bmNoSWNvblwiIFtjbGFzc109XCJsYXVuY2hJY29uIHwgc2FwRm9udENsYXNzXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLW51bWVyaWMtY29udGVudC1rcGktY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbnVtZXJpYy1jb250ZW50LWtwaSBbc3RhdGVdPVwia3BpU3RhdGVcIiBbc3R5bGUuY29sb3JdPVwia3BpU3RhdGVJc0NvbG9yID8ga3BpU3RhdGUgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGtwaSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLW51bWVyaWMtY29udGVudC1zY2FsZS1jb250YWluZXIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMC4ycmVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBmZC1udW1lcmljLWNvbnRlbnQtc2NhbGVcbiAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cInNjYWxlU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic2NhbHNlU3RhdGVJc0NvbG9yID8gc2NhbGVTdGF0ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLW51bWVyaWMtY29udGVudC1zY2FsZS1hcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cInNjYWxlQXJyb3dJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJzY2FsZUFycm93SWNvbiB8IHNhcEZvbnRDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic2NhbHNlU3RhdGVJc0NvbG9yID8gc2NhbGVTdGF0ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1udW1lcmljLWNvbnRlbnQtc2NhbGUtdGV4dCBbc3R5bGUuY29sb3JdPVwic2NhbHNlU3RhdGVJc0NvbG9yID8gc2NhbGVTdGF0ZSA6IG51bGxcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVUZXh0XG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9idC10aWxlPlxuIl19