@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
142 lines • 20.2 kB
JavaScript
import { Component, Injector, Input } from '@angular/core';
import { CoreBaseComponent } from '../../../common/base.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "../../../tooltip/tooltip.directive";
import * as i3 from "../layered-icon.component";
import * as i4 from "../layer/icon-layer.component";
function StatusIconComponent_sme_icon_layer_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "sme-icon-layer", 3);
} if (rf & 2) {
const layer_r1 = ctx.$implicit;
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵproperty("size", ctx_r0.size)("ngClass", layer_r1);
} }
export var StatusIconType;
(function (StatusIconType) {
StatusIconType["Critical"] = "critical";
StatusIconType["Error"] = "error";
StatusIconType["Warning"] = "warning";
StatusIconType["Progress"] = "progress";
StatusIconType["Info"] = "info";
StatusIconType["Success"] = "success";
StatusIconType["Unknown"] = "unknown";
})(StatusIconType || (StatusIconType = {}));
(function (StatusIconType) {
const statusIconTypes = [
StatusIconType.Critical,
StatusIconType.Error,
StatusIconType.Warning,
StatusIconType.Progress,
StatusIconType.Info,
StatusIconType.Success,
StatusIconType.Unknown
];
function fromString(value) {
const defaultStatusIconType = StatusIconType.Unknown;
if (MsftSme.isNullOrWhiteSpace(value)) {
return defaultStatusIconType;
}
value = value.toLowerCase();
return statusIconTypes.find(type => type.toLowerCase() === value) || defaultStatusIconType;
}
function fromBindableType(value) {
if (typeof (value) === 'string') {
return fromString(value);
}
return value;
}
StatusIconType.fromBindableType = fromBindableType;
function getIconLayers(iconType) {
switch (iconType) {
case StatusIconType.Critical:
return ['sme-icon', 'sme-color-critical', 'sme-icon-statusErrorFull'];
case StatusIconType.Error:
return ['sme-icon', 'sme-color-error', 'sme-icon-criticalErrorSolid'];
case StatusIconType.Warning:
return ['sme-icon', 'sme-color-warning', 'sme-icon-warningSolid'];
case StatusIconType.Progress:
return ['sme-icon', 'sme-color-progress', 'sme-icon-syncStatusSolid'];
case StatusIconType.Info:
return ['sme-icon', 'sme-color-info', 'sme-icon-infoSolid'];
case StatusIconType.Success:
return ['sme-icon', 'sme-color-success', 'sme-icon-completedSolid'];
case StatusIconType.Unknown:
return ['sme-icon', 'sme-color-neutral', 'sme-icon-unknownSolid'];
}
}
StatusIconType.getIconLayers = getIconLayers;
})(StatusIconType || (StatusIconType = {}));
export class StatusIconComponent extends CoreBaseComponent {
constructor(injector) {
super(injector);
this.localStrings = this.strings.MsftSmeShell.Angular.StatusIcon;
}
/**
* The source name to use for logging
*/
get logSourceName() {
return 'StatusIconComponent';
}
/**
* Input binding for the status icon type
*/
set status(type) {
const layers = [];
switch (type) {
case StatusIconType.Critical:
layers.push(['sme-icon', 'sme-color-critical', 'sme-icon-statusErrorFull']);
this.statusString = this.localStrings.Critical;
break;
case StatusIconType.Error:
layers.push(['sme-icon', 'sme-color-error', 'sme-icon-criticalErrorSolid']);
this.statusString = this.localStrings.Error;
break;
case StatusIconType.Warning:
layers.push(['sme-icon', 'sme-color-warning', 'sme-icon-warningSolid']);
this.statusString = this.localStrings.Warning;
break;
case StatusIconType.Progress:
layers.push(['sme-icon', 'sme-color-progress', 'sme-icon-syncStatusSolid']);
this.statusString = this.localStrings.Progress;
break;
case StatusIconType.Info:
layers.push(['sme-icon', 'sme-color-info', 'sme-icon-infoSolid']);
this.statusString = this.localStrings.Info;
break;
case StatusIconType.Success:
layers.push(['sme-icon', 'sme-color-success', 'sme-icon-completedSolid']);
this.statusString = this.localStrings.Success;
break;
case StatusIconType.Unknown:
layers.push(['sme-icon', 'sme-color-neutral', 'sme-icon-unknownSolid']);
this.statusString = this.localStrings.Unknown;
break;
}
this.layers = layers;
}
}
/** @nocollapse */ StatusIconComponent.ɵfac = function StatusIconComponent_Factory(t) { return new (t || StatusIconComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
/** @nocollapse */ StatusIconComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: StatusIconComponent, selectors: [["sme-status-icon"]], inputs: { size: "size", status: "status" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [["aria-hidden", "true", 3, "size", "title"], [3, "size", "ngClass", 4, "ngFor", "ngForOf"], [1, "sme-screen-reader"], [3, "size", "ngClass"]], template: function StatusIconComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "sme-layered-icon", 0);
i0.ɵɵtemplate(1, StatusIconComponent_sme_icon_layer_1_Template, 1, 2, "sme-icon-layer", 1);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(2, "div", 2);
i0.ɵɵtext(3);
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵproperty("size", ctx.size)("title", ctx.statusString);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", ctx.layers);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate(ctx.statusString);
} }, dependencies: [i1.NgClass, i1.NgForOf, i2.TooltipDirective, i3.LayeredIconComponent, i4.IconLayerComponent], encapsulation: 2 });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StatusIconComponent, [{
type: Component,
args: [{ selector: 'sme-status-icon', template: "<sme-layered-icon [size]=\"size\" aria-hidden=\"true\" [title]=\"statusString\">\r\n <sme-icon-layer [size]=\"size\" *ngFor=\"let layer of layers\" [ngClass]=\"layer\"></sme-icon-layer>\r\n</sme-layered-icon>\r\n<!-- in scan mode screen reader does not focus on the layered-icon properly to read the title -->\r\n<div class=\"sme-screen-reader\">{{ statusString }}</div>\r\n" }]
}], function () { return [{ type: i0.Injector }]; }, { size: [{
type: Input
}], status: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvaWNvbi9sYXllcmVkLWljb24vc3RhdHVzL3N0YXR1cy1pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2ljb24vbGF5ZXJlZC1pY29uL3N0YXR1cy9zdGF0dXMtaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7SUNBakUsb0NBQThGOzs7O0lBQTlFLGtDQUFhLHFCQUFBOztBREUvQixNQUFNLENBQU4sSUFBWSxjQVFYO0FBUkQsV0FBWSxjQUFjO0lBQ3RCLHVDQUFxQixDQUFBO0lBQ3JCLGlDQUFlLENBQUE7SUFDZixxQ0FBbUIsQ0FBQTtJQUNuQix1Q0FBcUIsQ0FBQTtJQUNyQiwrQkFBYSxDQUFBO0lBQ2IscUNBQW1CLENBQUE7SUFDbkIscUNBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQVJXLGNBQWMsS0FBZCxjQUFjLFFBUXpCO0FBRUQsV0FBYyxjQUFjO0lBR3hCLE1BQU0sZUFBZSxHQUFHO1FBQ3BCLGNBQWMsQ0FBQyxRQUFRO1FBQ3ZCLGNBQWMsQ0FBQyxLQUFLO1FBQ3BCLGNBQWMsQ0FBQyxPQUFPO1FBQ3RCLGNBQWMsQ0FBQyxRQUFRO1FBQ3ZCLGNBQWMsQ0FBQyxJQUFJO1FBQ25CLGNBQWMsQ0FBQyxPQUFPO1FBQ3RCLGNBQWMsQ0FBQyxPQUFPO0tBQ3pCLENBQUM7SUFDRixTQUFTLFVBQVUsQ0FBQyxLQUFhO1FBQzdCLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxD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aEMsMkNBQTBFO1FBQ3hFLDBGQUE4RjtRQUNoRyxpQkFBbUI7UUFFbkIsOEJBQStCO1FBQUEsWUFBa0I7UUFBQSxpQkFBTTs7UUFKckMsK0JBQWEsMkJBQUE7UUFDbUIsZUFBUztRQUFULG9DQUFTO1FBRzVCLGVBQWtCO1FBQWxCLHNDQUFrQjs7dUZEK0RwQyxtQkFBbUI7Y0FKL0IsU0FBUzsyQkFDSSxpQkFBaUI7MkRBZ0JwQixJQUFJO2tCQURWLEtBQUs7WUFPSyxNQUFNO2tCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29yZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vYmFzZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGVudW0gU3RhdHVzSWNvblR5cGUge1xyXG4gICAgQ3JpdGljYWwgPSAnY3JpdGljYWwnLFxyXG4gICAgRXJyb3IgPSAnZXJyb3InLFxyXG4gICAgV2FybmluZyA9ICd3YXJuaW5nJyxcclxuICAgIFByb2dyZXNzID0gJ3Byb2dyZXNzJyxcclxuICAgIEluZm8gPSAnaW5mbycsXHJcbiAgICBTdWNjZXNzID0gJ3N1Y2Nlc3MnLFxyXG4gICAgVW5rbm93biA9ICd1bmtub3duJ1xyXG59XHJcblxyXG5leHBvcnQgbW9kdWxlIFN0YXR1c0ljb25UeXBlIHtcclxuICAgIGV4cG9ydCB0eXBlIEJpbmRhYmxlID0gU3RhdHVzSWNvblR5cGUgfCAnY3JpdGljYWwnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdwcm9ncmVzcycgfCAnaW5mbycgfCAnc3VjY2VzcycgfCAndW5rbm93bic7XHJcblxyXG4gICAgY29uc3Qgc3RhdHVzSWNvblR5cGVzID0gW1xyXG4gICAgICAgIFN0YXR1c0ljb25UeXBlLkNyaXRpY2FsLFxyXG4gICAgICAgIFN0YXR1c0ljb25UeXBlLkVycm9yLFxyXG4gICAgICAgIFN0YXR1c0ljb25UeXBlLldhcm5pbmcsXHJcbiAgICAgICAgU3RhdHVzSWNvblR5cGUuUHJvZ3Jlc3MsXHJcbiAgICAgICAgU3RhdHVzSWNvblR5cGUuSW5mbyxcclxuICAgICAgICBTdGF0dXNJY29uVHlwZS5TdWNjZXNzLFxyXG4gICAgICAgIFN0YXR1c0ljb25UeXBlLlVua25vd25cclxuICAgIF07XHJcbiAgICBmdW5jdGlvbiBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBTdGF0dXNJY29uVHlwZSB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFN0YXR1c0ljb25UeXBlID0gU3RhdHVzSWNvblR5cGUuVW5rbm93bjtcclxuXHJcbiAgICAgICAgaWYgKE1zZnRTbWUuaXNOdWxsT3JXaGl0ZVNwYWNlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFN0YXR1c0ljb25UeXBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiBzdGF0dXNJY29uVHlwZXMuZmluZCh0eXBlID0+IHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gdmFsdWUpIHx8IGRlZmF1bHRTdGF0dXNJY29uVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZnJvbUJpbmRhYmxlVHlwZSh2YWx1ZTogQmluZGFibGUpOiBTdGF0dXNJY29uVHlwZSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZnJvbVN0cmluZyh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0SWNvbkxheWVycyhpY29uVHlwZTogU3RhdHVzSWNvblR5cGUpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgc3dpdGNoIChpY29uVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLkNyaXRpY2FsOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnc21lLWljb24nLCAnc21lLWNvbG9yLWNyaXRpY2FsJywgJ3NtZS1pY29uLXN0YXR1c0Vycm9yRnVsbCddO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLkVycm9yOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnc21lLWljb24nLCAnc21lLWNvbG9yLWVycm9yJywgJ3NtZS1pY29uLWNyaXRpY2FsRXJyb3JTb2xpZCddO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWydzbWUtaWNvbicsICdzbWUtY29sb3Itd2FybmluZycsICdzbWUtaWNvbi13YXJuaW5nU29saWQnXTtcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5Qcm9ncmVzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1wcm9ncmVzcycsICdzbWUtaWNvbi1zeW5jU3RhdHVzU29saWQnXTtcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5JbmZvOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnc21lLWljb24nLCAnc21lLWNvbG9yLWluZm8nLCAnc21lLWljb24taW5mb1NvbGlkJ107XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuU3VjY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1zdWNjZXNzJywgJ3NtZS1pY29uLWNvbXBsZXRlZFNvbGlkJ107XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuVW5rbm93bjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1uZXV0cmFsJywgJ3NtZS1pY29uLXVua25vd25Tb2xpZCddO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1zdGF0dXMtaWNvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3RhdHVzLWljb24uY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGF0dXNJY29uQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ1N0YXR1c0ljb25Db21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5wdXQgYmluZGluZyBmb3IgdGhlIHNpemUgb2YgdGhlIGljb24gaW4gcGl4ZWxzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2l6ZTogbnVtYmVyIHwgc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5wdXQgYmluZGluZyBmb3IgdGhlIHN0YXR1cyBpY29uIHR5cGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgc3RhdHVzKHR5cGU6IFN0YXR1c0ljb25UeXBlKSB7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gW107XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuQ3JpdGljYWw6XHJcbiAgICAgICAgICAgICAgICBsYXllcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1jcml0aWNhbCcsICdzbWUtaWNvbi1zdGF0dXNFcnJvckZ1bGwnXVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzU3RyaW5nID0gdGhpcy5sb2NhbFN0cmluZ3MuQ3JpdGljYWw7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5FcnJvcjpcclxuICAgICAgICAgICAgICAgIGxheWVycy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIFsnc21lLWljb24nLCAnc21lLWNvbG9yLWVycm9yJywgJ3NtZS1pY29uLWNyaXRpY2FsRXJyb3JTb2xpZCddXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXNTdHJpbmcgPSB0aGlzLmxvY2FsU3RyaW5ncy5FcnJvcjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICBsYXllcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci13YXJuaW5nJywgJ3NtZS1pY29uLXdhcm5pbmdTb2xpZCddXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXNTdHJpbmcgPSB0aGlzLmxvY2FsU3RyaW5ncy5XYXJuaW5nO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgICBsYXllcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1wcm9ncmVzcycsICdzbWUtaWNvbi1zeW5jU3RhdHVzU29saWQnXVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzU3RyaW5nID0gdGhpcy5sb2NhbFN0cmluZ3MuUHJvZ3Jlc3M7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5JbmZvOlxyXG4gICAgICAgICAgICAgICAgbGF5ZXJzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgWydzbWUtaWNvbicsICdzbWUtY29sb3ItaW5mbycsICdzbWUtaWNvbi1pbmZvU29saWQnXVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzU3RyaW5nID0gdGhpcy5sb2NhbFN0cmluZ3MuSW5mbztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLlN1Y2Nlc3M6XHJcbiAgICAgICAgICAgICAgICBsYXllcnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICBbJ3NtZS1pY29uJywgJ3NtZS1jb2xvci1zdWNjZXNzJywgJ3NtZS1pY29uLWNvbXBsZXRlZFNvbGlkJ11cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXR1c1N0cmluZyA9IHRoaXMubG9jYWxTdHJpbmdzLlN1Y2Nlc3M7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5Vbmtub3duOlxyXG4gICAgICAgICAgICAgICAgbGF5ZXJzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgWydzbWUtaWNvbicsICdzbWUtY29sb3ItbmV1dHJhbCcsICdzbWUtaWNvbi11bmtub3duU29saWQnXVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzU3RyaW5nID0gdGhpcy5sb2NhbFN0cmluZ3MuVW5rbm93bjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxheWVycyA9IGxheWVycztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0aGUgaWNvbiBsYXllcnMgdXNlZCB0byBidWlsZCB0aGUgc3RhdHVzIGljb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGxheWVyczogYW55W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0aGUgc3RhdGUgb2YgdGhlIGljb24gYXMgYSBsb2NhbGl6ZWQgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXNTdHJpbmc6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIGxvY2FsU3RyaW5ncyA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5TdGF0dXNJY29uO1xyXG59XHJcbiIsIjxzbWUtbGF5ZXJlZC1pY29uIFtzaXplXT1cInNpemVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbdGl0bGVdPVwic3RhdHVzU3RyaW5nXCI+XHJcbiAgPHNtZS1pY29uLWxheWVyIFtzaXplXT1cInNpemVcIiAqbmdGb3I9XCJsZXQgbGF5ZXIgb2YgbGF5ZXJzXCIgW25nQ2xhc3NdPVwibGF5ZXJcIj48L3NtZS1pY29uLWxheWVyPlxyXG48L3NtZS1sYXllcmVkLWljb24+XHJcbjwhLS0gaW4gc2NhbiBtb2RlIHNjcmVlbiByZWFkZXIgZG9lcyBub3QgZm9jdXMgb24gdGhlIGxheWVyZWQtaWNvbiBwcm9wZXJseSB0byByZWFkIHRoZSB0aXRsZSAtLT5cclxuPGRpdiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3sgc3RhdHVzU3RyaW5nIH19PC9kaXY+XHJcbiJdfQ==