@alauda-fe/common
Version:
Alauda frontend team common codes.
113 lines • 15.7 kB
JavaScript
/**
* @packageDocumentation
* @module license
*/
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
import { Router } from '@angular/router';
import { tap } from 'rxjs';
import { Reason } from '../../page-guard/public-api';
import { TranslateService } from '../../translate/public-api';
import { LICENSE_PRODUCT_NAME_TOKEN, LicenseService } from '../license.service';
import { LicenseStatus } from '../license.type';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "../license.service";
import * as i3 from "../../translate/public-api";
const _c0 = ["*"];
function LicenseErrorComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵprojection(1);
i0.ɵɵelementContainerEnd();
} }
function LicenseErrorComponent_div_2_ng_container_7_a_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "a", 6)(1, "button", 7);
i0.ɵɵtext(2);
i0.ɵɵpipe(3, "async");
i0.ɵɵpipe(4, "pure");
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext(3);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(4, 3, i0.ɵɵpipeBind1(3, 1, ctx_r0.errorStatus$), ctx_r0.getButtonText, ctx_r0.translate.locale), " ");
} }
function LicenseErrorComponent_div_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵtemplate(1, LicenseErrorComponent_div_2_ng_container_7_a_1_Template, 5, 7, "a", 5);
i0.ɵɵpipe(2, "async");
i0.ɵɵpipe(3, "pure");
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext(2);
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(3, 3, i0.ɵɵpipeBind1(2, 1, ctx_r0.errorStatus$), ctx_r0.shouldShowImport));
} }
function LicenseErrorComponent_div_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 2)(1, "acl-page-guard", 3);
i0.ɵɵpipe(2, "async");
i0.ɵɵpipe(3, "pure");
i0.ɵɵpipe(4, "translate");
i0.ɵɵpipe(5, "async");
i0.ɵɵpipe(6, "pure");
i0.ɵɵtemplate(7, LicenseErrorComponent_div_2_ng_container_7_Template, 4, 6, "ng-container", 4);
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵproperty("allowed", false)("reason", ctx_r0.Reason.LicenseAbnormal)("title", i0.ɵɵpipeBind1(4, 9, i0.ɵɵpipeBind2(3, 6, i0.ɵɵpipeBind1(2, 4, ctx_r0.errorStatus$), ctx_r0.getErrorTitle)))("description", i0.ɵɵpipeBind3(6, 13, i0.ɵɵpipeBind1(5, 11, ctx_r0.errorStatus$), ctx_r0.getErrorContent, ctx_r0.translate.locale));
} }
const LICENSE_ERROR_TITLE_MAPPER = {
unauthorized: 'no_available_license_title',
expired: 'expired_license',
no_permission: 'no_permission_license',
};
export class LicenseErrorComponent {
constructor(router, licenseService, translate, productName) {
this.router = router;
this.licenseService = licenseService;
this.translate = translate;
this.productName = productName;
this.Reason = Reason;
this.errorStatus$ = this.licenseService.status$.pipe(
// in case user input license-error url
tap(status => {
if (status === LicenseStatus.AUTHORIZED) {
this.router.navigateByUrl('/');
}
}));
this.LicenseStatus = LicenseStatus;
this.getErrorContent = this.getErrorContent.bind(this);
this.getButtonText = this.getButtonText.bind(this);
}
getErrorTitle(status) {
return LICENSE_ERROR_TITLE_MAPPER[status];
}
getErrorContent(status, _locale) {
return status === LicenseStatus.NO_PERMISSION
? this.translate.get('no_permission_license_hint')
: status === LicenseStatus.UNAUTHORIZED
? this.translate.get('license_unauthorized_hint')
: this.translate.get('license_error_hint', { product: this.productName });
}
shouldShowImport(status) {
return status !== LicenseStatus.NO_PERMISSION;
}
getButtonText(status, _locale) {
return this.translate.get(status === LicenseStatus.UNAUTHORIZED ? 'show_license' : 'import_now');
}
static { this.ɵfac = function LicenseErrorComponent_Factory(t) { return new (t || LicenseErrorComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.LicenseService), i0.ɵɵdirectiveInject(i3.TranslateService), i0.ɵɵdirectiveInject(LICENSE_PRODUCT_NAME_TOKEN)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LicenseErrorComponent, selectors: [["acl-license-error"]], ngContentSelectors: _c0, decls: 3, vars: 0, consts: [[4, "aclPageHeader"], ["class", "layout-page-content", 4, "aclPageContent"], [1, "layout-page-content"], [3, "allowed", "reason", "title", "description"], [4, "aclPageGuardOperation"], ["href", "/console-platform/manage-platform/platform-setting/license", "target", "_blank", "noopener", "", "noreferrer", "", 4, "ngIf"], ["href", "/console-platform/manage-platform/platform-setting/license", "target", "_blank", "noopener", "", "noreferrer", ""], ["aui-button", "primary"]], template: function LicenseErrorComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵprojectionDef();
i0.ɵɵelementStart(0, "acl-page");
i0.ɵɵtemplate(1, LicenseErrorComponent_ng_container_1_Template, 2, 0, "ng-container", 0)(2, LicenseErrorComponent_div_2_Template, 8, 17, "div", 1);
i0.ɵɵelementEnd();
} }, styles: [".layout-page-content[_ngcontent-%COMP%]{height:calc(100vh - var(--acl-page-header-height) - 20px * 2)}.error-page__wrapper[_ngcontent-%COMP%]{height:100%;display:flex;flex-direction:column;align-items:center}.error-page__wrapper[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{margin-top:102px;width:160px;height:160px}.error-page__title[_ngcontent-%COMP%]{font-size:18px;margin-top:16px}.error-page__content[_ngcontent-%COMP%]{color:rgb(var(--aui-color-help-text));margin-top:8px;margin-bottom:16px}"], changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LicenseErrorComponent, [{
type: Component,
args: [{ selector: 'acl-license-error', changeDetection: ChangeDetectionStrategy.OnPush, template: "<acl-page>\n <ng-container *aclPageHeader>\n <ng-content></ng-content>\n </ng-container>\n <div\n *aclPageContent\n class=\"layout-page-content\"\n >\n <acl-page-guard\n [allowed]=\"false\"\n [reason]=\"Reason.LicenseAbnormal\"\n [title]=\"errorStatus$ | async | pure: getErrorTitle | translate\"\n [description]=\"\n errorStatus$ | async | pure: getErrorContent:translate.locale\n \"\n >\n <ng-container *aclPageGuardOperation>\n <a\n href=\"/console-platform/manage-platform/platform-setting/license\"\n target=\"_blank\"\n *ngIf=\"errorStatus$ | async | pure: shouldShowImport\"\n noopener\n noreferrer\n >\n <button aui-button=\"primary\">\n {{ errorStatus$ | async | pure: getButtonText:translate.locale }}\n </button>\n </a>\n </ng-container>\n </acl-page-guard>\n </div>\n</acl-page>\n", styles: [".layout-page-content{height:calc(100vh - var(--acl-page-header-height) - 20px * 2)}.error-page__wrapper{height:100%;display:flex;flex-direction:column;align-items:center}.error-page__wrapper>img{margin-top:102px;width:160px;height:160px}.error-page__title{font-size:18px;margin-top:16px}.error-page__content{color:rgb(var(--aui-color-help-text));margin-top:8px;margin-bottom:16px}\n"] }]
}], () => [{ type: i1.Router }, { type: i2.LicenseService }, { type: i3.TranslateService }, { type: undefined, decorators: [{
type: Inject,
args: [LICENSE_PRODUCT_NAME_TOKEN]
}] }], null); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LicenseErrorComponent, { className: "LicenseErrorComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2xpY2Vuc2UvbGljZW5zZS1lcnJvci9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvbGljZW5zZS9saWNlbnNlLWVycm9yL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7SUNYOUMsNkJBQTZCO0lBQzNCLGtCQUF5Qjs7OztJQXNCbkIsQUFQRiw0QkFNQyxnQkFDOEI7SUFDM0IsWUFDRjs7O0lBQ0YsQUFERSxpQkFBUyxFQUNQOzs7SUFGQSxlQUNGO0lBREUsK0lBQ0Y7OztJQVZKLDZCQUFxQztJQUNuQyx1RkFNQzs7Ozs7O0lBSEUsY0FBbUQ7SUFBbkQsK0dBQW1EOzs7SUFaMUQsQUFKRiw4QkFHQyx3QkFRRTs7Ozs7O0lBQ0MsOEZBQXFDO0lBY3pDLEFBREUsaUJBQWlCLEVBQ2I7OztJQXJCRixjQUFpQjtJQUdqQixBQURBLEFBREEsQUFEQSwrQkFBaUIseUNBQ2dCLHNIQUMrQixtSUFHL0Q7O0FEQVAsTUFBTSwwQkFBMEIsR0FBMkM7SUFDekUsWUFBWSxFQUFFLDRCQUE0QjtJQUMxQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLGFBQWEsRUFBRSx1QkFBdUI7Q0FDdkMsQ0FBQztBQVFGLE1BQU0sT0FBTyxxQkFBcUI7SUFjaEMsWUFDbUIsTUFBYyxFQUNkLGNBQThCLEVBQy9CLFNBQTJCLEVBRTNCLFdBQW1CO1FBSmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFFM0IsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFsQnJDLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQzdDLHVDQUF1QztRQUN2QyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCxJQUFJLE1BQU0sS0FBSyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFTNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBcUI7UUFDakMsT0FBTywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQXFCLEVBQUUsT0FBZ0I7UUFDckQsT0FBTyxNQUFNLEtBQUssYUFBYSxDQUFDLGFBQWE7WUFDM0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDO1lBQ2xELENBQUMsQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLFlBQVk7Z0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFxQjtRQUNwQyxPQUFPLE1BQU0sS0FBSyxhQUFhLENBQUMsYUFBYSxDQUFDO0lBQ2hELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBcUIsRUFBRSxPQUFnQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUN2QixNQUFNLEtBQUssYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQ3RFLENBQUM7SUFDSixDQUFDO3NGQTdDVSxxQkFBcUIsNElBa0J0QiwwQkFBMEI7b0VBbEJ6QixxQkFBcUI7O1lDMUJsQyxnQ0FBVTtZQUlSLEFBSEEsd0ZBQTZCLDBEQU01QjtZQXdCSCxpQkFBVzs7O2lGRExFLHFCQUFxQjtjQU5qQyxTQUFTOzJCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOztzQkFvQjVDLE1BQU07dUJBQUMsMEJBQTBCOztrRkFsQnpCLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGxpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVhc29uIH0gZnJvbSAnLi4vLi4vcGFnZS1ndWFyZC9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBMSUNFTlNFX1BST0RVQ1RfTkFNRV9UT0tFTiwgTGljZW5zZVNlcnZpY2UgfSBmcm9tICcuLi9saWNlbnNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGljZW5zZVN0YXR1cyB9IGZyb20gJy4uL2xpY2Vuc2UudHlwZSc7XG5cbmNvbnN0IExJQ0VOU0VfRVJST1JfVElUTEVfTUFQUEVSOiBQYXJ0aWFsPFJlY29yZDxMaWNlbnNlU3RhdHVzLCBzdHJpbmc+PiA9IHtcbiAgdW5hdXRob3JpemVkOiAnbm9fYXZhaWxhYmxlX2xpY2Vuc2VfdGl0bGUnLFxuICBleHBpcmVkOiAnZXhwaXJlZF9saWNlbnNlJyxcbiAgbm9fcGVybWlzc2lvbjogJ25vX3Blcm1pc3Npb25fbGljZW5zZScsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtbGljZW5zZS1lcnJvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTGljZW5zZUVycm9yQ29tcG9uZW50IHtcbiAgUmVhc29uID0gUmVhc29uO1xuXG4gIGVycm9yU3RhdHVzJCA9IHRoaXMubGljZW5zZVNlcnZpY2Uuc3RhdHVzJC5waXBlKFxuICAgIC8vIGluIGNhc2UgdXNlciBpbnB1dCBsaWNlbnNlLWVycm9yIHVybFxuICAgIHRhcChzdGF0dXMgPT4ge1xuICAgICAgaWYgKHN0YXR1cyA9PT0gTGljZW5zZVN0YXR1cy5BVVRIT1JJWkVEKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgKTtcblxuICBMaWNlbnNlU3RhdHVzID0gTGljZW5zZVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGljZW5zZVNlcnZpY2U6IExpY2Vuc2VTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQEluamVjdChMSUNFTlNFX1BST0RVQ1RfTkFNRV9UT0tFTilcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJvZHVjdE5hbWU6IHN0cmluZyxcbiAgKSB7XG4gICAgdGhpcy5nZXRFcnJvckNvbnRlbnQgPSB0aGlzLmdldEVycm9yQ29udGVudC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0QnV0dG9uVGV4dCA9IHRoaXMuZ2V0QnV0dG9uVGV4dC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgZ2V0RXJyb3JUaXRsZShzdGF0dXM6IExpY2Vuc2VTdGF0dXMpIHtcbiAgICByZXR1cm4gTElDRU5TRV9FUlJPUl9USVRMRV9NQVBQRVJbc3RhdHVzXTtcbiAgfVxuXG4gIGdldEVycm9yQ29udGVudChzdGF0dXM6IExpY2Vuc2VTdGF0dXMsIF9sb2NhbGU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RhdHVzID09PSBMaWNlbnNlU3RhdHVzLk5PX1BFUk1JU1NJT05cbiAgICAgID8gdGhpcy50cmFuc2xhdGUuZ2V0KCdub19wZXJtaXNzaW9uX2xpY2Vuc2VfaGludCcpXG4gICAgICA6IHN0YXR1cyA9PT0gTGljZW5zZVN0YXR1cy5VTkFVVEhPUklaRURcbiAgICAgID8gdGhpcy50cmFuc2xhdGUuZ2V0KCdsaWNlbnNlX3VuYXV0aG9yaXplZF9oaW50JylcbiAgICAgIDogdGhpcy50cmFuc2xhdGUuZ2V0KCdsaWNlbnNlX2Vycm9yX2hpbnQnLCB7IHByb2R1Y3Q6IHRoaXMucHJvZHVjdE5hbWUgfSk7XG4gIH1cblxuICBzaG91bGRTaG93SW1wb3J0KHN0YXR1czogTGljZW5zZVN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgIT09IExpY2Vuc2VTdGF0dXMuTk9fUEVSTUlTU0lPTjtcbiAgfVxuXG4gIGdldEJ1dHRvblRleHQoc3RhdHVzOiBMaWNlbnNlU3RhdHVzLCBfbG9jYWxlPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldChcbiAgICAgIHN0YXR1cyA9PT0gTGljZW5zZVN0YXR1cy5VTkFVVEhPUklaRUQgPyAnc2hvd19saWNlbnNlJyA6ICdpbXBvcnRfbm93JyxcbiAgICApO1xuICB9XG59XG4iLCI8YWNsLXBhZ2U+XG4gIDxuZy1jb250YWluZXIgKmFjbFBhZ2VIZWFkZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdlxuICAgICphY2xQYWdlQ29udGVudFxuICAgIGNsYXNzPVwibGF5b3V0LXBhZ2UtY29udGVudFwiXG4gID5cbiAgICA8YWNsLXBhZ2UtZ3VhcmRcbiAgICAgIFthbGxvd2VkXT1cImZhbHNlXCJcbiAgICAgIFtyZWFzb25dPVwiUmVhc29uLkxpY2Vuc2VBYm5vcm1hbFwiXG4gICAgICBbdGl0bGVdPVwiZXJyb3JTdGF0dXMkIHwgYXN5bmMgfCBwdXJlOiBnZXRFcnJvclRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJcbiAgICAgICAgZXJyb3JTdGF0dXMkIHwgYXN5bmMgfCBwdXJlOiBnZXRFcnJvckNvbnRlbnQ6dHJhbnNsYXRlLmxvY2FsZVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICphY2xQYWdlR3VhcmRPcGVyYXRpb24+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIi9jb25zb2xlLXBsYXRmb3JtL21hbmFnZS1wbGF0Zm9ybS9wbGF0Zm9ybS1zZXR0aW5nL2xpY2Vuc2VcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgKm5nSWY9XCJlcnJvclN0YXR1cyQgfCBhc3luYyB8IHB1cmU6IHNob3VsZFNob3dJbXBvcnRcIlxuICAgICAgICAgIG5vb3BlbmVyXG4gICAgICAgICAgbm9yZWZlcnJlclxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvbiBhdWktYnV0dG9uPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAge3sgZXJyb3JTdGF0dXMkIHwgYXN5bmMgfCBwdXJlOiBnZXRCdXR0b25UZXh0OnRyYW5zbGF0ZS5sb2NhbGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9hY2wtcGFnZS1ndWFyZD5cbiAgPC9kaXY+XG48L2FjbC1wYWdlPlxuIl19