@xmagic/nz-formly
Version:
基于ng-zorro-antd UI 扩展的ngx-formly组件库
176 lines (174 loc) • 17.2 kB
JavaScript
import { ChangeDetectionStrategy, Component, Optional } from '@angular/core';
import { FieldType } from '@ngx-formly/core';
import { resolveTplName } from '@xmagic/nz-formly/common';
import * as i0 from "@angular/core";
import * as i1 from "@xmagic/nz-formly/common";
import * as i2 from "@angular/common";
import * as i3 from "ng-zorro-antd/tabs";
import * as i4 from "@ngx-formly/core";
export class FormlyFieldTabsComponent extends FieldType {
fieldTemplates;
defaultOptions = {
props: { nzTabPosition: 'top', nzType: 'line', nzAnimated: true, nzSize: 'default', nzLinkExact: true }
};
constructor(fieldTemplates) {
super();
this.fieldTemplates = fieldTemplates;
}
get nzTabBarExtraContent() {
return resolveTplName(this.props, this.fieldTemplates, 'nzTabBarExtraContent');
}
getNzTitle(config) {
return resolveTplName(config, this.fieldTemplates, 'nzTitle');
}
/**
* 获取tab内容
* @param item
*/
getNzxContent(item) {
return resolveTplName(item, this.fieldTemplates, 'nzxContent');
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormlyFieldTabsComponent, deps: [{ token: i1.FormlyBoxTemplates, optional: true }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormlyFieldTabsComponent, selector: "nz-formly-tabs", usesInheritance: true, ngImport: i0, template: `
<nz-tabset
[]="field"
[(nzSelectedIndex)]="props.nzSelectedIndex"
[]="props.nzAnimated"
[]="props.nzSize"
[]="nzTabBarExtraContent"
[]="props.nzTabBarStyle"
[]="props.nzTabPosition"
[]="props.nzType"
[]="props.nzTabBarGutter"
[]="props.nzHideAll"
[]="props.nzLinkRouter"
[]="props.nzLinkExact"
[]="props.nzCanDeactivate"
[]="props.nzCentered"
(nzSelectedIndexChange)="props.nzSelectedIndexChange?.($event, field, instance)"
(nzSelectChange)="props.nzSelectChange?.($event, field, instance)"
[]="props.nzHideAdd"
[]="props.nzAddIcon"
(nzAdd)="props.nzAdd?.($event, field, instance)"
(nzClose)="props.nzClose?.($event, field, instance)"
>
<ng-container *ngIf="props.tabs?.length; else fieldGroupTemplate">
<ng-container *ngFor="let item of props.tabs">
<nz-tab
*ngIf="item.hide !== false"
[]="getNzTitle(item)"
(nzClick)="item.nzClick?.($event, item.props.tab, instance)"
[]="item.nzForceRender"
[]="item.nzDisabled || item.disabled"
(nzContextmenu)="item.nzContextmenu?.($event, item.props.tab, instance)"
(nzSelect)="item.nzSelect?.($event, item.props.tab, instance)"
(nzDeselect)="item.nzDeselect?.($event, item.props.tab, instance)"
[]="item.nzClosable"
[]="item.nzCloseIcon"
[]="item"
>
<ng-container
*ngTemplateOutlet="getNzxContent(item); context: { $implicit: item, field: field }"
></ng-container>
</nz-tab>
</ng-container>
</ng-container>
<ng-template
<ng-container *ngFor="let item of field.fieldGroup">
<nz-tab
*ngIf="item.props.tab?.hide !== false"
[]="getNzTitle(item.props?.tab || {})"
(nzClick)="item.props.tab?.nzClick?.($event, item.props.tab, instance)"
[]="item.props.tab?.nzForceRender"
[]="item.props.tab?.nzDisabled || item.props.tab?.disabled"
(nzContextmenu)="item.props.tab?.nzContextmenu?.($event, item.props.tab, instance)"
(nzSelect)="item.props.tab?.nzSelect?.($event, item.props.tab, instance)"
(nzDeselect)="item.props.tab?.nzDeselect?.($event, item.props.tab, instance)"
[]="item.props.tab?.nzClosable"
[]="item.props.tab?.nzCloseIcon"
[]="item.props.tab"
>
<formly-field [field]="item"></formly-field>
</nz-tab>
</ng-container>
</ng-template>
</nz-tabset>
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.NzTabSetComponent, selector: "nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabset"] }, { kind: "component", type: i3.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "component", type: i4.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "directive", type: i4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormlyFieldTabsComponent, decorators: [{
type: Component,
args: [{
selector: 'nz-formly-tabs',
template: `
<nz-tabset
[]="field"
[(nzSelectedIndex)]="props.nzSelectedIndex"
[]="props.nzAnimated"
[]="props.nzSize"
[]="nzTabBarExtraContent"
[]="props.nzTabBarStyle"
[]="props.nzTabPosition"
[]="props.nzType"
[]="props.nzTabBarGutter"
[]="props.nzHideAll"
[]="props.nzLinkRouter"
[]="props.nzLinkExact"
[]="props.nzCanDeactivate"
[]="props.nzCentered"
(nzSelectedIndexChange)="props.nzSelectedIndexChange?.($event, field, instance)"
(nzSelectChange)="props.nzSelectChange?.($event, field, instance)"
[]="props.nzHideAdd"
[]="props.nzAddIcon"
(nzAdd)="props.nzAdd?.($event, field, instance)"
(nzClose)="props.nzClose?.($event, field, instance)"
>
<ng-container *ngIf="props.tabs?.length; else fieldGroupTemplate">
<ng-container *ngFor="let item of props.tabs">
<nz-tab
*ngIf="item.hide !== false"
[]="getNzTitle(item)"
(nzClick)="item.nzClick?.($event, item.props.tab, instance)"
[]="item.nzForceRender"
[]="item.nzDisabled || item.disabled"
(nzContextmenu)="item.nzContextmenu?.($event, item.props.tab, instance)"
(nzSelect)="item.nzSelect?.($event, item.props.tab, instance)"
(nzDeselect)="item.nzDeselect?.($event, item.props.tab, instance)"
[]="item.nzClosable"
[]="item.nzCloseIcon"
[]="item"
>
<ng-container
*ngTemplateOutlet="getNzxContent(item); context: { $implicit: item, field: field }"
></ng-container>
</nz-tab>
</ng-container>
</ng-container>
<ng-template
<ng-container *ngFor="let item of field.fieldGroup">
<nz-tab
*ngIf="item.props.tab?.hide !== false"
[]="getNzTitle(item.props?.tab || {})"
(nzClick)="item.props.tab?.nzClick?.($event, item.props.tab, instance)"
[]="item.props.tab?.nzForceRender"
[]="item.props.tab?.nzDisabled || item.props.tab?.disabled"
(nzContextmenu)="item.props.tab?.nzContextmenu?.($event, item.props.tab, instance)"
(nzSelect)="item.props.tab?.nzSelect?.($event, item.props.tab, instance)"
(nzDeselect)="item.props.tab?.nzDeselect?.($event, item.props.tab, instance)"
[]="item.props.tab?.nzClosable"
[]="item.props.tab?.nzCloseIcon"
[]="item.props.tab"
>
<formly-field [field]="item"></formly-field>
</nz-tab>
</ng-container>
</ng-template>
</nz-tabset>
`,
changeDetection: ChangeDetectionStrategy.OnPush
}]
}], ctorParameters: () => [{ type: i1.FormlyBoxTemplates, decorators: [{
type: Optional
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvdGFicy90YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFzQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBMkU5RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsU0FBUztJQUt0QjtJQUp0QixjQUFjLEdBQUc7UUFDeEIsS0FBSyxFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO0tBQ3hHLENBQUM7SUFFRixZQUErQixjQUFrQztRQUMvRCxLQUFLLEVBQUUsQ0FBQztRQURxQixtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7SUFFakUsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBaUI7UUFDMUIsT0FBTyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxJQUFjO1FBQzFCLE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7d0dBdkJVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDZFQXJFekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtFVDs7NEZBR1Usd0JBQXdCO2tCQXZFcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtFVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQU1jLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1seUJveFRlbXBsYXRlcywgcmVzb2x2ZVRwbE5hbWUgfSBmcm9tICdAeG1hZ2ljL256LWZvcm1seS9jb21tb24nO1xyXG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xyXG5pbXBvcnQgeyBUYWJzSXRlbSB9IGZyb20gJy4vZm9ybWx5LnR5cGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduei1mb3JtbHktdGFicycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxuei10YWJzZXRcclxuICAgICAgI2luc3RhbmNlXHJcbiAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcclxuICAgICAgWyhuelNlbGVjdGVkSW5kZXgpXT1cInByb3BzLm56U2VsZWN0ZWRJbmRleFwiXHJcbiAgICAgIFtuekFuaW1hdGVkXT1cInByb3BzLm56QW5pbWF0ZWRcIlxyXG4gICAgICBbbnpTaXplXT1cInByb3BzLm56U2l6ZVwiXHJcbiAgICAgIFtuelRhYkJhckV4dHJhQ29udGVudF09XCJuelRhYkJhckV4dHJhQ29udGVudFwiXHJcbiAgICAgIFtuelRhYkJhclN0eWxlXT1cInByb3BzLm56VGFiQmFyU3R5bGVcIlxyXG4gICAgICBbbnpUYWJQb3NpdGlvbl09XCJwcm9wcy5uelRhYlBvc2l0aW9uXCJcclxuICAgICAgW256VHlwZV09XCJwcm9wcy5uelR5cGVcIlxyXG4gICAgICBbbnpUYWJCYXJHdXR0ZXJdPVwicHJvcHMubnpUYWJCYXJHdXR0ZXJcIlxyXG4gICAgICBbbnpIaWRlQWxsXT1cInByb3BzLm56SGlkZUFsbFwiXHJcbiAgICAgIFtuekxpbmtSb3V0ZXJdPVwicHJvcHMubnpMaW5rUm91dGVyXCJcclxuICAgICAgW256TGlua0V4YWN0XT1cInByb3BzLm56TGlua0V4YWN0XCJcclxuICAgICAgW256Q2FuRGVhY3RpdmF0ZV09XCJwcm9wcy5uekNhbkRlYWN0aXZhdGVcIlxyXG4gICAgICBbbnpDZW50ZXJlZF09XCJwcm9wcy5uekNlbnRlcmVkXCJcclxuICAgICAgKG56U2VsZWN0ZWRJbmRleENoYW5nZSk9XCJwcm9wcy5uelNlbGVjdGVkSW5kZXhDaGFuZ2U/LigkZXZlbnQsIGZpZWxkLCBpbnN0YW5jZSlcIlxyXG4gICAgICAobnpTZWxlY3RDaGFuZ2UpPVwicHJvcHMubnpTZWxlY3RDaGFuZ2U/LigkZXZlbnQsIGZpZWxkLCBpbnN0YW5jZSlcIlxyXG4gICAgICBbbnpIaWRlQWRkXT1cInByb3BzLm56SGlkZUFkZFwiXHJcbiAgICAgIFtuekFkZEljb25dPVwicHJvcHMubnpBZGRJY29uXCJcclxuICAgICAgKG56QWRkKT1cInByb3BzLm56QWRkPy4oJGV2ZW50LCBmaWVsZCwgaW5zdGFuY2UpXCJcclxuICAgICAgKG56Q2xvc2UpPVwicHJvcHMubnpDbG9zZT8uKCRldmVudCwgZmllbGQsIGluc3RhbmNlKVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy50YWJzPy5sZW5ndGg7IGVsc2UgZmllbGRHcm91cFRlbXBsYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9wcy50YWJzXCI+XHJcbiAgICAgICAgICA8bnotdGFiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5oaWRlICE9PSBmYWxzZVwiXHJcbiAgICAgICAgICAgIFtuelRpdGxlXT1cImdldE56VGl0bGUoaXRlbSlcIlxyXG4gICAgICAgICAgICAobnpDbGljayk9XCJpdGVtLm56Q2xpY2s/LigkZXZlbnQsIGl0ZW0ucHJvcHMudGFiLCBpbnN0YW5jZSlcIlxyXG4gICAgICAgICAgICBbbnpGb3JjZVJlbmRlcl09XCJpdGVtLm56Rm9yY2VSZW5kZXJcIlxyXG4gICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJpdGVtLm56RGlzYWJsZWQgfHwgaXRlbS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChuekNvbnRleHRtZW51KT1cIml0ZW0ubnpDb250ZXh0bWVudT8uKCRldmVudCwgaXRlbS5wcm9wcy50YWIsIGluc3RhbmNlKVwiXHJcbiAgICAgICAgICAgIChuelNlbGVjdCk9XCJpdGVtLm56U2VsZWN0Py4oJGV2ZW50LCBpdGVtLnByb3BzLnRhYiwgaW5zdGFuY2UpXCJcclxuICAgICAgICAgICAgKG56RGVzZWxlY3QpPVwiaXRlbS5uekRlc2VsZWN0Py4oJGV2ZW50LCBpdGVtLnByb3BzLnRhYiwgaW5zdGFuY2UpXCJcclxuICAgICAgICAgICAgW256Q2xvc2FibGVdPVwiaXRlbS5uekNsb3NhYmxlXCJcclxuICAgICAgICAgICAgW256Q2xvc2VJY29uXT1cIml0ZW0ubnpDbG9zZUljb25cIlxyXG4gICAgICAgICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJpdGVtXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0Tnp4Q29udGVudChpdGVtKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGZpZWxkOiBmaWVsZCB9XCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uei10YWI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmaWVsZEdyb3VwVGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5maWVsZEdyb3VwXCI+XHJcbiAgICAgICAgICA8bnotdGFiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5wcm9wcy50YWI/LmhpZGUgIT09IGZhbHNlXCJcclxuICAgICAgICAgICAgW256VGl0bGVdPVwiZ2V0TnpUaXRsZShpdGVtLnByb3BzPy50YWIgfHwge30pXCJcclxuICAgICAgICAgICAgKG56Q2xpY2spPVwiaXRlbS5wcm9wcy50YWI/Lm56Q2xpY2s/LigkZXZlbnQsIGl0ZW0ucHJvcHMudGFiLCBpbnN0YW5jZSlcIlxyXG4gICAgICAgICAgICBbbnpGb3JjZVJlbmRlcl09XCJpdGVtLnByb3BzLnRhYj8ubnpGb3JjZVJlbmRlclwiXHJcbiAgICAgICAgICAgIFtuekRpc2FibGVkXT1cIml0ZW0ucHJvcHMudGFiPy5uekRpc2FibGVkIHx8IGl0ZW0ucHJvcHMudGFiPy5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChuekNvbnRleHRtZW51KT1cIml0ZW0ucHJvcHMudGFiPy5uekNvbnRleHRtZW51Py4oJGV2ZW50LCBpdGVtLnByb3BzLnRhYiwgaW5zdGFuY2UpXCJcclxuICAgICAgICAgICAgKG56U2VsZWN0KT1cIml0ZW0ucHJvcHMudGFiPy5uelNlbGVjdD8uKCRldmVudCwgaXRlbS5wcm9wcy50YWIsIGluc3RhbmNlKVwiXHJcbiAgICAgICAgICAgIChuekRlc2VsZWN0KT1cIml0ZW0ucHJvcHMudGFiPy5uekRlc2VsZWN0Py4oJGV2ZW50LCBpdGVtLnByb3BzLnRhYiwgaW5zdGFuY2UpXCJcclxuICAgICAgICAgICAgW256Q2xvc2FibGVdPVwiaXRlbS5wcm9wcy50YWI/Lm56Q2xvc2FibGVcIlxyXG4gICAgICAgICAgICBbbnpDbG9zZUljb25dPVwiaXRlbS5wcm9wcy50YWI/Lm56Q2xvc2VJY29uXCJcclxuICAgICAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiaXRlbS5wcm9wcy50YWJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJpdGVtXCI+PC9mb3JtbHktZmllbGQ+XHJcbiAgICAgICAgICA8L256LXRhYj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbnotdGFic2V0PlxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkVGFic0NvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZSB7XHJcbiAgb3ZlcnJpZGUgZGVmYXVsdE9wdGlvbnMgPSB7XHJcbiAgICBwcm9wczogeyBuelRhYlBvc2l0aW9uOiAndG9wJywgbnpUeXBlOiAnbGluZScsIG56QW5pbWF0ZWQ6IHRydWUsIG56U2l6ZTogJ2RlZmF1bHQnLCBuekxpbmtFeGFjdDogdHJ1ZSB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHVibGljIGZpZWxkVGVtcGxhdGVzOiBGb3JtbHlCb3hUZW1wbGF0ZXMpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbnpUYWJCYXJFeHRyYUNvbnRlbnQoKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZVRwbE5hbWUodGhpcy5wcm9wcywgdGhpcy5maWVsZFRlbXBsYXRlcywgJ256VGFiQmFyRXh0cmFDb250ZW50Jyk7XHJcbiAgfVxyXG5cclxuICBnZXROelRpdGxlKGNvbmZpZzogTnpTYWZlQW55KTogVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZVRwbE5hbWUoY29uZmlnLCB0aGlzLmZpZWxkVGVtcGxhdGVzLCAnbnpUaXRsZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+WdGFi5YaF5a65XHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKi9cclxuICBnZXROenhDb250ZW50KGl0ZW06IFRhYnNJdGVtKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZVRwbE5hbWUoaXRlbSwgdGhpcy5maWVsZFRlbXBsYXRlcywgJ256eENvbnRlbnQnKTtcclxuICB9XHJcbn1cclxuIl19