@alauda-fe/common
Version:
Alauda frontend team common codes.
131 lines • 18.6 kB
JavaScript
import { IconModule, InlineAlertType } from '@alauda/ui';
import { NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, } from '@angular/common';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, } from '@angular/core';
import { uniqBy } from 'lodash-es';
import { PageHeaderAppendDirective } from '../helper-directives';
import { MaintenanceComponent } from './maintenance.component';
import * as i0 from "@angular/core";
import * as i1 from "@alauda/ui";
function NoticeComponent_ng_container_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainer(0);
} }
function NoticeComponent_ng_container_1_aui_icon_7_Template(rf, ctx) { if (rf & 1) {
const _r1 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "aui-icon", 9);
i0.ɵɵlistener("click", function NoticeComponent_ng_container_1_aui_icon_7_Template_aui_icon_click_0_listener() { i0.ɵɵrestoreView(_r1); const msg_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.close(msg_r2.id)); });
i0.ɵɵelementEnd();
} }
function NoticeComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵelementStart(1, "div", 3);
i0.ɵɵelement(2, "aui-icon", 4);
i0.ɵɵelementStart(3, "div", 5)(4, "span", 6);
i0.ɵɵtext(5);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(6, NoticeComponent_ng_container_1_ng_container_6_Template, 1, 0, "ng-container", 7);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(7, NoticeComponent_ng_container_1_aui_icon_7_Template, 1, 0, "aui-icon", 8);
i0.ɵɵelementEnd();
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const msg_r2 = ctx.$implicit;
const ctx_r2 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵproperty("ngClass", "acl-page__header-notice--" + msg_r2.type);
i0.ɵɵadvance();
i0.ɵɵproperty("icon", ctx_r2.iconMap(msg_r2.type))("background", ctx_r2.iconMap(msg_r2.type).endsWith("_triangle_s") ? "triangle" : "circle");
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate(msg_r2.content);
i0.ɵɵadvance();
i0.ɵɵproperty("ngTemplateOutlet", msg_r2.suffix);
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", msg_r2.closable);
} }
function NoticeComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainer(0);
} }
let id = 0;
export class NoticeComponent {
constructor(cdr) {
this.cdr = cdr;
this.messages = [];
this.open = (message) => {
const idStr = `${id++}`;
this.messages = uniqBy([
{
id: idStr,
type: InlineAlertType.Warning,
...message,
},
...this.messages,
], 'id');
this.cdr.markForCheck();
return () => this.close(idStr);
};
this.close = (id) => {
const idx = id
? this.messages.findIndex(msg => msg.id === id)
: Math.max(this.messages.length - 1, 0);
if (idx > -1) {
this.messages.splice(idx, 1);
this.cdr.markForCheck();
}
};
}
iconMap(type) {
switch (type) {
case InlineAlertType.Success: {
return 'check_circle_s';
}
case InlineAlertType.Warning: {
return 'exclamation_circle_s';
}
case InlineAlertType.Danger:
case InlineAlertType.Error: {
return 'exclamation_triangle_s';
}
default: {
return 'info_circle_s';
}
}
}
static { this.ɵfac = function NoticeComponent_Factory(t) { return new (t || NoticeComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NoticeComponent, selectors: [["acl-page-notice"]], contentQueries: function NoticeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
i0.ɵɵcontentQuery(dirIndex, PageHeaderAppendDirective, 5);
} if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageHeaderAppend = _t.first);
} }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 2, consts: [[3, "noticeClose", "noticeOpen"], [4, "ngFor", "ngForOf"], [4, "ngComponentOutlet"], [1, "tw-w-full", "tw-p-[12px_16px]", "tw-leading-m", "tw-relative", "tw-flex", "tw-justify-center", 3, "ngClass"], ["margin", "right", 3, "icon", "background"], [1, "tw-pr-16", 2, "max-width", "calc(100% - 40px)"], [1, "tw-mr-6"], [4, "ngTemplateOutlet"], ["icon", "xmark", "class", "tw-absolute tw-top-[12px] tw-right-[16px] hover:!tw-text-primary !tw-text-n-2 tw-cursor-pointer", 3, "click", 4, "ngIf"], ["icon", "xmark", 1, "tw-absolute", "tw-top-[12px]", "tw-right-[16px]", "hover:!tw-text-primary", "!tw-text-n-2", "tw-cursor-pointer", 3, "click"]], template: function NoticeComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "acl-page-header-notice-maintenance", 0);
i0.ɵɵlistener("noticeClose", function NoticeComponent_Template_acl_page_header_notice_maintenance_noticeClose_0_listener($event) { return ctx.close($event); })("noticeOpen", function NoticeComponent_Template_acl_page_header_notice_maintenance_noticeOpen_0_listener($event) { return ctx.open($event); });
i0.ɵɵelementEnd();
i0.ɵɵtemplate(1, NoticeComponent_ng_container_1_Template, 8, 6, "ng-container", 1)(2, NoticeComponent_ng_container_2_Template, 1, 0, "ng-container", 2);
} if (rf & 2) {
i0.ɵɵadvance();
i0.ɵɵproperty("ngForOf", ctx.messages);
i0.ɵɵadvance();
i0.ɵɵproperty("ngComponentOutlet", ctx.pageHeaderAppend);
} }, dependencies: [NgComponentOutlet,
NgIf,
NgForOf,
NgTemplateOutlet,
IconModule, i1.IconComponent, NgClass,
MaintenanceComponent], styles: [".acl-page__header-notice--primary[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-b-6))}.acl-page__header-notice--primary[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-blue))}.acl-page__header-notice--success[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-g-6))}.acl-page__header-notice--success[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-green))}.acl-page__header-notice--warning[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-y-6))}.acl-page__header-notice--warning[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-yellow))}.acl-page__header-notice--danger[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-r-6))}.acl-page__header-notice--danger[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-red))}.acl-page__header-notice--error[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-r-6))}.acl-page__header-notice--error[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-red))}.acl-page__header-notice--info[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-b-6))}.acl-page__header-notice--info[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-blue))}"], changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NoticeComponent, [{
type: Component,
args: [{ selector: 'acl-page-notice', imports: [
NgComponentOutlet,
NgIf,
NgForOf,
NgTemplateOutlet,
IconModule,
NgClass,
MaintenanceComponent,
], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<acl-page-header-notice-maintenance\n (noticeClose)=\"close($event)\"\n (noticeOpen)=\"open($event)\"\n></acl-page-header-notice-maintenance>\n<ng-container *ngFor=\"let msg of messages\">\n <div\n [ngClass]=\"'acl-page__header-notice--' + msg.type\"\n class=\"tw-w-full tw-p-[12px_16px] tw-leading-m tw-relative tw-flex tw-justify-center\"\n >\n <aui-icon\n [icon]=\"iconMap(msg.type)\"\n margin=\"right\"\n [background]=\"\n iconMap(msg.type).endsWith('_triangle_s') ? 'triangle' : 'circle'\n \"\n ></aui-icon>\n <div\n style=\"max-width: calc(100% - 40px)\"\n class=\"tw-pr-16\"\n >\n <span class=\"tw-mr-6\">{{ msg.content }}</span>\n <ng-container *ngTemplateOutlet=\"msg.suffix\"></ng-container>\n </div>\n <aui-icon\n *ngIf=\"msg.closable\"\n icon=\"xmark\"\n class=\"tw-absolute tw-top-[12px] tw-right-[16px] hover:!tw-text-primary !tw-text-n-2 tw-cursor-pointer\"\n (click)=\"close(msg.id)\"\n ></aui-icon>\n </div>\n</ng-container>\n<ng-container *ngComponentOutlet=\"pageHeaderAppend\"></ng-container>\n", styles: [".acl-page__header-notice--primary{background-color:rgb(var(--aui-color-b-6))}.acl-page__header-notice--primary aui-icon{color:rgb(var(--aui-color-blue))}.acl-page__header-notice--success{background-color:rgb(var(--aui-color-g-6))}.acl-page__header-notice--success aui-icon{color:rgb(var(--aui-color-green))}.acl-page__header-notice--warning{background-color:rgb(var(--aui-color-y-6))}.acl-page__header-notice--warning aui-icon{color:rgb(var(--aui-color-yellow))}.acl-page__header-notice--danger{background-color:rgb(var(--aui-color-r-6))}.acl-page__header-notice--danger aui-icon{color:rgb(var(--aui-color-red))}.acl-page__header-notice--error{background-color:rgb(var(--aui-color-r-6))}.acl-page__header-notice--error aui-icon{color:rgb(var(--aui-color-red))}.acl-page__header-notice--info{background-color:rgb(var(--aui-color-b-6))}.acl-page__header-notice--info aui-icon{color:rgb(var(--aui-color-blue))}\n"] }]
}], () => [{ type: i0.ChangeDetectorRef }], { pageHeaderAppend: [{
type: ContentChild,
args: [PageHeaderAppendDirective]
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NoticeComponent, { className: "NoticeComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9wYWdlLXNjYWZmb2xkL3BhZ2Uvbm90aWNlcy9ub3RpY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS9ub3RpY2VzL25vdGljZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6RCxPQUFPLEVBQ0wsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsSUFBSSxFQUNKLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztJQ0N6RCx3QkFBNEQ7Ozs7SUFFOUQsbUNBS0M7SUFEQyw4T0FBUyx1QkFBYSxLQUFDO0lBQ3hCLGlCQUFXOzs7SUF4QmhCLDZCQUEyQztJQUN6Qyw4QkFHQztJQUNDLDhCQU1ZO0lBS1YsQUFKRiw4QkFHQyxjQUN1QjtJQUFBLFlBQWlCO0lBQUEsaUJBQU87SUFDOUMsaUdBQTZDO0lBQy9DLGlCQUFNO0lBQ04seUZBS0M7SUFDSCxpQkFBTTs7Ozs7SUF2QkosY0FBa0Q7SUFBbEQsbUVBQWtEO0lBSWhELGNBQTBCO0lBRTFCLEFBRkEsa0RBQTBCLDJGQUl6QjtJQU1xQixlQUFpQjtJQUFqQixvQ0FBaUI7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QUMsTUFBTTtrREFJL0MsZ0JBQWdCO2tCQURmLFlBQVk7bUJBQUMseUJBQXlCOztrRkFENUIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25Nb2R1bGUsIElubGluZUFsZXJ0VHlwZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgTmdDbGFzcyxcbiAgTmdDb21wb25lbnRPdXRsZXQsXG4gIE5nRm9yT2YsXG4gIE5nSWYsXG4gIE5nVGVtcGxhdGVPdXRsZXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB1bmlxQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBQYWdlSGVhZGVyQXBwZW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vaGVscGVyLWRpcmVjdGl2ZXMnO1xuXG5pbXBvcnQgeyBNYWludGVuYW5jZUNvbXBvbmVudCB9IGZyb20gJy4vbWFpbnRlbmFuY2UuY29tcG9uZW50JztcblxubGV0IGlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXBhZ2Utbm90aWNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGljZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vdGljZS5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBOZ0NsYXNzLFxuICAgIE1haW50ZW5hbmNlQ29tcG9uZW50LFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTm90aWNlQ29tcG9uZW50IHtcbiAgQENvbnRlbnRDaGlsZChQYWdlSGVhZGVyQXBwZW5kRGlyZWN0aXZlKVxuICBwYWdlSGVhZGVyQXBwZW5kOiBDb21wb25lbnRUeXBlPGFueT47XG5cbiAgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBvcGVuID0gKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcbiAgICBjb25zdCBpZFN0ciA9IGAke2lkKyt9YDtcbiAgICB0aGlzLm1lc3NhZ2VzID0gdW5pcUJ5KFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGlkU3RyLFxuICAgICAgICAgIHR5cGU6IElubGluZUFsZXJ0VHlwZS5XYXJuaW5nLFxuICAgICAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnRoaXMubWVzc2FnZXMsXG4gICAgICBdLFxuICAgICAgJ2lkJyxcbiAgICApO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIHJldHVybiAoKSA9PiB0aGlzLmNsb3NlKGlkU3RyKTtcbiAgfTtcblxuICBjbG9zZSA9IChpZD86IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGlkeCA9IGlkXG4gICAgICA/IHRoaXMubWVzc2FnZXMuZmluZEluZGV4KG1zZyA9PiBtc2cuaWQgPT09IGlkKVxuICAgICAgOiBNYXRoLm1heCh0aGlzLm1lc3NhZ2VzLmxlbmd0aCAtIDEsIDApO1xuICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgdGhpcy5tZXNzYWdlcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfTtcblxuICBpY29uTWFwKHR5cGU6IElubGluZUFsZXJ0VHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBJbmxpbmVBbGVydFR5cGUuU3VjY2Vzczoge1xuICAgICAgICByZXR1cm4gJ2NoZWNrX2NpcmNsZV9zJztcbiAgICAgIH1cbiAgICAgIGNhc2UgSW5saW5lQWxlcnRUeXBlLldhcm5pbmc6IHtcbiAgICAgICAgcmV0dXJuICdleGNsYW1hdGlvbl9jaXJjbGVfcyc7XG4gICAgICB9XG4gICAgICBjYXNlIElubGluZUFsZXJ0VHlwZS5EYW5nZXI6XG4gICAgICBjYXNlIElubGluZUFsZXJ0VHlwZS5FcnJvcjoge1xuICAgICAgICByZXR1cm4gJ2V4Y2xhbWF0aW9uX3RyaWFuZ2xlX3MnO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gJ2luZm9fY2lyY2xlX3MnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBzdWZmaXg/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICB0eXBlPzogSW5saW5lQWxlcnRUeXBlOyAvLyDpu5jorqQgV2FybmluZ1xuICBjbG9zYWJsZT86IGJvb2xlYW47XG59XG4iLCI8YWNsLXBhZ2UtaGVhZGVyLW5vdGljZS1tYWludGVuYW5jZVxuICAobm90aWNlQ2xvc2UpPVwiY2xvc2UoJGV2ZW50KVwiXG4gIChub3RpY2VPcGVuKT1cIm9wZW4oJGV2ZW50KVwiXG4+PC9hY2wtcGFnZS1oZWFkZXItbm90aWNlLW1haW50ZW5hbmNlPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbXNnIG9mIG1lc3NhZ2VzXCI+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCInYWNsLXBhZ2VfX2hlYWRlci1ub3RpY2UtLScgKyBtc2cudHlwZVwiXG4gICAgY2xhc3M9XCJ0dy13LWZ1bGwgdHctcC1bMTJweF8xNnB4XSB0dy1sZWFkaW5nLW0gdHctcmVsYXRpdmUgdHctZmxleCB0dy1qdXN0aWZ5LWNlbnRlclwiXG4gID5cbiAgICA8YXVpLWljb25cbiAgICAgIFtpY29uXT1cImljb25NYXAobXNnLnR5cGUpXCJcbiAgICAgIG1hcmdpbj1cInJpZ2h0XCJcbiAgICAgIFtiYWNrZ3JvdW5kXT1cIlxuICAgICAgICBpY29uTWFwKG1zZy50eXBlKS5lbmRzV2l0aCgnX3RyaWFuZ2xlX3MnKSA/ICd0cmlhbmdsZScgOiAnY2lyY2xlJ1xuICAgICAgXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgICA8ZGl2XG4gICAgICBzdHlsZT1cIm1heC13aWR0aDogY2FsYygxMDAlIC0gNDBweClcIlxuICAgICAgY2xhc3M9XCJ0dy1wci0xNlwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0dy1tci02XCI+e3sgbXNnLmNvbnRlbnQgfX08L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibXNnLnN1ZmZpeFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxhdWktaWNvblxuICAgICAgKm5nSWY9XCJtc2cuY2xvc2FibGVcIlxuICAgICAgaWNvbj1cInhtYXJrXCJcbiAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgdHctdG9wLVsxMnB4XSB0dy1yaWdodC1bMTZweF0gaG92ZXI6IXR3LXRleHQtcHJpbWFyeSAhdHctdGV4dC1uLTIgdHctY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgKGNsaWNrKT1cImNsb3NlKG1zZy5pZClcIlxuICAgID48L2F1aS1pY29uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJwYWdlSGVhZGVyQXBwZW5kXCI+PC9uZy1jb250YWluZXI+XG4iXX0=