@alauda-fe/common
Version:
Alauda frontend team common codes.
239 lines • 42.4 kB
JavaScript
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
import { Router } from '@angular/router';
import { get } from 'lodash-es';
import { combineLatest, map, switchMap } from 'rxjs';
import { redirectSSOEntry } from '../../../../authorization/authorization';
import { publishRef, } from '../../../../core/public-api';
import { K8sPermissionService } from '../../../../permission/k8s-permission.service';
import { ProductEntryName } from '../context.service';
import { CommonLayoutStoreService } from '../store.service';
import { ProductSelectService } from './service';
import * as i0 from "@angular/core";
import * as i1 from "../store.service";
import * as i2 from "@angular/router";
import * as i3 from "../../../../permission/k8s-permission.service";
import * as i4 from "./service";
import * as i5 from "@angular/common";
import * as i6 from "@alauda/ui";
import * as i7 from "../../../../widget/loading-mask/loading-mask.component";
import * as i8 from "../../../../translate/translate.pipe";
import * as i9 from "../../../../core/pipes/pure.pipe";
import * as i10 from "../../../../core/pipes/img-header.pipe";
const _c0 = a0 => ({ "acl-product-select--disabled": a0 });
const _c1 = a0 => ({ "menu__item--active": a0 });
const _c2 = a0 => ({ "portal--active": a0 });
function ProductSelectComponent_span_7_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "span", 6);
i0.ɵɵtext(1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵelementEnd();
} if (rf & 2) {
const productTitle_r1 = ctx.ngIf;
i0.ɵɵadvance();
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, productTitle_r1), " ");
} }
function ProductSelectComponent_ng_template_13_ng_container_1_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵelement(1, "aui-icon", 15);
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const item_r3 = i0.ɵɵnextContext().$implicit;
const ctx_r3 = i0.ɵɵnextContext(3);
i0.ɵɵadvance();
i0.ɵɵproperty("icon", "bicolor:" + ctx_r3.PRODUCT_ICON_MAP[item_r3.metadata.name]);
} }
function ProductSelectComponent_ng_template_13_ng_container_1_div_1_ng_template_4_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "img", 16);
i0.ɵɵpipe(1, "aclImageHeader");
} if (rf & 2) {
const item_r3 = i0.ɵɵnextContext().$implicit;
i0.ɵɵproperty("src", i0.ɵɵpipeBind1(1, 1, item_r3.spec.logo) || "images/product-default-logo.png", i0.ɵɵsanitizeUrl);
} }
function ProductSelectComponent_ng_template_13_ng_container_1_div_1_aui_icon_9_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "aui-icon", 17);
} }
function ProductSelectComponent_ng_template_13_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) {
const _r2 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 11);
i0.ɵɵpipe(1, "pure");
i0.ɵɵlistener("click", function ProductSelectComponent_ng_template_13_ng_container_1_div_1_Template_div_click_0_listener($event) { const item_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.navigateToProduct(item_r3, $event)); });
i0.ɵɵelementStart(2, "div", 12);
i0.ɵɵtemplate(3, ProductSelectComponent_ng_template_13_ng_container_1_div_1_ng_container_3_Template, 2, 1, "ng-container", 8)(4, ProductSelectComponent_ng_template_13_ng_container_1_div_1_ng_template_4_Template, 2, 3, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(6, "div", 13);
i0.ɵɵtext(7);
i0.ɵɵpipe(8, "translate");
i0.ɵɵelementEnd();
i0.ɵɵtemplate(9, ProductSelectComponent_ng_template_13_ng_container_1_div_1_aui_icon_9_Template, 1, 0, "aui-icon", 14);
i0.ɵɵpipe(10, "pure");
i0.ɵɵelementEnd();
} if (rf & 2) {
const item_r3 = ctx.$implicit;
const logo_r5 = i0.ɵɵreference(5);
const ctx_r3 = i0.ɵɵnextContext(3);
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(15, _c1, i0.ɵɵpipeBind3(1, 5, item_r3, ctx_r3.isProductActive, ctx_r3.current)));
i0.ɵɵadvance(3);
i0.ɵɵproperty("ngIf", item_r3.spec.packType !== "Integrated" && !item_r3.spec.logo)("ngIfElse", logo_r5);
i0.ɵɵadvance(4);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 9, item_r3.spec.displayName), " ");
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind3(10, 11, item_r3, ctx_r3.isProductActive, ctx_r3.current));
} }
function ProductSelectComponent_ng_template_13_ng_container_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵtemplate(1, ProductSelectComponent_ng_template_13_ng_container_1_div_1_Template, 11, 17, "div", 10);
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const products_r6 = ctx.ngIf;
const ctx_r3 = i0.ɵɵnextContext(2);
i0.ɵɵadvance();
i0.ɵɵproperty("ngForOf", products_r6)("ngForTrackBy", ctx_r3.trackFn);
} }
function ProductSelectComponent_ng_template_13_div_3_Template(rf, ctx) { if (rf & 1) {
const _r7 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
i0.ɵɵlistener("click", function ProductSelectComponent_ng_template_13_div_3_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.navigateToPortal($event)); });
i0.ɵɵelement(2, "aui-icon", 20);
i0.ɵɵtext(3);
i0.ɵɵpipe(4, "translate");
i0.ɵɵelementEnd()();
} if (rf & 2) {
const portalMenu_r8 = ctx.ngIf;
const ctx_r3 = i0.ɵɵnextContext(2);
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c2, ctx_r3.isPortal));
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 2, portalMenu_r8.spec.displayName), " ");
} }
function ProductSelectComponent_ng_template_13_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 7);
i0.ɵɵtemplate(1, ProductSelectComponent_ng_template_13_ng_container_1_Template, 2, 2, "ng-container", 8);
i0.ɵɵpipe(2, "async");
i0.ɵɵelementEnd();
i0.ɵɵtemplate(3, ProductSelectComponent_ng_template_13_div_3_Template, 5, 6, "div", 9);
i0.ɵɵpipe(4, "async");
} if (rf & 2) {
const ctx_r3 = i0.ɵɵnextContext();
const loading_r9 = i0.ɵɵreference(16);
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 3, ctx_r3.selectableProducts$))("ngIfElse", loading_r9);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(4, 5, ctx_r3.portalProduct$));
} }
function ProductSelectComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "acl-loading-mask", 21);
} if (rf & 2) {
i0.ɵɵproperty("loading", true);
} }
const VIEW = {
type: 'views',
apiGroup: 'auth.alauda.io',
};
const PREFIX = 'console-';
export const PRODUCT_ICON_MAP = {
'console-acp': 'acp',
'console-asm': 'asm',
'console-devops': 'devops',
// console-e-aam prefix 为了兼容默认排序,等后续排序方案出来可以改成console-aam
'console-e-aam': 'app_store',
'console-security': 'bug_search',
'console-platform': 'platform_management',
'console-project': 'project_management',
'console-dataservices': 'data_services',
'console-cec': 'cloud_edge_collaboration',
};
export class ProductSelectComponent {
constructor(store, router, k8sPermission, productSelectService) {
this.store = store;
this.router = router;
this.k8sPermission = k8sPermission;
this.productSelectService = productSelectService;
this.PRODUCT_ICON_MAP = PRODUCT_ICON_MAP;
this.allProducts$ = combineLatest([
this.productSelectService.reload$.pipe(switchMap(() => this.store.selectAllProducts())),
this.k8sPermission.isAllowed({
type: VIEW,
name: ['platformview', 'projectview'],
}),
]).pipe(map(([products, [consolePlatform, consoleProject]]) => {
const permissions = {
'console-platform': consolePlatform,
'console-project': consoleProject,
};
return products.filter(p => permissions[p.metadata.name] ?? true);
}), publishRef());
this.selectableProducts$ = this.allProducts$.pipe(map(products => (products || []).filter(product => !this.isPortalProduct(product) &&
(!product.status || product.status.hiddenOnPortal !== true))), publishRef());
this.portalProduct$ = this.allProducts$.pipe(map(res => res.find(p => this.isPortalProduct(p))), publishRef());
this.disabled$ = this.selectableProducts$.pipe(map(products => !products.length), publishRef());
this.isPortal = false;
this.trackFn = (_, item) => item.metadata.name;
this.getProductTitle = (products, title, current) => title ||
get((products || []).find(p => this.isProductActive(p, current)), ['spec', 'displayName']);
}
ngOnInit() {
this.isPortal = this.router.url.startsWith('/portal');
}
jump(entrypoint, ssoEnabled, target = '_self') {
window.open(ssoEnabled ? redirectSSOEntry(entrypoint) : entrypoint, target);
}
navigateToPortal(event) {
event.stopPropagation();
event.preventDefault();
window.open('/console-portal', '_self');
}
navigateToProduct(item, event) {
event.stopPropagation();
if (this.isProductActive(item, this.current)) {
return;
}
if (item.spec.packType === 'Integrated') {
this.jump(item.spec.entrypoint, item.spec.ssoEnabled, '_blank');
}
else {
this.jump(item.spec.entrypoint, false);
}
}
isProductActive(item, current) {
return (current &&
item.metadata.name ===
(current.startsWith(PREFIX) ? current : PREFIX + current));
}
isPortalProduct(item) {
return item.metadata.name === 'console-portal';
}
static { this.ɵfac = function ProductSelectComponent_Factory(t) { return new (t || ProductSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.K8sPermissionService), i0.ɵɵdirectiveInject(i4.ProductSelectService)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProductSelectComponent, selectors: [["acl-product-select"]], inputs: { current: "current", title: "title" }, decls: 17, vars: 36, consts: [["menu", ""], ["loading", ""], ["logo", ""], ["auiTooltipType", "plain", "auiTooltipTrigger", "click", "auiTooltipPosition", "bottom start", "auiTooltipClass", "aui-product-select-tooltip", 1, "acl-product-select", 3, "auiTooltip", "auiTooltipHideOnClick", "disabled", "title", "ngClass"], ["class", "acl-product-select__title", 4, "ngIf"], ["icon", "menu_dot_s", "size", "16px", "auiTooltipPosition", "bottom start", 3, "auiTooltip", "auiTooltipDisabled"], [1, "acl-product-select__title"], [1, "menu"], [4, "ngIf", "ngIfElse"], ["class", "portal", 3, "ngClass", 4, "ngIf"], ["class", "menu__item", 3, "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "menu__item", 3, "click", "ngClass"], [1, "menu__item-icon"], [1, "menu__item-info"], ["class", "check-triangle-badge", "icon", "check", 4, "ngIf"], [1, "acl-colorful-icon", 3, "icon"], [1, "default", 3, "src"], ["icon", "check", 1, "check-triangle-badge"], [1, "portal", 3, "ngClass"], [1, "portal__item", 3, "click"], ["icon", "home_s"], [2, "height", "148px", 3, "loading"]], template: function ProductSelectComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "button", 3);
i0.ɵɵpipe(1, "async");
i0.ɵɵpipe(2, "async");
i0.ɵɵpipe(3, "async");
i0.ɵɵpipe(4, "pure");
i0.ɵɵpipe(5, "translate");
i0.ɵɵpipe(6, "async");
i0.ɵɵtemplate(7, ProductSelectComponent_span_7_Template, 3, 3, "span", 4);
i0.ɵɵpipe(8, "async");
i0.ɵɵpipe(9, "pure");
i0.ɵɵelement(10, "aui-icon", 5);
i0.ɵɵpipe(11, "translate");
i0.ɵɵpipe(12, "async");
i0.ɵɵelementEnd();
i0.ɵɵtemplate(13, ProductSelectComponent_ng_template_13_Template, 5, 7, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(15, ProductSelectComponent_ng_template_15_Template, 1, 1, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
} if (rf & 2) {
const menu_r10 = i0.ɵɵreference(14);
i0.ɵɵproperty("auiTooltip", menu_r10)("auiTooltipHideOnClick", true)("disabled", i0.ɵɵpipeBind1(1, 8, ctx.disabled$))("title", i0.ɵɵpipeBind1(2, 10, ctx.disabled$) ? "" : i0.ɵɵpipeBind1(5, 19, i0.ɵɵpipeBind4(4, 14, i0.ɵɵpipeBind1(3, 12, ctx.allProducts$), ctx.getProductTitle, ctx.title, ctx.current)))("ngClass", i0.ɵɵpureFunction1(34, _c0, i0.ɵɵpipeBind1(6, 21, ctx.disabled$)));
i0.ɵɵadvance(7);
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind4(9, 25, i0.ɵɵpipeBind1(8, 23, ctx.allProducts$), ctx.getProductTitle, ctx.title, ctx.current));
i0.ɵɵadvance(3);
i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(11, 30, "no_product_and_contact_admin"))("auiTooltipDisabled", !i0.ɵɵpipeBind1(12, 32, ctx.disabled$));
} }, dependencies: [i5.NgClass, i5.NgForOf, i5.NgIf, i6.IconComponent, i6.TooltipDirective, i7.LoadingMaskComponent, i5.AsyncPipe, i8.TranslatePipe, i9.PurePipe, i10.ImgHeaderPipe], styles: [".aui-product-select-tooltip.aui-tooltip{margin-top:calc((var(--acl-page-header-height) - 32px) / 2 + 4px);background-color:rgb(var(--aui-color-n-10));padding:20px 20px 12px;border-radius:var(--aui-border-radius-l)}.portal[_ngcontent-%COMP%]{display:flex;justify-content:flex-end}.portal__item[_ngcontent-%COMP%]{display:flex;align-items:center;height:26px;padding:0 8px;font-size:var(--aui-font-size-l);font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-primary));border-radius:var(--aui-border-radius-m);cursor:pointer}.portal__item[_ngcontent-%COMP%]:hover{color:rgb(var(--aui-color-p-1))}.portal[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{font-size:var(--aui-icon-size-l);margin-right:8px}.acl-product-select[_ngcontent-%COMP%]{width:100%;min-height:32px;border-radius:2px;border:none;background:none;padding:4px 8px;cursor:pointer;outline:none;display:flex;align-items:center}.acl-product-select__title[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acl-product-select--disabled[_ngcontent-%COMP%]{opacity:.3;cursor:default}.acl-product-select[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-right:8px;height:24px;line-height:24px;font-size:18px;font-weight:var(--aui-font-weight-bolder);color:var(--acl-page-header-title-color);white-space:nowrap;word-break:keep-all}.acl-product-select[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{height:16px;color:rgb(var(--aui-color-n-4))}.acl-product-select.isActive[_ngcontent-%COMP%], .acl-product-select[_ngcontent-%COMP%]:not(.acl-product-select--disabled):hover{background-color:rgb(var(--aui-color-primary))}.acl-product-select.isActive[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%], .acl-product-select.isActive[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .acl-product-select[_ngcontent-%COMP%]:not(.acl-product-select--disabled):hover aui-icon[_ngcontent-%COMP%], .acl-product-select[_ngcontent-%COMP%]:not(.acl-product-select--disabled):hover span[_ngcontent-%COMP%]{color:#fff} .acl-product-select__menu .aui-menu{padding:0;max-width:unset}.menu[_ngcontent-%COMP%]{margin-bottom:8px;margin-right:-12px;display:flex;flex-flow:column wrap;max-height:360px}.menu__item[_ngcontent-%COMP%]{margin-bottom:12px;margin-right:12px;width:300px;height:48px;display:flex;align-items:center;position:relative;border-radius:var(--aui-border-radius-l);padding:0 20px;background-color:rgb(var(--aui-color-n-9));cursor:pointer}.menu__item[_ngcontent-%COMP%]:hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active){position:relative}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active):hover:after{box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-9)),0 0 8px rgba(var(--aui-color-primary),.5)!important}.menu__item-icon[_ngcontent-%COMP%]{height:24px;width:24px;font-size:24px;margin-right:8px;display:flex;justify-content:center;align-items:center;color:rgb(var(--aui-color-primary))}.menu__item-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{display:block;width:24px}.menu__item-icon[_ngcontent-%COMP%] img.activated[_ngcontent-%COMP%]{display:none}.menu__item-info[_ngcontent-%COMP%]{min-width:0;font-size:16px;color:rgb(var(--aui-color-n-1));text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.menu__item--active[_ngcontent-%COMP%]{border:1px solid rgb(var(--aui-color-primary));position:relative;cursor:default}.menu__item--active[_ngcontent-%COMP%]:hover{box-shadow:none}.menu__item--active[_ngcontent-%COMP%] .check-triangle-badge[_ngcontent-%COMP%]{right:0;bottom:0;border-bottom-right-radius:var(--aui-border-radius-m);color:#fff;background-image:linear-gradient(to bottom right,transparent 50%,rgb(var(--aui-color-primary)) 50%)}acl-loading-mask[_ngcontent-%COMP%]{height:148px;width:800px;display:flex;align-items:center;justify-content:center}"], changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProductSelectComponent, [{
type: Component,
args: [{ selector: 'acl-product-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"acl-product-select\"\n [auiTooltip]=\"menu\"\n auiTooltipType=\"plain\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipClass=\"aui-product-select-tooltip\"\n [auiTooltipHideOnClick]=\"true\"\n [disabled]=\"disabled$ | async\"\n [title]=\"\n (disabled$ | async)\n ? ''\n : (allProducts$\n | async\n | pure: getProductTitle : title : current\n | translate)\n \"\n [ngClass]=\"{ 'acl-product-select--disabled': disabled$ | async }\"\n>\n <span\n *ngIf=\"\n allProducts$\n | async\n | pure: getProductTitle : title : current as productTitle\n \"\n class=\"acl-product-select__title\"\n >\n {{ productTitle | translate }}\n </span>\n <aui-icon\n icon=\"menu_dot_s\"\n size=\"16px\"\n [auiTooltip]=\"'no_product_and_contact_admin' | translate\"\n [auiTooltipDisabled]=\"!(disabled$ | async)\"\n auiTooltipPosition=\"bottom start\"\n ></aui-icon>\n</button>\n<ng-template #menu>\n <div class=\"menu\">\n <ng-container *ngIf=\"selectableProducts$ | async as products; else loading\">\n <div\n class=\"menu__item\"\n [ngClass]=\"{\n 'menu__item--active': item | pure: isProductActive : current,\n }\"\n *ngFor=\"let item of products; trackBy: trackFn\"\n (click)=\"navigateToProduct(item, $event)\"\n >\n <div class=\"menu__item-icon\">\n <ng-container\n *ngIf=\"\n item.spec.packType !== 'Integrated' && !item.spec.logo;\n else logo\n \"\n >\n <aui-icon\n class=\"acl-colorful-icon\"\n [icon]=\"'bicolor:' + PRODUCT_ICON_MAP[item.metadata.name]\"\n ></aui-icon>\n </ng-container>\n <ng-template #logo>\n <img\n [src]=\"\n (item.spec.logo | aclImageHeader) ||\n 'images/product-default-logo.png'\n \"\n class=\"default\"\n />\n </ng-template>\n </div>\n <div class=\"menu__item-info\">\n {{ item.spec.displayName | translate }}\n </div>\n <aui-icon\n *ngIf=\"item | pure: isProductActive : current\"\n class=\"check-triangle-badge\"\n icon=\"check\"\n ></aui-icon>\n </div>\n </ng-container>\n </div>\n <div\n *ngIf=\"portalProduct$ | async as portalMenu\"\n class=\"portal\"\n [ngClass]=\"{ 'portal--active': isPortal }\"\n >\n <div\n class=\"portal__item\"\n (click)=\"navigateToPortal($event)\"\n >\n <aui-icon icon=\"home_s\"></aui-icon>\n {{ portalMenu.spec.displayName | translate }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <acl-loading-mask\n style=\"height: 148px\"\n [loading]=\"true\"\n ></acl-loading-mask>\n</ng-template>\n", styles: ["::ng-deep .aui-product-select-tooltip.aui-tooltip{margin-top:calc((var(--acl-page-header-height) - 32px) / 2 + 4px);background-color:rgb(var(--aui-color-n-10));padding:20px 20px 12px;border-radius:var(--aui-border-radius-l)}.portal{display:flex;justify-content:flex-end}.portal__item{display:flex;align-items:center;height:26px;padding:0 8px;font-size:var(--aui-font-size-l);font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-primary));border-radius:var(--aui-border-radius-m);cursor:pointer}.portal__item:hover{color:rgb(var(--aui-color-p-1))}.portal aui-icon{font-size:var(--aui-icon-size-l);margin-right:8px}.acl-product-select{width:100%;min-height:32px;border-radius:2px;border:none;background:none;padding:4px 8px;cursor:pointer;outline:none;display:flex;align-items:center}.acl-product-select__title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acl-product-select--disabled{opacity:.3;cursor:default}.acl-product-select span{margin-right:8px;height:24px;line-height:24px;font-size:18px;font-weight:var(--aui-font-weight-bolder);color:var(--acl-page-header-title-color);white-space:nowrap;word-break:keep-all}.acl-product-select aui-icon{height:16px;color:rgb(var(--aui-color-n-4))}.acl-product-select.isActive,.acl-product-select:not(.acl-product-select--disabled):hover{background-color:rgb(var(--aui-color-primary))}.acl-product-select.isActive aui-icon,.acl-product-select.isActive span,.acl-product-select:not(.acl-product-select--disabled):hover aui-icon,.acl-product-select:not(.acl-product-select--disabled):hover span{color:#fff}::ng-deep .acl-product-select__menu .aui-menu{padding:0;max-width:unset}.menu{margin-bottom:8px;margin-right:-12px;display:flex;flex-flow:column wrap;max-height:360px}.menu__item{margin-bottom:12px;margin-right:12px;width:300px;height:48px;display:flex;align-items:center;position:relative;border-radius:var(--aui-border-radius-l);padding:0 20px;background-color:rgb(var(--aui-color-n-9));cursor:pointer}.menu__item:hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active){position:relative}.menu__item:not(.menu__item--active):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.menu__item:not(.menu__item--active).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.menu__item:not(.menu__item--active):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):hover:after{box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-9)),0 0 8px rgba(var(--aui-color-primary),.5)!important}.menu__item-icon{height:24px;width:24px;font-size:24px;margin-right:8px;display:flex;justify-content:center;align-items:center;color:rgb(var(--aui-color-primary))}.menu__item-icon img{display:block;width:24px}.menu__item-icon img.activated{display:none}.menu__item-info{min-width:0;font-size:16px;color:rgb(var(--aui-color-n-1));text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.menu__item--active{border:1px solid rgb(var(--aui-color-primary));position:relative;cursor:default}.menu__item--active:hover{box-shadow:none}.menu__item--active .check-triangle-badge{right:0;bottom:0;border-bottom-right-radius:var(--aui-border-radius-m);color:#fff;background-image:linear-gradient(to bottom right,transparent 50%,rgb(var(--aui-color-primary)) 50%)}acl-loading-mask{height:148px;width:800px;display:flex;align-items:center;justify-content:center}\n"] }]
}], () => [{ type: i1.CommonLayoutStoreService }, { type: i2.Router }, { type: i3.K8sPermissionService }, { type: i4.ProductSelectService }], { current: [{
type: Input
}], title: [{
type: Input
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProductSelectComponent, { className: "ProductSelectComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9wcm9kdWN0LXNlbGVjdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9jb21tb24tbGF5b3V0L3Byb2R1Y3Qtc2VsZWN0L2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztJQ0QvQywrQkFPQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU87OztJQURMLGNBQ0Y7SUFERSxzRUFDRjs7O0lBcUJRLDZCQUtDO0lBQ0MsK0JBR1k7Ozs7O0lBRFYsY0FBMEQ7SUFBMUQs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SUFJRCxlQUFlLENBQUMsSUFBa0IsRUFBRSxPQUF5QjtRQUMzRCxPQUFPLENBQ0wsT0FBTztZQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQztJQUNqRCxDQUFDO3VGQWhHVSxzQkFBc0I7b0VBQXRCLHNCQUFzQjtZQ2hEbkMsaUNBa0JDOzs7Ozs7O1lBQ0MseUVBT0M7OztZQUdELCtCQU1ZOzs7WUFDZCxpQkFBUztZQTREVCxBQTNEQSwwSEFBbUIsNkdBMkRHOzs7WUEvRXBCLEFBUkEsQUFEQSxBQURBLEFBTEEscUNBQW1CLCtCQUtXLGlEQUNBLHlMQVE3Qiw4RUFDZ0U7WUFHOUQsZUFHb0Q7WUFIcEQsa0lBR29EO1lBU3JELGVBQXlEO1lBQ3pELEFBREEsbUZBQXlELDhEQUNkOzs7aUZEZWxDLHNCQUFzQjtjQU5sQyxTQUFTOzJCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNO29KQUkvQyxPQUFPO2tCQUROLEtBQUs7WUFJTixLQUFLO2tCQURKLEtBQUs7O2tGQUpLLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyByZWRpcmVjdFNTT0VudHJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vYXV0aG9yaXphdGlvbi9hdXRob3JpemF0aW9uJztcbmltcG9ydCB7XG4gIFN0cmluZ01hcCxcbiAgUHJvZHVjdEVudHJ5LFxuICBwdWJsaXNoUmVmLFxufSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgSzhzUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9wZXJtaXNzaW9uL2s4cy1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdEVudHJ5TmFtZSB9IGZyb20gJy4uL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25MYXlvdXRTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUHJvZHVjdFNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UnO1xuXG5jb25zdCBWSUVXID0ge1xuICB0eXBlOiAndmlld3MnLFxuICBhcGlHcm91cDogJ2F1dGguYWxhdWRhLmlvJyxcbn07XG5cbmNvbnN0IFBSRUZJWCA9ICdjb25zb2xlLSc7XG5cbmV4cG9ydCBjb25zdCBQUk9EVUNUX0lDT05fTUFQOiBTdHJpbmdNYXAgPSB7XG4gICdjb25zb2xlLWFjcCc6ICdhY3AnLFxuICAnY29uc29sZS1hc20nOiAnYXNtJyxcbiAgJ2NvbnNvbGUtZGV2b3BzJzogJ2Rldm9wcycsXG4gIC8vIGNvbnNvbGUtZS1hYW0gcHJlZml4IOS4uuS6huWFvOWuuem7mOiupOaOkuW6j++8jOetieWQjue7reaOkuW6j+aWueahiOWHuuadpeWPr+S7peaUueaIkGNvbnNvbGUtYWFtXG4gICdjb25zb2xlLWUtYWFtJzogJ2FwcF9zdG9yZScsXG4gICdjb25zb2xlLXNlY3VyaXR5JzogJ2J1Z19zZWFyY2gnLFxuICAnY29uc29sZS1wbGF0Zm9ybSc6ICdwbGF0Zm9ybV9tYW5hZ2VtZW50JyxcbiAgJ2NvbnNvbGUtcHJvamVjdCc6ICdwcm9qZWN0X21hbmFnZW1lbnQnLFxuICAnY29uc29sZS1kYXRhc2VydmljZXMnOiAnZGF0YV9zZXJ2aWNlcycsXG4gICdjb25zb2xlLWNlYyc6ICdjbG91ZF9lZGdlX2NvbGxhYm9yYXRpb24nLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXByb2R1Y3Qtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBjdXJyZW50PzogUHJvZHVjdEVudHJ5TmFtZTtcblxuICBASW5wdXQoKVxuICB0aXRsZT86IHN0cmluZztcblxuICBQUk9EVUNUX0lDT05fTUFQID0gUFJPRFVDVF9JQ09OX01BUDtcblxuICBhbGxQcm9kdWN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3RTZXJ2aWNlLnJlbG9hZCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN0b3JlLnNlbGVjdEFsbFByb2R1Y3RzKCkpLFxuICAgICksXG4gICAgdGhpcy5rOHNQZXJtaXNzaW9uLmlzQWxsb3dlZCh7XG4gICAgICB0eXBlOiBWSUVXLFxuICAgICAgbmFtZTogWydwbGF0Zm9ybXZpZXcnLCAncHJvamVjdHZpZXcnXSxcbiAgICB9KSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtwcm9kdWN0cywgW2NvbnNvbGVQbGF0Zm9ybSwgY29uc29sZVByb2plY3RdXSkgPT4ge1xuICAgICAgY29uc3QgcGVybWlzc2lvbnM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge1xuICAgICAgICAnY29uc29sZS1wbGF0Zm9ybSc6IGNvbnNvbGVQbGF0Zm9ybSxcbiAgICAgICAgJ2NvbnNvbGUtcHJvamVjdCc6IGNvbnNvbGVQcm9qZWN0LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBwcm9kdWN0cy5maWx0ZXIocCA9PiBwZXJtaXNzaW9uc1twLm1ldGFkYXRhLm5hbWVdID8/IHRydWUpO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBzZWxlY3RhYmxlUHJvZHVjdHMkID0gdGhpcy5hbGxQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocHJvZHVjdHMgPT5cbiAgICAgIChwcm9kdWN0cyB8fCBbXSkuZmlsdGVyKFxuICAgICAgICBwcm9kdWN0ID0+XG4gICAgICAgICAgIXRoaXMuaXNQb3J0YWxQcm9kdWN0KHByb2R1Y3QpICYmXG4gICAgICAgICAgKCFwcm9kdWN0LnN0YXR1cyB8fCBwcm9kdWN0LnN0YXR1cy5oaWRkZW5PblBvcnRhbCAhPT0gdHJ1ZSksXG4gICAgICApLFxuICAgICksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHBvcnRhbFByb2R1Y3QkID0gdGhpcy5hbGxQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocmVzID0+IHJlcy5maW5kKHAgPT4gdGhpcy5pc1BvcnRhbFByb2R1Y3QocCkpKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgZGlzYWJsZWQkID0gdGhpcy5zZWxlY3RhYmxlUHJvZHVjdHMkLnBpcGUoXG4gICAgbWFwKHByb2R1Y3RzID0+ICFwcm9kdWN0cy5sZW5ndGgpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBpc1BvcnRhbCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IENvbW1vbkxheW91dFN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzUGVybWlzc2lvbjogSzhzUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U2VsZWN0U2VydmljZTogUHJvZHVjdFNlbGVjdFNlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzUG9ydGFsID0gdGhpcy5yb3V0ZXIudXJsLnN0YXJ0c1dpdGgoJy9wb3J0YWwnKTtcbiAgfVxuXG4gIGp1bXAoZW50cnlwb2ludDogc3RyaW5nLCBzc29FbmFibGVkOiBib29sZWFuLCB0YXJnZXQgPSAnX3NlbGYnKSB7XG4gICAgd2luZG93Lm9wZW4oc3NvRW5hYmxlZCA/IHJlZGlyZWN0U1NPRW50cnkoZW50cnlwb2ludCkgOiBlbnRyeXBvaW50LCB0YXJnZXQpO1xuICB9XG5cbiAgbmF2aWdhdGVUb1BvcnRhbChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgd2luZG93Lm9wZW4oJy9jb25zb2xlLXBvcnRhbCcsICdfc2VsZicpO1xuICB9XG5cbiAgbmF2aWdhdGVUb1Byb2R1Y3QoaXRlbTogUHJvZHVjdEVudHJ5LCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmlzUHJvZHVjdEFjdGl2ZShpdGVtLCB0aGlzLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLnNwZWMucGFja1R5cGUgPT09ICdJbnRlZ3JhdGVkJykge1xuICAgICAgdGhpcy5qdW1wKGl0ZW0uc3BlYy5lbnRyeXBvaW50LCBpdGVtLnNwZWMuc3NvRW5hYmxlZCwgJ19ibGFuaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB0cmFja0ZuID0gKF86IG51bWJlciwgaXRlbTogUHJvZHVjdEVudHJ5KSA9PiBpdGVtLm1ldGFkYXRhLm5hbWU7XG5cbiAgaXNQcm9kdWN0QWN0aXZlKGl0ZW06IFByb2R1Y3RFbnRyeSwgY3VycmVudDogUHJvZHVjdEVudHJ5TmFtZSkge1xuICAgIHJldHVybiAoXG4gICAgICBjdXJyZW50ICYmXG4gICAgICBpdGVtLm1ldGFkYXRhLm5hbWUgPT09XG4gICAgICAgIChjdXJyZW50LnN0YXJ0c1dpdGgoUFJFRklYKSA/IGN1cnJlbnQgOiBQUkVGSVggKyBjdXJyZW50KVxuICAgICk7XG4gIH1cblxuICBpc1BvcnRhbFByb2R1Y3QoaXRlbTogUHJvZHVjdEVudHJ5KSB7XG4gICAgcmV0dXJuIGl0ZW0ubWV0YWRhdGEubmFtZSA9PT0gJ2NvbnNvbGUtcG9ydGFsJztcbiAgfVxuXG4gIGdldFByb2R1Y3RUaXRsZSA9IChcbiAgICBwcm9kdWN0czogUHJvZHVjdEVudHJ5W10sXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBjdXJyZW50OiBQcm9kdWN0RW50cnlOYW1lLFxuICApID0+XG4gICAgdGl0bGUgfHxcbiAgICBnZXQoXG4gICAgICAocHJvZHVjdHMgfHwgW10pLmZpbmQocCA9PiB0aGlzLmlzUHJvZHVjdEFjdGl2ZShwLCBjdXJyZW50KSksXG4gICAgICBbJ3NwZWMnLCAnZGlzcGxheU5hbWUnXSxcbiAgICApO1xufVxuIiwiPGJ1dHRvblxuICBjbGFzcz1cImFjbC1wcm9kdWN0LXNlbGVjdFwiXG4gIFthdWlUb29sdGlwXT1cIm1lbnVcIlxuICBhdWlUb29sdGlwVHlwZT1cInBsYWluXCJcbiAgYXVpVG9vbHRpcFRyaWdnZXI9XCJjbGlja1wiXG4gIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBzdGFydFwiXG4gIGF1aVRvb2x0aXBDbGFzcz1cImF1aS1wcm9kdWN0LXNlbGVjdC10b29sdGlwXCJcbiAgW2F1aVRvb2x0aXBIaWRlT25DbGlja109XCJ0cnVlXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgW3RpdGxlXT1cIlxuICAgIChkaXNhYmxlZCQgfCBhc3luYylcbiAgICAgID8gJydcbiAgICAgIDogKGFsbFByb2R1Y3RzJFxuICAgICAgICB8IGFzeW5jXG4gICAgICAgIHwgcHVyZTogZ2V0UHJvZHVjdFRpdGxlIDogdGl0bGUgOiBjdXJyZW50XG4gICAgICAgIHwgdHJhbnNsYXRlKVxuICBcIlxuICBbbmdDbGFzc109XCJ7ICdhY2wtcHJvZHVjdC1zZWxlY3QtLWRpc2FibGVkJzogZGlzYWJsZWQkIHwgYXN5bmMgfVwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJcbiAgICAgIGFsbFByb2R1Y3RzJFxuICAgICAgICB8IGFzeW5jXG4gICAgICAgIHwgcHVyZTogZ2V0UHJvZHVjdFRpdGxlIDogdGl0bGUgOiBjdXJyZW50IGFzIHByb2R1Y3RUaXRsZVxuICAgIFwiXG4gICAgY2xhc3M9XCJhY2wtcHJvZHVjdC1zZWxlY3RfX3RpdGxlXCJcbiAgPlxuICAgIHt7IHByb2R1Y3RUaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG4gIDxhdWktaWNvblxuICAgIGljb249XCJtZW51X2RvdF9zXCJcbiAgICBzaXplPVwiMTZweFwiXG4gICAgW2F1aVRvb2x0aXBdPVwiJ25vX3Byb2R1Y3RfYW5kX2NvbnRhY3RfYWRtaW4nIHwgdHJhbnNsYXRlXCJcbiAgICBbYXVpVG9vbHRpcERpc2FibGVkXT1cIiEoZGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gc3RhcnRcIlxuICA+PC9hdWktaWNvbj5cbjwvYnV0dG9uPlxuPG5nLXRlbXBsYXRlICNtZW51PlxuICA8ZGl2IGNsYXNzPVwibWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RhYmxlUHJvZHVjdHMkIHwgYXN5bmMgYXMgcHJvZHVjdHM7IGVsc2UgbG9hZGluZ1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1lbnVfX2l0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ21lbnVfX2l0ZW0tLWFjdGl2ZSc6IGl0ZW0gfCBwdXJlOiBpc1Byb2R1Y3RBY3RpdmUgOiBjdXJyZW50LFxuICAgICAgICB9XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJvZHVjdHM7IHRyYWNrQnk6IHRyYWNrRm5cIlxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1Byb2R1Y3QoaXRlbSwgJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZW51X19pdGVtLWljb25cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBpdGVtLnNwZWMucGFja1R5cGUgIT09ICdJbnRlZ3JhdGVkJyAmJiAhaXRlbS5zcGVjLmxvZ287XG4gICAgICAgICAgICAgIGVsc2UgbG9nb1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJhY2wtY29sb3JmdWwtaWNvblwiXG4gICAgICAgICAgICAgIFtpY29uXT1cIidiaWNvbG9yOicgKyBQUk9EVUNUX0lDT05fTUFQW2l0ZW0ubWV0YWRhdGEubmFtZV1cIlxuICAgICAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2dvPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgIChpdGVtLnNwZWMubG9nbyB8IGFjbEltYWdlSGVhZGVyKSB8fFxuICAgICAgICAgICAgICAgICdpbWFnZXMvcHJvZHVjdC1kZWZhdWx0LWxvZ28ucG5nJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRlZmF1bHRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfX2l0ZW0taW5mb1wiPlxuICAgICAgICAgIHt7IGl0ZW0uc3BlYy5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpdGVtIHwgcHVyZTogaXNQcm9kdWN0QWN0aXZlIDogY3VycmVudFwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVjay10cmlhbmdsZS1iYWRnZVwiXG4gICAgICAgICAgaWNvbj1cImNoZWNrXCJcbiAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cInBvcnRhbFByb2R1Y3QkIHwgYXN5bmMgYXMgcG9ydGFsTWVudVwiXG4gICAgY2xhc3M9XCJwb3J0YWxcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3BvcnRhbC0tYWN0aXZlJzogaXNQb3J0YWwgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBvcnRhbF9faXRlbVwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1BvcnRhbCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gaWNvbj1cImhvbWVfc1wiPjwvYXVpLWljb24+XG4gICAgICB7eyBwb3J0YWxNZW51LnNwZWMuZGlzcGxheU5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxhY2wtbG9hZGluZy1tYXNrXG4gICAgc3R5bGU9XCJoZWlnaHQ6IDE0OHB4XCJcbiAgICBbbG9hZGluZ109XCJ0cnVlXCJcbiAgPjwvYWNsLWxvYWRpbmctbWFzaz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=