barsa-sap-ui 1.0.305 → 1.0.307
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +3 -3
- package/esm2020/lib/ui-pictures-info/ui-pictures-info.component.mjs +3 -3
- package/fesm2015/barsa-sap-ui.mjs +4 -4
- package/fesm2015/barsa-sap-ui.mjs.map +1 -1
- package/fesm2020/barsa-sap-ui.mjs +4 -4
- package/fesm2020/barsa-sap-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -87,11 +87,11 @@ export class BarsaCartableGroupComponent extends BaseViewItemPropsComponent {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
BarsaCartableGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaCartableGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
-
BarsaCartableGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaCartableGroupComponent, selector: "bsu-barsa-cartable-group", outputs: { events: "events" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <li\n [interactive]=\"true\"\n fd-list-item\n [selected]=\"allItemChecked ? true : false\"\n (click)=\"onRowCheckAll()\"\n *ngIf=\"allItem\"\n>\n <div class=\"title-container\">\n <div style=\"background-color: transparent; width: 0.2rem; height: 100%\"></div>\n <span fd-list-title>\n <div style=\"height: 100%; display: flex; align-items: center\">\n <span [style.fontSize]=\"allItem.unreadCount > 0 ? 'bold' : null\">{{ '\u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062F' | bbbTranslate }}</span>\n <ng-container *ngIf=\"allItem.unreadCount > 0\">\n <strong style=\"padding: 0 2px; direction: ltr\">({{ allItem.unreadCount }})</strong>\n </ng-container>\n <span style=\"padding: 0 5px\" *ngIf=\"allItem.allCount > 0\">{{ allItem.allCount }}</span>\n </div>\n </span>\n </div>\n</li> -->\n\n<ng-container>\n <ng-container *ngIf=\"allItem\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: '\u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062F' | bbbTranslate,\n unreadCount: allItem.unreadCount,\n allCount: allItem.allCount,\n backColor: 'transparent',\n isAll: true,\n isChecked: allItemChecked\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: parameters.CartableGroupField | rval: mo:allColumns:true,\n unreadCount: parameters.UnreadCountField | rval: mo:allColumns,\n allCount: parameters.AllCountField | rval: mo:allColumns,\n backColor:
|
|
90
|
+
BarsaCartableGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaCartableGroupComponent, selector: "bsu-barsa-cartable-group", outputs: { events: "events" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <li\n [interactive]=\"true\"\n fd-list-item\n [selected]=\"allItemChecked ? true : false\"\n (click)=\"onRowCheckAll()\"\n *ngIf=\"allItem\"\n>\n <div class=\"title-container\">\n <div style=\"background-color: transparent; width: 0.2rem; height: 100%\"></div>\n <span fd-list-title>\n <div style=\"height: 100%; display: flex; align-items: center\">\n <span [style.fontSize]=\"allItem.unreadCount > 0 ? 'bold' : null\">{{ '\u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062F' | bbbTranslate }}</span>\n <ng-container *ngIf=\"allItem.unreadCount > 0\">\n <strong style=\"padding: 0 2px; direction: ltr\">({{ allItem.unreadCount }})</strong>\n </ng-container>\n <span style=\"padding: 0 5px\" *ngIf=\"allItem.allCount > 0\">{{ allItem.allCount }}</span>\n </div>\n </span>\n </div>\n</li> -->\n\n<ng-container>\n <ng-container *ngIf=\"allItem\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: '\u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062F' | bbbTranslate,\n unreadCount: allItem.unreadCount,\n allCount: allItem.allCount,\n backColor: 'transparent',\n isAll: true,\n isChecked: allItemChecked\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: parameters.CartableGroupField | rval: mo:allColumns:true,\n unreadCount: parameters.UnreadCountField | rval: mo:allColumns,\n allCount: parameters.AllCountField | rval: mo:allColumns,\n backColor: (columns[0].Caption | rval: mo:columns),\n isChecked: isChecked,\n icon: parameters.IconField | rval: mo:allColumns:true,\n isBuiltin: isBuiltin\n }\n \"\n ></ng-container>\n</ng-container>\n<ng-container *ngIf=\"isLastBuiltin\">\n <li fd-list-item class=\"space\">\n <span fd-list-title></span>\n </li>\n</ng-container>\n<!-- <ng-container *ngIf=\"last\">\n <ul fd-list>\n <li fd-list-group-header>\n <span fd-list-title style=\"background:#f7f7f7\"></span>\n </li>\n <ng-container *ngFor=\"let mo2 of moDataList\">\n <ng-container *ngIf=\"'\u0633\u06CC\u0633\u062A\u0645\u06CC' | rval: mo2:allColumns\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: parameters.CartableGroupField | rval: mo2:allColumns:true,\n unreadCount: parameters.UnreadCountField | rval: mo2:allColumns,\n allCount: parameters.AllCountField | rval: mo2:allColumns,\n backColor: columns[0].Caption | rval: mo2:columns,\n isChecked: isChecked\n }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</ng-container> -->\n\n<!-- <li fd-list-item [selected]=\"isChecked ? true : false\" (click)=\"onRowCheck()\" [interactive]=\"true\">\n <div class=\"title-container\">\n <div [style.backgroundColor]=\"columns[0].Caption | rval: mo:columns\" style=\"width: 0.2rem; height: 100%\"></div>\n <span fd-list-title>\n <div style=\"height: 100%; display: flex; align-items: center\">\n <span [style.fontSize]=\"parameters.UnreadCountField | rval: mo:allColumns:(true ? 'bold' : null)\"\n >{{ parameters.CartableGroupField | rval: mo:allColumns:true }}\n </span>\n <ng-container *ngIf=\"parameters.UnreadCountField | rval: mo:allColumns:true\">\n <strong style=\"padding: 0 2px; direction: ltr\"\n >({{ parameters.UnreadCountField | rval: mo:allColumns:true }})</strong\n >\n </ng-container>\n <span style=\"padding: 0 5px\">{{ parameters.AllCountField | rval: mo:allColumns:true }}</span>\n </div>\n </span>\n </div>\n</li> -->\n<ng-template\n #itemTemplate\n let-caption\n let-unreadCount=\"unreadCount\"\n let-allCount=\"allCount\"\n let-backColor=\"backColor\"\n let-isAll=\"isAll\"\n let-isChecked=\"isChecked\"\n let-icon=\"icon\"\n let-isBuiltin=\"isBuiltin\"\n>\n <li\n *ngIf=\"isBuiltin || allCount > 0 || isAll\"\n fd-list-item\n [selected]=\"isChecked ? true : false\"\n (click)=\"onClick(isAll)\"\n [interactive]=\"true\"\n >\n <div class=\"title-container\">\n <div [style.backgroundColor]=\"backColor\" style=\"width: 0.2rem; height: 100%\"></div>\n <i *ngIf=\"icon\" fd-list-icon [glyph]=\"icon\"></i>\n <span fd-list-title>\n <div style=\"height: 100%; display: flex; align-items: center; column-gap: 5px\">\n <ng-container *ngIf=\"unreadCount && unreadCount > 0; else spanTemplate\">\n <strong>{{ caption }}</strong>\n <strong style=\"padding: 0 2px; direction: ltr\">({{ unreadCount }})</strong>\n </ng-container>\n <ng-template #spanTemplate>\n <span>{{ caption }}</span>\n </ng-template>\n <span style=\"padding: 0 5px\" *ngIf=\"allCount && allCount > 0\">{{ allCount }}</span>\n </div>\n </span>\n </div>\n </li>\n</ng-template>\n", styles: [":host{display:contents;width:100%;height:100%;cursor:pointer}.title-container{align-items:center;display:flex;column-gap:10px;height:100%;width:100%}li{padding:0}.space{cursor:default;pointer-events:none}.space:focus:before{border:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i2.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i2.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "class", "role"] }, { kind: "pipe", type: i3.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
91
91
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaCartableGroupComponent, decorators: [{
|
|
92
92
|
type: Component,
|
|
93
|
-
args: [{ selector: 'bsu-barsa-cartable-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <li\n [interactive]=\"true\"\n fd-list-item\n [selected]=\"allItemChecked ? true : false\"\n (click)=\"onRowCheckAll()\"\n *ngIf=\"allItem\"\n>\n <div class=\"title-container\">\n <div style=\"background-color: transparent; width: 0.2rem; height: 100%\"></div>\n <span fd-list-title>\n <div style=\"height: 100%; display: flex; align-items: center\">\n <span [style.fontSize]=\"allItem.unreadCount > 0 ? 'bold' : null\">{{ '\u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062F' | bbbTranslate }}</span>\n <ng-container *ngIf=\"allItem.unreadCount > 0\">\n <strong style=\"padding: 0 2px; direction: ltr\">({{ allItem.unreadCount }})</strong>\n </ng-container>\n <span style=\"padding: 0 5px\" *ngIf=\"allItem.allCount > 0\">{{ allItem.allCount }}</span>\n </div>\n </span>\n </div>\n</li> -->\n\n<ng-container>\n <ng-container *ngIf=\"allItem\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: '\u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062F' | bbbTranslate,\n unreadCount: allItem.unreadCount,\n allCount: allItem.allCount,\n backColor: 'transparent',\n isAll: true,\n isChecked: allItemChecked\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: parameters.CartableGroupField | rval: mo:allColumns:true,\n unreadCount: parameters.UnreadCountField | rval: mo:allColumns,\n allCount: parameters.AllCountField | rval: mo:allColumns,\n backColor:
|
|
93
|
+
args: [{ selector: 'bsu-barsa-cartable-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <li\n [interactive]=\"true\"\n fd-list-item\n [selected]=\"allItemChecked ? true : false\"\n (click)=\"onRowCheckAll()\"\n *ngIf=\"allItem\"\n>\n <div class=\"title-container\">\n <div style=\"background-color: transparent; width: 0.2rem; height: 100%\"></div>\n <span fd-list-title>\n <div style=\"height: 100%; display: flex; align-items: center\">\n <span [style.fontSize]=\"allItem.unreadCount > 0 ? 'bold' : null\">{{ '\u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062F' | bbbTranslate }}</span>\n <ng-container *ngIf=\"allItem.unreadCount > 0\">\n <strong style=\"padding: 0 2px; direction: ltr\">({{ allItem.unreadCount }})</strong>\n </ng-container>\n <span style=\"padding: 0 5px\" *ngIf=\"allItem.allCount > 0\">{{ allItem.allCount }}</span>\n </div>\n </span>\n </div>\n</li> -->\n\n<ng-container>\n <ng-container *ngIf=\"allItem\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: '\u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062F' | bbbTranslate,\n unreadCount: allItem.unreadCount,\n allCount: allItem.allCount,\n backColor: 'transparent',\n isAll: true,\n isChecked: allItemChecked\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: parameters.CartableGroupField | rval: mo:allColumns:true,\n unreadCount: parameters.UnreadCountField | rval: mo:allColumns,\n allCount: parameters.AllCountField | rval: mo:allColumns,\n backColor: (columns[0].Caption | rval: mo:columns),\n isChecked: isChecked,\n icon: parameters.IconField | rval: mo:allColumns:true,\n isBuiltin: isBuiltin\n }\n \"\n ></ng-container>\n</ng-container>\n<ng-container *ngIf=\"isLastBuiltin\">\n <li fd-list-item class=\"space\">\n <span fd-list-title></span>\n </li>\n</ng-container>\n<!-- <ng-container *ngIf=\"last\">\n <ul fd-list>\n <li fd-list-group-header>\n <span fd-list-title style=\"background:#f7f7f7\"></span>\n </li>\n <ng-container *ngFor=\"let mo2 of moDataList\">\n <ng-container *ngIf=\"'\u0633\u06CC\u0633\u062A\u0645\u06CC' | rval: mo2:allColumns\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n $implicit: parameters.CartableGroupField | rval: mo2:allColumns:true,\n unreadCount: parameters.UnreadCountField | rval: mo2:allColumns,\n allCount: parameters.AllCountField | rval: mo2:allColumns,\n backColor: columns[0].Caption | rval: mo2:columns,\n isChecked: isChecked\n }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</ng-container> -->\n\n<!-- <li fd-list-item [selected]=\"isChecked ? true : false\" (click)=\"onRowCheck()\" [interactive]=\"true\">\n <div class=\"title-container\">\n <div [style.backgroundColor]=\"columns[0].Caption | rval: mo:columns\" style=\"width: 0.2rem; height: 100%\"></div>\n <span fd-list-title>\n <div style=\"height: 100%; display: flex; align-items: center\">\n <span [style.fontSize]=\"parameters.UnreadCountField | rval: mo:allColumns:(true ? 'bold' : null)\"\n >{{ parameters.CartableGroupField | rval: mo:allColumns:true }}\n </span>\n <ng-container *ngIf=\"parameters.UnreadCountField | rval: mo:allColumns:true\">\n <strong style=\"padding: 0 2px; direction: ltr\"\n >({{ parameters.UnreadCountField | rval: mo:allColumns:true }})</strong\n >\n </ng-container>\n <span style=\"padding: 0 5px\">{{ parameters.AllCountField | rval: mo:allColumns:true }}</span>\n </div>\n </span>\n </div>\n</li> -->\n<ng-template\n #itemTemplate\n let-caption\n let-unreadCount=\"unreadCount\"\n let-allCount=\"allCount\"\n let-backColor=\"backColor\"\n let-isAll=\"isAll\"\n let-isChecked=\"isChecked\"\n let-icon=\"icon\"\n let-isBuiltin=\"isBuiltin\"\n>\n <li\n *ngIf=\"isBuiltin || allCount > 0 || isAll\"\n fd-list-item\n [selected]=\"isChecked ? true : false\"\n (click)=\"onClick(isAll)\"\n [interactive]=\"true\"\n >\n <div class=\"title-container\">\n <div [style.backgroundColor]=\"backColor\" style=\"width: 0.2rem; height: 100%\"></div>\n <i *ngIf=\"icon\" fd-list-icon [glyph]=\"icon\"></i>\n <span fd-list-title>\n <div style=\"height: 100%; display: flex; align-items: center; column-gap: 5px\">\n <ng-container *ngIf=\"unreadCount && unreadCount > 0; else spanTemplate\">\n <strong>{{ caption }}</strong>\n <strong style=\"padding: 0 2px; direction: ltr\">({{ unreadCount }})</strong>\n </ng-container>\n <ng-template #spanTemplate>\n <span>{{ caption }}</span>\n </ng-template>\n <span style=\"padding: 0 5px\" *ngIf=\"allCount && allCount > 0\">{{ allCount }}</span>\n </div>\n </span>\n </div>\n </li>\n</ng-template>\n", styles: [":host{display:contents;width:100%;height:100%;cursor:pointer}.title-container{align-items:center;display:flex;column-gap:10px;height:100%;width:100%}li{padding:0}.space{cursor:default;pointer-events:none}.space:focus:before{border:none}\n"] }]
|
|
94
94
|
}], propDecorators: { events: [{
|
|
95
95
|
type: Output
|
|
96
96
|
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtY2FydGFibGUtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtZ3JvdXAtY2FydGFibGUvYmFyc2EtY2FydGFibGUtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtZ3JvdXAtY2FydGFibGUvYmFyc2EtY2FydGFibGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsMEJBQTBCLEVBQXVCLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBUXZGLE1BQU0sT0FBTywyQkFBNEIsU0FBUSwwQkFBMEI7SUFOM0U7O1FBT2MsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBT3BFLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBcUZ6QjtJQW5GRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLE9B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QUFDLFVBQVUsRUFBRTtnQkFDZCxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3BCO1lBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hHLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNyRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUNoQyxDQUFDLEVBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQztZQUNGLFdBQVcsSUFBSSxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM3QyxDQUFDOzt3SEE1RlEsMkJBQTJCOzRHQUEzQiwyQkFBMkIsMklDVHhDLGd6TEF3SUE7MkZEL0hhLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDSSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU07OEJBR3JDLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50LCBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS1jYXJ0YWJsZS1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhcnNhLWNhcnRhYmxlLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS1jYXJ0YWJsZS1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhQ2FydGFibGVHcm91cENvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAT3V0cHV0KCkgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRpdGxlOiBzdHJpbmc7IGRhdGE6IGFueSB9PigpO1xuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgYWxsSXRlbTogeyB1bnJlYWRDb3VudDogbnVtYmVyOyBhbGxDb3VudDogbnVtYmVyIH07XG4gICAgYWxsSXRlbUNoZWNrZWQ6IGJvb2xlYW47XG4gICAgYnVpbHRpbkdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xuICAgIGlzTGFzdEJ1aWx0aW4gPSBmYWxzZTtcbiAgICBpc0J1aWx0aW46IGFueTtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGNBbGwodGhpcy5tb0RhdGFMaXN0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGVja1N5c3RlbWkoKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgbGV0IGRldGVjdENoYW5nZXMgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qga2V5cyA9IFsnbW8nLCAnbW9EYXRhTGlzdCcsICdpc0NoZWNrZWQnXTtcblxuICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXNba2V5XSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpc1trZXldID0gY2hhbmdlc1trZXldLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICBkZXRlY3RDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnbW9EYXRhTGlzdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FsY0FsbChjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tTeXN0ZW1pKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIF9yb3dDaGVja0FsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsSXRlbUNoZWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFsbEl0ZW1DaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ldmVudHMuZW1pdCh7IHRpdGxlOiAnZGVzZWxlY3RBbGwnLCBkYXRhOiBudWxsIH0pO1xuICAgICAgICB0aGlzLmV2ZW50cy5lbWl0KHsgdGl0bGU6ICdyb3dDaGVjaycsIGRhdGE6IHsgbW86IHsgSWQ6ICcwMScgfSwgaW5kZXg6IC0xIH0gfSk7XG4gICAgfVxuICAgIG9uQ2xpY2soaXNBbGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzQWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dDaGVja0FsbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93Q2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfcm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXZlbnRzLmVtaXQoeyB0aXRsZTogJ3Jvd0NoZWNrJywgZGF0YTogeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hlY2tTeXN0ZW1pKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQnVpbHRpbiA9IHRoaXMuX3JlcG9ydFZhbHVlUGlwZS50cmFuc2Zvcm0oJ9iz24zYs9iq2YXbjCcsIHRoaXMubW8sIHRoaXMuYWxsQ29sdW1ucyk7XG4gICAgICAgIGlmICh0aGlzLmluZGV4ICsgMSA8IHRoaXMubW9EYXRhTGlzdC5sZW5ndGggJiYgdGhpcy5pc0J1aWx0aW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNMYXN0QnVpbHRpbiA9ICF0aGlzLl9yZXBvcnRWYWx1ZVBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgICfYs9uM2LPYqtmF24wnLFxuICAgICAgICAgICAgICAgIHRoaXMubW9EYXRhTGlzdFt0aGlzLmluZGV4ICsgMV0sXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxDb2x1bW5zXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX2NhbGNBbGwobW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFsbENvdW50ID0gMDtcbiAgICAgICAgbGV0IHVucmVhZENvdW50ID0gMDtcbiAgICAgICAgbGV0IGlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICBtb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGlmIChjLiRJc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpc0NoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsQ291bnRUZW1wID0gdGhpcy5fcmVwb3J0VmFsdWVQaXBlLnRyYW5zZm9ybSh0aGlzLnBhcmFtZXRlcnMuQWxsQ291bnRGaWVsZCwgYywgdGhpcy5hbGxDb2x1bW5zKTtcbiAgICAgICAgICAgIGFsbENvdW50ICs9IGlzTmFOKCthbGxDb3VudFRlbXApID8gMCA6ICthbGxDb3VudFRlbXA7XG4gICAgICAgICAgICBjb25zdCB1bnJlYWRDb3VudFRlbXAgPSB0aGlzLl9yZXBvcnRWYWx1ZVBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5VbnJlYWRDb3VudEZpZWxkLFxuICAgICAgICAgICAgICAgIGMsXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxDb2x1bW5zXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdW5yZWFkQ291bnQgKz0gaXNOYU4oK3VucmVhZENvdW50VGVtcCkgPyAwIDogK3VucmVhZENvdW50VGVtcDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxsSXRlbUNoZWNrZWQgPSAhaXNDaGVja2VkO1xuICAgICAgICB0aGlzLmFsbEl0ZW0gPSB7IGFsbENvdW50LCB1bnJlYWRDb3VudCB9O1xuICAgIH1cbn1cbiIsIjwhLS0gPGxpXG4gICAgW2ludGVyYWN0aXZlXT1cInRydWVcIlxuICAgIGZkLWxpc3QtaXRlbVxuICAgIFtzZWxlY3RlZF09XCJhbGxJdGVtQ2hlY2tlZCA/IHRydWUgOiBmYWxzZVwiXG4gICAgKGNsaWNrKT1cIm9uUm93Q2hlY2tBbGwoKVwiXG4gICAgKm5nSWY9XCJhbGxJdGVtXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgd2lkdGg6IDAuMnJlbTsgaGVpZ2h0OiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnRTaXplXT1cImFsbEl0ZW0udW5yZWFkQ291bnQgPiAwID8gJ2JvbGQnIDogbnVsbFwiPnt7ICfZh9mF2Ycg2YXZiNin2LHYrycgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbEl0ZW0udW5yZWFkQ291bnQgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9XCJwYWRkaW5nOiAwIDJweDsgZGlyZWN0aW9uOiBsdHJcIj4oe3sgYWxsSXRlbS51bnJlYWRDb3VudCB9fSk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmc6IDAgNXB4XCIgKm5nSWY9XCJhbGxJdGVtLmFsbENvdW50ID4gMFwiPnt7IGFsbEl0ZW0uYWxsQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuPC9saT4gLS0+XG5cbjxuZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbEl0ZW1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6ICfZh9mF2Ycg2YXZiNin2LHYrycgfCBiYmJUcmFuc2xhdGUsXG4gICAgICAgICAgICAgICAgICAgIHVucmVhZENvdW50OiBhbGxJdGVtLnVucmVhZENvdW50LFxuICAgICAgICAgICAgICAgICAgICBhbGxDb3VudDogYWxsSXRlbS5hbGxDb3VudCxcbiAgICAgICAgICAgICAgICAgICAgYmFja0NvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICBpc0FsbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNDaGVja2VkOiBhbGxJdGVtQ2hlY2tlZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHBhcmFtZXRlcnMuQ2FydGFibGVHcm91cEZpZWxkIHwgcnZhbDogbW86YWxsQ29sdW1uczp0cnVlLFxuICAgICAgICAgICAgICAgIHVucmVhZENvdW50OiBwYXJhbWV0ZXJzLlVucmVhZENvdW50RmllbGQgfCBydmFsOiBtbzphbGxDb2x1bW5zLFxuICAgICAgICAgICAgICAgIGFsbENvdW50OiBwYXJhbWV0ZXJzLkFsbENvdW50RmllbGQgfCBydmFsOiBtbzphbGxDb2x1bW5zLFxuICAgICAgICAgICAgICAgIGJhY2tDb2xvcjogaXNCdWlsdGluID8gJ3RyYW5zcGFyZW50JyA6IChjb2x1bW5zWzBdLkNhcHRpb24gfCBydmFsOiBtbzpjb2x1bW5zKSxcbiAgICAgICAgICAgICAgICBpc0NoZWNrZWQ6IGlzQ2hlY2tlZCxcbiAgICAgICAgICAgICAgICBpY29uOiBwYXJhbWV0ZXJzLkljb25GaWVsZCB8IHJ2YWw6IG1vOmFsbENvbHVtbnM6dHJ1ZSxcbiAgICAgICAgICAgICAgICBpc0J1aWx0aW46IGlzQnVpbHRpblxuICAgICAgICAgICAgfVxuICAgICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdEJ1aWx0aW5cIj5cbiAgICA8bGkgZmQtbGlzdC1pdGVtIGNsYXNzPVwic3BhY2VcIj5cbiAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT48L3NwYW4+XG4gICAgPC9saT5cbjwvbmctY29udGFpbmVyPlxuPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwibGFzdFwiPlxuICAgIDx1bCBmZC1saXN0PlxuICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlIHN0eWxlPVwiYmFja2dyb3VuZDojZjdmN2Y3XCI+PC9zcGFuPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtbzIgb2YgbW9EYXRhTGlzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIifYs9uM2LPYqtmF24wnIHwgcnZhbDogbW8yOmFsbENvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBwYXJhbWV0ZXJzLkNhcnRhYmxlR3JvdXBGaWVsZCB8IHJ2YWw6IG1vMjphbGxDb2x1bW5zOnRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5yZWFkQ291bnQ6IHBhcmFtZXRlcnMuVW5yZWFkQ291bnRGaWVsZCB8IHJ2YWw6IG1vMjphbGxDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbENvdW50OiBwYXJhbWV0ZXJzLkFsbENvdW50RmllbGQgfCBydmFsOiBtbzI6YWxsQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrQ29sb3I6IGNvbHVtbnNbMF0uQ2FwdGlvbiB8IHJ2YWw6IG1vMjpjb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hlY2tlZDogaXNDaGVja2VkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdWw+XG48L25nLWNvbnRhaW5lcj4gLS0+XG5cbjwhLS0gPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwiaXNDaGVja2VkID8gdHJ1ZSA6IGZhbHNlXCIgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIFtpbnRlcmFjdGl2ZV09XCJ0cnVlXCI+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sdW1uc1swXS5DYXB0aW9uIHwgcnZhbDogbW86Y29sdW1uc1wiIHN0eWxlPVwid2lkdGg6IDAuMnJlbTsgaGVpZ2h0OiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnRTaXplXT1cInBhcmFtZXRlcnMuVW5yZWFkQ291bnRGaWVsZCB8IHJ2YWw6IG1vOmFsbENvbHVtbnM6KHRydWUgPyAnYm9sZCcgOiBudWxsKVwiXG4gICAgICAgICAgICAgICAgICAgID57eyBwYXJhbWV0ZXJzLkNhcnRhYmxlR3JvdXBGaWVsZCB8IHJ2YWw6IG1vOmFsbENvbHVtbnM6dHJ1ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFyYW1ldGVycy5VbnJlYWRDb3VudEZpZWxkIHwgcnZhbDogbW86YWxsQ29sdW1uczp0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9XCJwYWRkaW5nOiAwIDJweDsgZGlyZWN0aW9uOiBsdHJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPih7eyBwYXJhbWV0ZXJzLlVucmVhZENvdW50RmllbGQgfCBydmFsOiBtbzphbGxDb2x1bW5zOnRydWUgfX0pPC9zdHJvbmdcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZzogMCA1cHhcIj57eyBwYXJhbWV0ZXJzLkFsbENvdW50RmllbGQgfCBydmFsOiBtbzphbGxDb2x1bW5zOnRydWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuPC9saT4gLS0+XG48bmctdGVtcGxhdGVcbiAgICAjaXRlbVRlbXBsYXRlXG4gICAgbGV0LWNhcHRpb25cbiAgICBsZXQtdW5yZWFkQ291bnQ9XCJ1bnJlYWRDb3VudFwiXG4gICAgbGV0LWFsbENvdW50PVwiYWxsQ291bnRcIlxuICAgIGxldC1iYWNrQ29sb3I9XCJiYWNrQ29sb3JcIlxuICAgIGxldC1pc0FsbD1cImlzQWxsXCJcbiAgICBsZXQtaXNDaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICBsZXQtaWNvbj1cImljb25cIlxuICAgIGxldC1pc0J1aWx0aW49XCJpc0J1aWx0aW5cIlxuPlxuICAgIDxsaVxuICAgICAgICAqbmdJZj1cImlzQnVpbHRpbiB8fCBhbGxDb3VudCA+IDAgfHwgaXNBbGxcIlxuICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZCA/IHRydWUgOiBmYWxzZVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKGlzQWxsKVwiXG4gICAgICAgIFtpbnRlcmFjdGl2ZV09XCJ0cnVlXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJiYWNrQ29sb3JcIiBzdHlsZT1cIndpZHRoOiAwLjJyZW07IGhlaWdodDogMTAwJVwiPjwvZGl2PlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJpY29uXCIgZmQtbGlzdC1pY29uIFtnbHlwaF09XCJpY29uXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBjb2x1bW4tZ2FwOiA1cHhcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVucmVhZENvdW50ICYmIHVucmVhZENvdW50ID4gMDsgZWxzZSBzcGFuVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2FwdGlvbiB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBzdHlsZT1cInBhZGRpbmc6IDAgMnB4OyBkaXJlY3Rpb246IGx0clwiPih7eyB1bnJlYWRDb3VudCB9fSk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3BhblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY2FwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nOiAwIDVweFwiICpuZ0lmPVwiYWxsQ291bnQgJiYgYWxsQ291bnQgPiAwXCI+e3sgYWxsQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtY2FydGFibGUtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtZ3JvdXAtY2FydGFibGUvYmFyc2EtY2FydGFibGUtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtZ3JvdXAtY2FydGFibGUvYmFyc2EtY2FydGFibGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsMEJBQTBCLEVBQXVCLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBUXZGLE1BQU0sT0FBTywyQkFBNEIsU0FBUSwwQkFBMEI7SUFOM0U7O1FBT2MsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBT3BFLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBcUZ6QjtJQW5GRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLE9B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QUFDLFVBQVUsRUFBRTtnQkFDZCxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3BCO1lBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hHLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNyRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUNoQyxDQUFDLEVBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQztZQUNGLFdBQVcsSUFBSSxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM3QyxDQUFDOzt3SEE1RlEsMkJBQTJCOzRHQUEzQiwyQkFBMkIsMklDVHhDLG94TEF3SUE7MkZEL0hhLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDSSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU07OEJBR3JDLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50LCBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS1jYXJ0YWJsZS1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhcnNhLWNhcnRhYmxlLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS1jYXJ0YWJsZS1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhQ2FydGFibGVHcm91cENvbXBvbmVudCBleHRlbmRzIEJhc2VWaWV3SXRlbVByb3BzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAT3V0cHV0KCkgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRpdGxlOiBzdHJpbmc7IGRhdGE6IGFueSB9PigpO1xuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgYWxsSXRlbTogeyB1bnJlYWRDb3VudDogbnVtYmVyOyBhbGxDb3VudDogbnVtYmVyIH07XG4gICAgYWxsSXRlbUNoZWNrZWQ6IGJvb2xlYW47XG4gICAgYnVpbHRpbkdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xuICAgIGlzTGFzdEJ1aWx0aW4gPSBmYWxzZTtcbiAgICBpc0J1aWx0aW46IGFueTtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGNBbGwodGhpcy5tb0RhdGFMaXN0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGVja1N5c3RlbWkoKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgbGV0IGRldGVjdENoYW5nZXMgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qga2V5cyA9IFsnbW8nLCAnbW9EYXRhTGlzdCcsICdpc0NoZWNrZWQnXTtcblxuICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNoYW5nZXNba2V5XSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpc1trZXldID0gY2hhbmdlc1trZXldLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICBkZXRlY3RDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnbW9EYXRhTGlzdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FsY0FsbChjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tTeXN0ZW1pKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIF9yb3dDaGVja0FsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsSXRlbUNoZWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFsbEl0ZW1DaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ldmVudHMuZW1pdCh7IHRpdGxlOiAnZGVzZWxlY3RBbGwnLCBkYXRhOiBudWxsIH0pO1xuICAgICAgICB0aGlzLmV2ZW50cy5lbWl0KHsgdGl0bGU6ICdyb3dDaGVjaycsIGRhdGE6IHsgbW86IHsgSWQ6ICcwMScgfSwgaW5kZXg6IC0xIH0gfSk7XG4gICAgfVxuICAgIG9uQ2xpY2soaXNBbGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzQWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dDaGVja0FsbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93Q2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfcm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXZlbnRzLmVtaXQoeyB0aXRsZTogJ3Jvd0NoZWNrJywgZGF0YTogeyBtbzogdGhpcy5tbywgaW5kZXg6IHRoaXMuaW5kZXggfSB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hlY2tTeXN0ZW1pKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQnVpbHRpbiA9IHRoaXMuX3JlcG9ydFZhbHVlUGlwZS50cmFuc2Zvcm0oJ9iz24zYs9iq2YXbjCcsIHRoaXMubW8sIHRoaXMuYWxsQ29sdW1ucyk7XG4gICAgICAgIGlmICh0aGlzLmluZGV4ICsgMSA8IHRoaXMubW9EYXRhTGlzdC5sZW5ndGggJiYgdGhpcy5pc0J1aWx0aW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNMYXN0QnVpbHRpbiA9ICF0aGlzLl9yZXBvcnRWYWx1ZVBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgICfYs9uM2LPYqtmF24wnLFxuICAgICAgICAgICAgICAgIHRoaXMubW9EYXRhTGlzdFt0aGlzLmluZGV4ICsgMV0sXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxDb2x1bW5zXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX2NhbGNBbGwobW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFsbENvdW50ID0gMDtcbiAgICAgICAgbGV0IHVucmVhZENvdW50ID0gMDtcbiAgICAgICAgbGV0IGlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICBtb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGlmIChjLiRJc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpc0NoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxsQ291bnRUZW1wID0gdGhpcy5fcmVwb3J0VmFsdWVQaXBlLnRyYW5zZm9ybSh0aGlzLnBhcmFtZXRlcnMuQWxsQ291bnRGaWVsZCwgYywgdGhpcy5hbGxDb2x1bW5zKTtcbiAgICAgICAgICAgIGFsbENvdW50ICs9IGlzTmFOKCthbGxDb3VudFRlbXApID8gMCA6ICthbGxDb3VudFRlbXA7XG4gICAgICAgICAgICBjb25zdCB1bnJlYWRDb3VudFRlbXAgPSB0aGlzLl9yZXBvcnRWYWx1ZVBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5VbnJlYWRDb3VudEZpZWxkLFxuICAgICAgICAgICAgICAgIGMsXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxDb2x1bW5zXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdW5yZWFkQ291bnQgKz0gaXNOYU4oK3VucmVhZENvdW50VGVtcCkgPyAwIDogK3VucmVhZENvdW50VGVtcDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxsSXRlbUNoZWNrZWQgPSAhaXNDaGVja2VkO1xuICAgICAgICB0aGlzLmFsbEl0ZW0gPSB7IGFsbENvdW50LCB1bnJlYWRDb3VudCB9O1xuICAgIH1cbn1cbiIsIjwhLS0gPGxpXG4gICAgW2ludGVyYWN0aXZlXT1cInRydWVcIlxuICAgIGZkLWxpc3QtaXRlbVxuICAgIFtzZWxlY3RlZF09XCJhbGxJdGVtQ2hlY2tlZCA/IHRydWUgOiBmYWxzZVwiXG4gICAgKGNsaWNrKT1cIm9uUm93Q2hlY2tBbGwoKVwiXG4gICAgKm5nSWY9XCJhbGxJdGVtXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgd2lkdGg6IDAuMnJlbTsgaGVpZ2h0OiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnRTaXplXT1cImFsbEl0ZW0udW5yZWFkQ291bnQgPiAwID8gJ2JvbGQnIDogbnVsbFwiPnt7ICfZh9mF2Ycg2YXZiNin2LHYrycgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbEl0ZW0udW5yZWFkQ291bnQgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9XCJwYWRkaW5nOiAwIDJweDsgZGlyZWN0aW9uOiBsdHJcIj4oe3sgYWxsSXRlbS51bnJlYWRDb3VudCB9fSk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmc6IDAgNXB4XCIgKm5nSWY9XCJhbGxJdGVtLmFsbENvdW50ID4gMFwiPnt7IGFsbEl0ZW0uYWxsQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuPC9saT4gLS0+XG5cbjxuZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbEl0ZW1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6ICfZh9mF2Ycg2YXZiNin2LHYrycgfCBiYmJUcmFuc2xhdGUsXG4gICAgICAgICAgICAgICAgICAgIHVucmVhZENvdW50OiBhbGxJdGVtLnVucmVhZENvdW50LFxuICAgICAgICAgICAgICAgICAgICBhbGxDb3VudDogYWxsSXRlbS5hbGxDb3VudCxcbiAgICAgICAgICAgICAgICAgICAgYmFja0NvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICBpc0FsbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNDaGVja2VkOiBhbGxJdGVtQ2hlY2tlZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHBhcmFtZXRlcnMuQ2FydGFibGVHcm91cEZpZWxkIHwgcnZhbDogbW86YWxsQ29sdW1uczp0cnVlLFxuICAgICAgICAgICAgICAgIHVucmVhZENvdW50OiBwYXJhbWV0ZXJzLlVucmVhZENvdW50RmllbGQgfCBydmFsOiBtbzphbGxDb2x1bW5zLFxuICAgICAgICAgICAgICAgIGFsbENvdW50OiBwYXJhbWV0ZXJzLkFsbENvdW50RmllbGQgfCBydmFsOiBtbzphbGxDb2x1bW5zLFxuICAgICAgICAgICAgICAgIGJhY2tDb2xvcjogKGNvbHVtbnNbMF0uQ2FwdGlvbiB8IHJ2YWw6IG1vOmNvbHVtbnMpLFxuICAgICAgICAgICAgICAgIGlzQ2hlY2tlZDogaXNDaGVja2VkLFxuICAgICAgICAgICAgICAgIGljb246IHBhcmFtZXRlcnMuSWNvbkZpZWxkIHwgcnZhbDogbW86YWxsQ29sdW1uczp0cnVlLFxuICAgICAgICAgICAgICAgIGlzQnVpbHRpbjogaXNCdWlsdGluXG4gICAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXN0QnVpbHRpblwiPlxuICAgIDxsaSBmZC1saXN0LWl0ZW0gY2xhc3M9XCJzcGFjZVwiPlxuICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPjwvc3Bhbj5cbiAgICA8L2xpPlxuPC9uZy1jb250YWluZXI+XG48IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXN0XCI+XG4gICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGUgc3R5bGU9XCJiYWNrZ3JvdW5kOiNmN2Y3ZjdcIj48L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1vMiBvZiBtb0RhdGFMaXN0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiJ9iz24zYs9iq2YXbjCcgfCBydmFsOiBtbzI6YWxsQ29sdW1uc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHBhcmFtZXRlcnMuQ2FydGFibGVHcm91cEZpZWxkIHwgcnZhbDogbW8yOmFsbENvbHVtbnM6dHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJlYWRDb3VudDogcGFyYW1ldGVycy5VbnJlYWRDb3VudEZpZWxkIHwgcnZhbDogbW8yOmFsbENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsQ291bnQ6IHBhcmFtZXRlcnMuQWxsQ291bnRGaWVsZCB8IHJ2YWw6IG1vMjphbGxDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tDb2xvcjogY29sdW1uc1swXS5DYXB0aW9uIHwgcnZhbDogbW8yOmNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGVja2VkOiBpc0NoZWNrZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbjwvbmctY29udGFpbmVyPiAtLT5cblxuPCEtLSA8bGkgZmQtbGlzdC1pdGVtIFtzZWxlY3RlZF09XCJpc0NoZWNrZWQgPyB0cnVlIDogZmFsc2VcIiAoY2xpY2spPVwib25Sb3dDaGVjaygpXCIgW2ludGVyYWN0aXZlXT1cInRydWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb2x1bW5zWzBdLkNhcHRpb24gfCBydmFsOiBtbzpjb2x1bW5zXCIgc3R5bGU9XCJ3aWR0aDogMC4ycmVtOyBoZWlnaHQ6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udFNpemVdPVwicGFyYW1ldGVycy5VbnJlYWRDb3VudEZpZWxkIHwgcnZhbDogbW86YWxsQ29sdW1uczoodHJ1ZSA/ICdib2xkJyA6IG51bGwpXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IHBhcmFtZXRlcnMuQ2FydGFibGVHcm91cEZpZWxkIHwgcnZhbDogbW86YWxsQ29sdW1uczp0cnVlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXJhbWV0ZXJzLlVucmVhZENvdW50RmllbGQgfCBydmFsOiBtbzphbGxDb2x1bW5zOnRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBzdHlsZT1cInBhZGRpbmc6IDAgMnB4OyBkaXJlY3Rpb246IGx0clwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+KHt7IHBhcmFtZXRlcnMuVW5yZWFkQ291bnRGaWVsZCB8IHJ2YWw6IG1vOmFsbENvbHVtbnM6dHJ1ZSB9fSk8L3N0cm9uZ1xuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nOiAwIDVweFwiPnt7IHBhcmFtZXRlcnMuQWxsQ291bnRGaWVsZCB8IHJ2YWw6IG1vOmFsbENvbHVtbnM6dHJ1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG48L2xpPiAtLT5cbjxuZy10ZW1wbGF0ZVxuICAgICNpdGVtVGVtcGxhdGVcbiAgICBsZXQtY2FwdGlvblxuICAgIGxldC11bnJlYWRDb3VudD1cInVucmVhZENvdW50XCJcbiAgICBsZXQtYWxsQ291bnQ9XCJhbGxDb3VudFwiXG4gICAgbGV0LWJhY2tDb2xvcj1cImJhY2tDb2xvclwiXG4gICAgbGV0LWlzQWxsPVwiaXNBbGxcIlxuICAgIGxldC1pc0NoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgIGxldC1pY29uPVwiaWNvblwiXG4gICAgbGV0LWlzQnVpbHRpbj1cImlzQnVpbHRpblwiXG4+XG4gICAgPGxpXG4gICAgICAgICpuZ0lmPVwiaXNCdWlsdGluIHx8IGFsbENvdW50ID4gMCB8fCBpc0FsbFwiXG4gICAgICAgIGZkLWxpc3QtaXRlbVxuICAgICAgICBbc2VsZWN0ZWRdPVwiaXNDaGVja2VkID8gdHJ1ZSA6IGZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soaXNBbGwpXCJcbiAgICAgICAgW2ludGVyYWN0aXZlXT1cInRydWVcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJhY2tDb2xvclwiIHN0eWxlPVwid2lkdGg6IDAuMnJlbTsgaGVpZ2h0OiAxMDAlXCI+PC9kaXY+XG4gICAgICAgICAgICA8aSAqbmdJZj1cImljb25cIiBmZC1saXN0LWljb24gW2dseXBoXT1cImljb25cIj48L2k+XG4gICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbHVtbi1nYXA6IDVweFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidW5yZWFkQ291bnQgJiYgdW5yZWFkQ291bnQgPiAwOyBlbHNlIHNwYW5UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjYXB0aW9uIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIHN0eWxlPVwicGFkZGluZzogMCAycHg7IGRpcmVjdGlvbjogbHRyXCI+KHt7IHVucmVhZENvdW50IH19KTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzcGFuVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjYXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmc6IDAgNXB4XCIgKm5nSWY9XCJhbGxDb3VudCAmJiBhbGxDb3VudCA+IDBcIj57eyBhbGxDb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9saT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -207,10 +207,10 @@ export class UiPicturesInfoComponent extends DeviceInfoFieldBaseComponent {
|
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
UiPicturesInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPicturesInfoComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
210
|
-
UiPicturesInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPicturesInfoComponent, selector: "bsu-ui-pictures-info", inputs: { value: "value" }, providers: [UploadService], viewQueries: [{ propertyName: "gallery", first: true, predicate: ["gallery"], descendants: true }, { propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n [id]=\"id\"\r\n [name]=\"'pictures_' + id\"\r\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\r\n accept=\".png,.jpg,.bpm,.jpeg,.gif,.png,.tif\"\r\n [fileLimit]=\"maxFileCount === 0 ? 100 : maxFileCount\"\r\n [multiple]=\"maxFileCount === 0 || maxFileCount > 1\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n></fd-file-uploader>\r\n<!-- <ng-container *ngTemplateOutlet=\"toolbarTpl\"></ng-container>\r\n<ng-template #toolbarTpl let-inDialog=\"inDialog\">\r\n <fd-toolbar *untilInView=\"el\" [fdType]=\"'transparent'\" [clearBorder]=\"true\" [shouldOverflow]=\"true\">\r\n <fdp-button *ngIf=\"!inDialog\"\r\n [disabled]=\"!(value | canUploadFile: maxFileCount:(disable$ | async)!!:(readonly$ | async)!!)\"\r\n fd-toolbar-item glyph=\"attachment\" buttonType=\"transparent\" (click)=\"uploader.open()\"></fdp-button>\r\n <fdp-button [disabled]=\"selectedIndex === -1 || (disableOrReadonly$ | async)!!\" class=\"delete\" fd-toolbar-item\r\n glyph=\"delete\" [buttonType]=\"'transparent'\" (click)=\"onDelete()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"zoom-in\" [buttonType]=\"'transparent'\" (click)=\"onZoomIn()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"zoom-out\" [buttonType]=\"'transparent'\" (click)=\"onZoomOut()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"exitfullscreen\" [buttonType]=\"'transparent'\"\r\n (click)=\"onFillOriginal()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"resize-horizontal\" [buttonType]=\"'transparent'\"\r\n (click)=\"onFillWidth()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"resize\" [buttonType]=\"'transparent'\" (click)=\"onFillAll()\"></fdp-button>\r\n <ng-container *ngIf=\"!inDialog\">\r\n <fdp-split-menu-button fd-toolbar-item [readonly]=\"(readonly$ | async)!!\" [disabled]=\"(readonly$ | async)!!\"\r\n *ngIf=\"value | canUploadFile: maxFileCount:(disable$ | async)!!:(readonly$ | async)!!\" [menu]=\"menu1\"\r\n [buttonLabel]=\"'Scan' | bbbTranslate\" [title]=\"'Scan' | bbbTranslate\" type=\"transparent\"\r\n [menuTitle]=\"'Scan' | bbbTranslate\" (primaryButtonClick)=\"onScan()\">\r\n </fdp-split-menu-button>\r\n <fdp-menu #menu1 xPosition=\"after\">\r\n <fdp-menu-item (itemSelect)=\"onAdvanceScan()\">{{ 'AdvancedScan' | bbbTranslate }}</fdp-menu-item>\r\n </fdp-menu>\r\n </ng-container>\r\n </fd-toolbar>\r\n</ng-template> -->\r\n\r\n<!-- <ng-container *ngIf=\"mediaData$ | async as mediaData\">\r\n <div *ngIf=\"mediaData.length > 0; else hashed\" dir=\"rtl\" class=\"gallery\" #gallery>\r\n <div class=\"column small-imgs-box\">\r\n <div class=\"pics\" (click)=\"onThumbnailClicked(i)\" *ngFor=\"let media of mediaData; let i = index\"\r\n [class.selected]=\"i === selectedIndex || (!selectedIndex && i === 0)\">\r\n <img [src]=\"media.thumbnailUrl\" />\r\n </div>\r\n </div>\r\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\" [class.fill-all]=\"fillAll\"\r\n [class.fill-original]=\"fillOriginal\" [ngClass]=\"selectedZoom\">\r\n <div class=\"pics\" [id]=\"i\" *ngFor=\"let media of mediaData; let i = index\">\r\n <img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #hashed>\r\n <div class=\"hatchBackground\" style=\"display: flex; align-items: center; justify-content: center\"></div>\r\n </ng-template>\r\n</ng-container> -->\r\n\r\n<ng-container *ngTemplateOutlet=\"layoutGridTpl\"></ng-container>\r\n<ng-template #layoutGridTpl let-inDialog=\"inDialog\">\r\n <fd-layout-grid>\r\n <div fdLayoutGridRow *ngIf=\"mediaData$ | async as mediaData\">\r\n <div\r\n *ngFor=\"let media of mediaData; let i = index\"\r\n [fdLayoutGridCol]=\"6\"\r\n [colMd]=\"3\"\r\n [colLg]=\"2\"\r\n [colXl]=\"2\"\r\n (click)=\"onMedaiClick(media, i)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n cardTpl;\r\n context: { $implicit: media, mediaData: this.mediaData, inDialog: this.inDialog, index: i }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div *ngIf=\"!inDialog\" [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\">\r\n <ng-container *ngTemplateOutlet=\"newFile\"></ng-container>\r\n </div>\r\n </div>\r\n </fd-layout-grid>\r\n</ng-template>\r\n<ng-template #cardTpl let-media let-mediaData=\"mediaData\" let-inDialog=\"inDialog\" let-index=\"index\">\r\n <fd-card class=\"media\" [class.inDialog]=\"inDialog\">\r\n <fd-card-content style=\"text-align: center; height: 120px\">\r\n <img imgLazy [imgLazy]=\"media.thumbnailUrl\" [src]=\"media.thumbnailUrl\" />\r\n </fd-card-content>\r\n <fd-card-footer *ngIf=\"!inDialog\">\r\n <button\r\n glyph=\"message-information\"\r\n *fdCardFooterActionItem\r\n fd-button\r\n fdType=\"transparent\"\r\n [fd-inline-help]=\"media.title\"\r\n [triggers]=\"['click']\"\r\n [closeOnOutsideClick]=\"true\"\r\n ></button>\r\n <button\r\n glyph=\"full-screen\"\r\n *fdCardFooterActionItem\r\n fd-button\r\n fdType=\"transparent\"\r\n (click)=\"onFullscreen(media, mediaData)\"\r\n ></button>\r\n <button\r\n glyph=\"delete\"\r\n *fdCardFooterActionItem\r\n fd-button\r\n fdType=\"transparent\"\r\n (click)=\"onDelete(index)\"\r\n ></button>\r\n </fd-card-footer>\r\n </fd-card>\r\n</ng-template>\r\n<ng-template #newFile>\r\n <div style=\"position: relative; height: 100%\">\r\n <fd-card>\r\n <fd-card-content style=\"display: flex; align-items: center; justify-content: center; min-height: 120px\">\r\n <button\r\n fd-button\r\n glyph=\"add-photo\"\r\n fdType=\"transparent\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n </fd-card-content>\r\n\r\n <fd-card-footer style=\"border-top: 1px solid #ccc\">\r\n <button fd-button [glyph]=\"'overflow'\" [fdType]=\"'transparent'\" [fdMenuTrigger]=\"menu\"></button>\r\n <fd-menu #menu>\r\n <li fd-menu-item (click)=\"onScan()\">\r\n <a fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Scan' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n <li fd-menu-item (click)=\"onAdvanceScan()\">\r\n <a fd-menu-interactive>\r\n <span fd-menu-title>{{ 'AdvancedScan' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n </fd-menu>\r\n </fd-card-footer>\r\n </fd-card>\r\n <bsu-mask *ngIf=\"(uploadingState$ | async)?.uploading === true\"></bsu-mask>\r\n </div>\r\n</ng-template>\r\n<ng-template #dialogTemplate let-dialog let-dialogConfig=\"dialogConfig\">\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTpl class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h1 fd-title>{{ Setting.ControlFieldCaptionTranslated }}</h1>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n *ngIf=\"!dialogConfig.fullscreen\"\r\n ariaLabel=\"Fit image size\"\r\n [glyph]=\"'resize'\"\r\n [fdType]=\"fillWidth ? 'emphasized' : 'transparent'\"\r\n (click)=\"fillWidth = !fillWidth\"\r\n ></fd-button-bar>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.close()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body #fdbody>\r\n <div #gallery class=\"gallery inDialog\" style=\"flex: 1\">\r\n <div\r\n *ngFor=\"let media of dialog.data.mediaData; let i = index\"\r\n class=\"column big-imgs-box\"\r\n [class.fill-width]=\"fillWidth\"\r\n [class.fill-all]=\"fillAll\"\r\n [class.fill-original]=\"fillOriginal\"\r\n [ngClass]=\"selectedZoom\"\r\n >\r\n <div class=\"pics\" [id]=\"i\">\r\n <bsu-mask></bsu-mask>\r\n <img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(deviceSize$ | async) !== 's'\" class=\"thumbnail\" style=\"flex-shrink: 1\">\r\n <ng-cotainer *ngTemplateOutlet=\"layoutGridTpl; context: { inDialog: true }\"></ng-cotainer>\r\n </div>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{position:relative}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}fd-toolbar{width:100%}fd-dialog-footer{justify-content:center}.hatchBackground{min-height:100px}.gallery{display:flex;width:100%;height:400px;column-gap:1px;background-color:var(--sapField_Background, #fff)}.gallery ::-webkit-scrollbar{width:7px;height:7px}.gallery ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:4px}.gallery ::-webkit-scrollbar-thumb{background:rgb(85,84,84);border-radius:4px}.gallery ::-webkit-scrollbar-thumb:hover{background:#2c2b2b}.gallery .column{overflow-y:scroll;display:flex;flex-direction:column;row-gap:3%;align-items:center}.gallery .column .pics{width:100%;display:flex;justify-content:center}.gallery .column .pics img{border-radius:5px}.gallery .column.small-imgs-box{flex:10%}.gallery .column.big-imgs-box{flex:90%}.gallery .selected{background-color:#fff;border:3px solid #0294d8;padding:10px}.gallery .fill-width img{width:100%!important}.gallery .fill-all .pics{height:100%}.gallery .fill-all img{width:100%!important;height:100%!important;object-fit:fill!important}.gallery .fill-original img{width:unset;height:unset}.gallery .zoom1 img{zoom:1}.gallery .zoom1-5 img{zoom:1.5}.gallery .zoom2 img{zoom:2}fd-dialog .gallery{overflow:auto}fd-dialog .gallery .column{overflow:initial}fd-dialog .gallery .pics{position:relative}fd-dialog fd-dialog-body{display:flex}fd-dialog.horizontal fd-dialog-body{flex-direction:column}fd-dialog.horizontal .gallery{flex-direction:row}fd-dialog.horizontal .thumbnail{border-top:1px solid #ccc;overflow-x:auto}fd-dialog.vertical fd-dialog-body{flex-direction:row-reverse}fd-dialog.vertical .gallery{flex-direction:column;height:100%}fd-dialog.vertical .thumbnail{border-left:1px solid #ccc;height:100%;width:200px;overflow-y:auto}fd-dialog.vertical .thumbnail ::ng-deep .fd-row>div{width:100%;min-width:100%}fd-card.media fd-card-footer button{border:none}fd-card.inDialog fd-card-header{padding-top:5px;padding-bottom:5px}.fd-col{min-width:165px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "directive", type: i3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i3.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i5.CardFooterComponent, selector: "fd-card-footer" }, { kind: "directive", type: i5.CardFooterActionItemDirective, selector: "[fdCardFooterActionItem]" }, { kind: "component", type: i6.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "directive", type: i7.InlineHelpDirective, selector: "[fd-inline-help], [fd-inline-help-template]", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help", "fd-inline-help-template"] }, { kind: "component", type: i8.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i8.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i8.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i9.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i9.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i9.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i9.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i9.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i10.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i10.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i10.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i11.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i12.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "component", type: i13.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
210
|
+
UiPicturesInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiPicturesInfoComponent, selector: "bsu-ui-pictures-info", inputs: { value: "value" }, providers: [UploadService], viewQueries: [{ propertyName: "gallery", first: true, predicate: ["gallery"], descendants: true }, { propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [id]=\"id\"\n [name]=\"'pictures_' + id\"\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\n accept=\".png,.jpg,.bpm,.jpeg,.gif,.png,.tif\"\n [fileLimit]=\"maxFileCount === 0 ? 100 : maxFileCount\"\n [multiple]=\"maxFileCount === 0 || maxFileCount > 1\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<!-- <ng-container *ngTemplateOutlet=\"toolbarTpl\"></ng-container>\n<ng-template #toolbarTpl let-inDialog=\"inDialog\">\n <fd-toolbar *untilInView=\"el\" [fdType]=\"'transparent'\" [clearBorder]=\"true\" [shouldOverflow]=\"true\">\n <fdp-button *ngIf=\"!inDialog\"\n [disabled]=\"!(value | canUploadFile: maxFileCount:(disable$ | async)!!:(readonly$ | async)!!)\"\n fd-toolbar-item glyph=\"attachment\" buttonType=\"transparent\" (click)=\"uploader.open()\"></fdp-button>\n <fdp-button [disabled]=\"selectedIndex === -1 || (disableOrReadonly$ | async)!!\" class=\"delete\" fd-toolbar-item\n glyph=\"delete\" [buttonType]=\"'transparent'\" (click)=\"onDelete()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"zoom-in\" [buttonType]=\"'transparent'\" (click)=\"onZoomIn()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"zoom-out\" [buttonType]=\"'transparent'\" (click)=\"onZoomOut()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"exitfullscreen\" [buttonType]=\"'transparent'\"\n (click)=\"onFillOriginal()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"resize-horizontal\" [buttonType]=\"'transparent'\"\n (click)=\"onFillWidth()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"resize\" [buttonType]=\"'transparent'\" (click)=\"onFillAll()\"></fdp-button>\n <ng-container *ngIf=\"!inDialog\">\n <fdp-split-menu-button fd-toolbar-item [readonly]=\"(readonly$ | async)!!\" [disabled]=\"(readonly$ | async)!!\"\n *ngIf=\"value | canUploadFile: maxFileCount:(disable$ | async)!!:(readonly$ | async)!!\" [menu]=\"menu1\"\n [buttonLabel]=\"'Scan' | bbbTranslate\" [title]=\"'Scan' | bbbTranslate\" type=\"transparent\"\n [menuTitle]=\"'Scan' | bbbTranslate\" (primaryButtonClick)=\"onScan()\">\n </fdp-split-menu-button>\n <fdp-menu #menu1 xPosition=\"after\">\n <fdp-menu-item (itemSelect)=\"onAdvanceScan()\">{{ 'AdvancedScan' | bbbTranslate }}</fdp-menu-item>\n </fdp-menu>\n </ng-container>\n </fd-toolbar>\n</ng-template> -->\n\n<!-- <ng-container *ngIf=\"mediaData$ | async as mediaData\">\n <div *ngIf=\"mediaData.length > 0; else hashed\" dir=\"rtl\" class=\"gallery\" #gallery>\n <div class=\"column small-imgs-box\">\n <div class=\"pics\" (click)=\"onThumbnailClicked(i)\" *ngFor=\"let media of mediaData; let i = index\"\n [class.selected]=\"i === selectedIndex || (!selectedIndex && i === 0)\">\n <img [src]=\"media.thumbnailUrl\" />\n </div>\n </div>\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\" [class.fill-all]=\"fillAll\"\n [class.fill-original]=\"fillOriginal\" [ngClass]=\"selectedZoom\">\n <div class=\"pics\" [id]=\"i\" *ngFor=\"let media of mediaData; let i = index\">\n <img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\n </div>\n </div>\n </div>\n\n <ng-template #hashed>\n <div class=\"hatchBackground\" style=\"display: flex; align-items: center; justify-content: center\"></div>\n </ng-template>\n</ng-container> -->\n\n<ng-container *ngTemplateOutlet=\"layoutGridTpl\"></ng-container>\n<ng-template #layoutGridTpl let-inDialog=\"inDialog\">\n <fd-layout-grid>\n <div fdLayoutGridRow *ngIf=\"mediaData$ | async as mediaData\">\n <div\n *ngFor=\"let media of mediaData; let i = index\"\n [fdLayoutGridCol]=\"6\"\n [colMd]=\"3\"\n [colLg]=\"2\"\n [colXl]=\"2\"\n (click)=\"onMedaiClick(media, i)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n cardTpl;\n context: { $implicit: media, mediaData: this.mediaData, inDialog: this.inDialog, index: i }\n \"\n ></ng-container>\n </div>\n <div\n *ngIf=\"!inDialog && (disableOrReadonly$ | async) === false\"\n [fdLayoutGridCol]=\"6\"\n [colMd]=\"3\"\n [colLg]=\"2\"\n [colXl]=\"2\"\n >\n <ng-container *ngTemplateOutlet=\"newFile\"></ng-container>\n </div>\n </div>\n </fd-layout-grid>\n</ng-template>\n<ng-template #cardTpl let-media let-mediaData=\"mediaData\" let-inDialog=\"inDialog\" let-index=\"index\">\n <fd-card class=\"media\" [class.inDialog]=\"inDialog\">\n <fd-card-content style=\"text-align: center; height: 120px\">\n <img imgLazy [imgLazy]=\"media.thumbnailUrl\" [src]=\"media.thumbnailUrl\" />\n </fd-card-content>\n <fd-card-footer *ngIf=\"!inDialog\">\n <button\n glyph=\"message-information\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [fd-inline-help]=\"media.title\"\n [triggers]=\"['click']\"\n [closeOnOutsideClick]=\"true\"\n ></button>\n <button\n glyph=\"full-screen\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onFullscreen(media, mediaData)\"\n ></button>\n <ng-container *ngIf=\"(disableOrReadonly$ | async) === false\">\n <button\n glyph=\"delete\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onDelete(index)\"\n ></button>\n </ng-container>\n </fd-card-footer>\n </fd-card>\n</ng-template>\n<ng-template #newFile>\n <div style=\"position: relative; height: 100%\">\n <fd-card>\n <fd-card-content style=\"display: flex; align-items: center; justify-content: center; min-height: 120px\">\n <button\n fd-button\n glyph=\"add-photo\"\n fdType=\"transparent\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"uploader.open()\"\n ></button>\n </fd-card-content>\n\n <fd-card-footer style=\"border-top: 1px solid #ccc\">\n <button fd-button [glyph]=\"'overflow'\" [fdType]=\"'transparent'\" [fdMenuTrigger]=\"menu\"></button>\n <fd-menu #menu>\n <li fd-menu-item (click)=\"onScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'Scan' | bbbTranslate }}</span>\n </a>\n </li>\n <li fd-menu-item (click)=\"onAdvanceScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'AdvancedScan' | bbbTranslate }}</span>\n </a>\n </li>\n </fd-menu>\n </fd-card-footer>\n </fd-card>\n <bsu-mask *ngIf=\"(uploadingState$ | async)?.uploading === true\"></bsu-mask>\n </div>\n</ng-template>\n<ng-template #dialogTemplate let-dialog let-dialogConfig=\"dialogConfig\">\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTpl class=\"vertical\">\n <fd-dialog-header>\n <ng-template fdTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h1 fd-title>{{ Setting.ControlFieldCaptionTranslated }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-button-bar\n *ngIf=\"!dialogConfig.fullscreen\"\n ariaLabel=\"Fit image size\"\n [glyph]=\"'resize'\"\n [fdType]=\"fillWidth ? 'emphasized' : 'transparent'\"\n (click)=\"fillWidth = !fillWidth\"\n ></fd-button-bar>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.close()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body #fdbody>\n <div #gallery class=\"gallery inDialog\" style=\"flex: 1\">\n <div\n *ngFor=\"let media of dialog.data.mediaData; let i = index\"\n class=\"column big-imgs-box\"\n [class.fill-width]=\"fillWidth\"\n [class.fill-all]=\"fillAll\"\n [class.fill-original]=\"fillOriginal\"\n [ngClass]=\"selectedZoom\"\n >\n <div class=\"pics\" [id]=\"i\">\n <bsu-mask></bsu-mask>\n <img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\n </div>\n </div>\n </div>\n <div *ngIf=\"(deviceSize$ | async) !== 's'\" class=\"thumbnail\" style=\"flex-shrink: 1\">\n <ng-cotainer *ngTemplateOutlet=\"layoutGridTpl; context: { inDialog: true }\"></ng-cotainer>\n </div>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{position:relative}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}fd-toolbar{width:100%}fd-dialog-footer{justify-content:center}.hatchBackground{min-height:100px}.gallery{display:flex;width:100%;height:400px;column-gap:1px;background-color:var(--sapField_Background, #fff)}.gallery ::-webkit-scrollbar{width:7px;height:7px}.gallery ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:4px}.gallery ::-webkit-scrollbar-thumb{background:rgb(85,84,84);border-radius:4px}.gallery ::-webkit-scrollbar-thumb:hover{background:#2c2b2b}.gallery .column{overflow-y:scroll;display:flex;flex-direction:column;row-gap:3%;align-items:center}.gallery .column .pics{width:100%;display:flex;justify-content:center}.gallery .column .pics img{border-radius:5px}.gallery .column.small-imgs-box{flex:10%}.gallery .column.big-imgs-box{flex:90%}.gallery .selected{background-color:#fff;border:3px solid #0294d8;padding:10px}.gallery .fill-width img{width:100%!important}.gallery .fill-all .pics{height:100%}.gallery .fill-all img{width:100%!important;height:100%!important;object-fit:fill!important}.gallery .fill-original img{width:unset;height:unset}.gallery .zoom1 img{zoom:1}.gallery .zoom1-5 img{zoom:1.5}.gallery .zoom2 img{zoom:2}fd-dialog .gallery{overflow:auto}fd-dialog .gallery .column{overflow:initial}fd-dialog .gallery .pics{position:relative}fd-dialog fd-dialog-body{display:flex}fd-dialog.horizontal fd-dialog-body{flex-direction:column}fd-dialog.horizontal .gallery{flex-direction:row}fd-dialog.horizontal .thumbnail{border-top:1px solid #ccc;overflow-x:auto}fd-dialog.vertical fd-dialog-body{flex-direction:row-reverse}fd-dialog.vertical .gallery{flex-direction:column;height:100%}fd-dialog.vertical .thumbnail{border-left:1px solid #ccc;height:100%;width:200px;overflow-y:auto}fd-dialog.vertical .thumbnail ::ng-deep .fd-row>div{width:100%;min-width:100%}fd-card.media fd-card-footer button{border:none}fd-card.inDialog fd-card-header{padding-top:5px;padding-bottom:5px}.fd-col{min-width:165px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "directive", type: i3.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i3.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i5.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i5.CardFooterComponent, selector: "fd-card-footer" }, { kind: "directive", type: i5.CardFooterActionItemDirective, selector: "[fdCardFooterActionItem]" }, { kind: "component", type: i6.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "directive", type: i7.InlineHelpDirective, selector: "[fd-inline-help], [fd-inline-help-template]", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help", "fd-inline-help-template"] }, { kind: "component", type: i8.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i8.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i8.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i9.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i9.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i9.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i9.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i9.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i10.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i10.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i10.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i11.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i12.TemplateDirective, selector: "[fdTemplate]", inputs: ["fdTemplate"] }, { kind: "component", type: i13.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
211
211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiPicturesInfoComponent, decorators: [{
|
|
212
212
|
type: Component,
|
|
213
|
-
args: [{ selector: 'bsu-ui-pictures-info', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-file-uploader\r\n #uploader\r\n [style.display]=\"'none'\"\r\n [id]=\"id\"\r\n [name]=\"'pictures_' + id\"\r\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\r\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\r\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\r\n accept=\".png,.jpg,.bpm,.jpeg,.gif,.png,.tif\"\r\n [fileLimit]=\"maxFileCount === 0 ? 100 : maxFileCount\"\r\n [multiple]=\"maxFileCount === 0 || maxFileCount > 1\"\r\n (selectedFilesChanged)=\"onFileSelection($event)\"\r\n></fd-file-uploader>\r\n<!-- <ng-container *ngTemplateOutlet=\"toolbarTpl\"></ng-container>\r\n<ng-template #toolbarTpl let-inDialog=\"inDialog\">\r\n <fd-toolbar *untilInView=\"el\" [fdType]=\"'transparent'\" [clearBorder]=\"true\" [shouldOverflow]=\"true\">\r\n <fdp-button *ngIf=\"!inDialog\"\r\n [disabled]=\"!(value | canUploadFile: maxFileCount:(disable$ | async)!!:(readonly$ | async)!!)\"\r\n fd-toolbar-item glyph=\"attachment\" buttonType=\"transparent\" (click)=\"uploader.open()\"></fdp-button>\r\n <fdp-button [disabled]=\"selectedIndex === -1 || (disableOrReadonly$ | async)!!\" class=\"delete\" fd-toolbar-item\r\n glyph=\"delete\" [buttonType]=\"'transparent'\" (click)=\"onDelete()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"zoom-in\" [buttonType]=\"'transparent'\" (click)=\"onZoomIn()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"zoom-out\" [buttonType]=\"'transparent'\" (click)=\"onZoomOut()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"exitfullscreen\" [buttonType]=\"'transparent'\"\r\n (click)=\"onFillOriginal()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"resize-horizontal\" [buttonType]=\"'transparent'\"\r\n (click)=\"onFillWidth()\"></fdp-button>\r\n <fdp-button fd-toolbar-item glyph=\"resize\" [buttonType]=\"'transparent'\" (click)=\"onFillAll()\"></fdp-button>\r\n <ng-container *ngIf=\"!inDialog\">\r\n <fdp-split-menu-button fd-toolbar-item [readonly]=\"(readonly$ | async)!!\" [disabled]=\"(readonly$ | async)!!\"\r\n *ngIf=\"value | canUploadFile: maxFileCount:(disable$ | async)!!:(readonly$ | async)!!\" [menu]=\"menu1\"\r\n [buttonLabel]=\"'Scan' | bbbTranslate\" [title]=\"'Scan' | bbbTranslate\" type=\"transparent\"\r\n [menuTitle]=\"'Scan' | bbbTranslate\" (primaryButtonClick)=\"onScan()\">\r\n </fdp-split-menu-button>\r\n <fdp-menu #menu1 xPosition=\"after\">\r\n <fdp-menu-item (itemSelect)=\"onAdvanceScan()\">{{ 'AdvancedScan' | bbbTranslate }}</fdp-menu-item>\r\n </fdp-menu>\r\n </ng-container>\r\n </fd-toolbar>\r\n</ng-template> -->\r\n\r\n<!-- <ng-container *ngIf=\"mediaData$ | async as mediaData\">\r\n <div *ngIf=\"mediaData.length > 0; else hashed\" dir=\"rtl\" class=\"gallery\" #gallery>\r\n <div class=\"column small-imgs-box\">\r\n <div class=\"pics\" (click)=\"onThumbnailClicked(i)\" *ngFor=\"let media of mediaData; let i = index\"\r\n [class.selected]=\"i === selectedIndex || (!selectedIndex && i === 0)\">\r\n <img [src]=\"media.thumbnailUrl\" />\r\n </div>\r\n </div>\r\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\" [class.fill-all]=\"fillAll\"\r\n [class.fill-original]=\"fillOriginal\" [ngClass]=\"selectedZoom\">\r\n <div class=\"pics\" [id]=\"i\" *ngFor=\"let media of mediaData; let i = index\">\r\n <img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #hashed>\r\n <div class=\"hatchBackground\" style=\"display: flex; align-items: center; justify-content: center\"></div>\r\n </ng-template>\r\n</ng-container> -->\r\n\r\n<ng-container *ngTemplateOutlet=\"layoutGridTpl\"></ng-container>\r\n<ng-template #layoutGridTpl let-inDialog=\"inDialog\">\r\n <fd-layout-grid>\r\n <div fdLayoutGridRow *ngIf=\"mediaData$ | async as mediaData\">\r\n <div\r\n *ngFor=\"let media of mediaData; let i = index\"\r\n [fdLayoutGridCol]=\"6\"\r\n [colMd]=\"3\"\r\n [colLg]=\"2\"\r\n [colXl]=\"2\"\r\n (click)=\"onMedaiClick(media, i)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n cardTpl;\r\n context: { $implicit: media, mediaData: this.mediaData, inDialog: this.inDialog, index: i }\r\n \"\r\n ></ng-container>\r\n </div>\r\n <div *ngIf=\"!inDialog\" [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\">\r\n <ng-container *ngTemplateOutlet=\"newFile\"></ng-container>\r\n </div>\r\n </div>\r\n </fd-layout-grid>\r\n</ng-template>\r\n<ng-template #cardTpl let-media let-mediaData=\"mediaData\" let-inDialog=\"inDialog\" let-index=\"index\">\r\n <fd-card class=\"media\" [class.inDialog]=\"inDialog\">\r\n <fd-card-content style=\"text-align: center; height: 120px\">\r\n <img imgLazy [imgLazy]=\"media.thumbnailUrl\" [src]=\"media.thumbnailUrl\" />\r\n </fd-card-content>\r\n <fd-card-footer *ngIf=\"!inDialog\">\r\n <button\r\n glyph=\"message-information\"\r\n *fdCardFooterActionItem\r\n fd-button\r\n fdType=\"transparent\"\r\n [fd-inline-help]=\"media.title\"\r\n [triggers]=\"['click']\"\r\n [closeOnOutsideClick]=\"true\"\r\n ></button>\r\n <button\r\n glyph=\"full-screen\"\r\n *fdCardFooterActionItem\r\n fd-button\r\n fdType=\"transparent\"\r\n (click)=\"onFullscreen(media, mediaData)\"\r\n ></button>\r\n <button\r\n glyph=\"delete\"\r\n *fdCardFooterActionItem\r\n fd-button\r\n fdType=\"transparent\"\r\n (click)=\"onDelete(index)\"\r\n ></button>\r\n </fd-card-footer>\r\n </fd-card>\r\n</ng-template>\r\n<ng-template #newFile>\r\n <div style=\"position: relative; height: 100%\">\r\n <fd-card>\r\n <fd-card-content style=\"display: flex; align-items: center; justify-content: center; min-height: 120px\">\r\n <button\r\n fd-button\r\n glyph=\"add-photo\"\r\n fdType=\"transparent\"\r\n [label]=\"'AttachFile' | bbbTranslate\"\r\n (click)=\"uploader.open()\"\r\n ></button>\r\n </fd-card-content>\r\n\r\n <fd-card-footer style=\"border-top: 1px solid #ccc\">\r\n <button fd-button [glyph]=\"'overflow'\" [fdType]=\"'transparent'\" [fdMenuTrigger]=\"menu\"></button>\r\n <fd-menu #menu>\r\n <li fd-menu-item (click)=\"onScan()\">\r\n <a fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Scan' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n <li fd-menu-item (click)=\"onAdvanceScan()\">\r\n <a fd-menu-interactive>\r\n <span fd-menu-title>{{ 'AdvancedScan' | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n </fd-menu>\r\n </fd-card-footer>\r\n </fd-card>\r\n <bsu-mask *ngIf=\"(uploadingState$ | async)?.uploading === true\"></bsu-mask>\r\n </div>\r\n</ng-template>\r\n<ng-template #dialogTemplate let-dialog let-dialogConfig=\"dialogConfig\">\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTpl class=\"vertical\">\r\n <fd-dialog-header>\r\n <ng-template fdTemplate=\"header\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <h1 fd-title>{{ Setting.ControlFieldCaptionTranslated }}</h1>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n *ngIf=\"!dialogConfig.fullscreen\"\r\n ariaLabel=\"Fit image size\"\r\n [glyph]=\"'resize'\"\r\n [fdType]=\"fillWidth ? 'emphasized' : 'transparent'\"\r\n (click)=\"fillWidth = !fillWidth\"\r\n ></fd-button-bar>\r\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.close()\"></fd-button-bar>\r\n </div>\r\n </ng-template>\r\n </fd-dialog-header>\r\n <fd-dialog-body #fdbody>\r\n <div #gallery class=\"gallery inDialog\" style=\"flex: 1\">\r\n <div\r\n *ngFor=\"let media of dialog.data.mediaData; let i = index\"\r\n class=\"column big-imgs-box\"\r\n [class.fill-width]=\"fillWidth\"\r\n [class.fill-all]=\"fillAll\"\r\n [class.fill-original]=\"fillOriginal\"\r\n [ngClass]=\"selectedZoom\"\r\n >\r\n <div class=\"pics\" [id]=\"i\">\r\n <bsu-mask></bsu-mask>\r\n <img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(deviceSize$ | async) !== 's'\" class=\"thumbnail\" style=\"flex-shrink: 1\">\r\n <ng-cotainer *ngTemplateOutlet=\"layoutGridTpl; context: { inDialog: true }\"></ng-cotainer>\r\n </div>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n", styles: [":host{position:relative}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}fd-toolbar{width:100%}fd-dialog-footer{justify-content:center}.hatchBackground{min-height:100px}.gallery{display:flex;width:100%;height:400px;column-gap:1px;background-color:var(--sapField_Background, #fff)}.gallery ::-webkit-scrollbar{width:7px;height:7px}.gallery ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:4px}.gallery ::-webkit-scrollbar-thumb{background:rgb(85,84,84);border-radius:4px}.gallery ::-webkit-scrollbar-thumb:hover{background:#2c2b2b}.gallery .column{overflow-y:scroll;display:flex;flex-direction:column;row-gap:3%;align-items:center}.gallery .column .pics{width:100%;display:flex;justify-content:center}.gallery .column .pics img{border-radius:5px}.gallery .column.small-imgs-box{flex:10%}.gallery .column.big-imgs-box{flex:90%}.gallery .selected{background-color:#fff;border:3px solid #0294d8;padding:10px}.gallery .fill-width img{width:100%!important}.gallery .fill-all .pics{height:100%}.gallery .fill-all img{width:100%!important;height:100%!important;object-fit:fill!important}.gallery .fill-original img{width:unset;height:unset}.gallery .zoom1 img{zoom:1}.gallery .zoom1-5 img{zoom:1.5}.gallery .zoom2 img{zoom:2}fd-dialog .gallery{overflow:auto}fd-dialog .gallery .column{overflow:initial}fd-dialog .gallery .pics{position:relative}fd-dialog fd-dialog-body{display:flex}fd-dialog.horizontal fd-dialog-body{flex-direction:column}fd-dialog.horizontal .gallery{flex-direction:row}fd-dialog.horizontal .thumbnail{border-top:1px solid #ccc;overflow-x:auto}fd-dialog.vertical fd-dialog-body{flex-direction:row-reverse}fd-dialog.vertical .gallery{flex-direction:column;height:100%}fd-dialog.vertical .thumbnail{border-left:1px solid #ccc;height:100%;width:200px;overflow-y:auto}fd-dialog.vertical .thumbnail ::ng-deep .fd-row>div{width:100%;min-width:100%}fd-card.media fd-card-footer button{border:none}fd-card.inDialog fd-card-header{padding-top:5px;padding-bottom:5px}.fd-col{min-width:165px}\n"] }]
|
|
213
|
+
args: [{ selector: 'bsu-ui-pictures-info', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [id]=\"id\"\n [name]=\"'pictures_' + id\"\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\n accept=\".png,.jpg,.bpm,.jpeg,.gif,.png,.tif\"\n [fileLimit]=\"maxFileCount === 0 ? 100 : maxFileCount\"\n [multiple]=\"maxFileCount === 0 || maxFileCount > 1\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<!-- <ng-container *ngTemplateOutlet=\"toolbarTpl\"></ng-container>\n<ng-template #toolbarTpl let-inDialog=\"inDialog\">\n <fd-toolbar *untilInView=\"el\" [fdType]=\"'transparent'\" [clearBorder]=\"true\" [shouldOverflow]=\"true\">\n <fdp-button *ngIf=\"!inDialog\"\n [disabled]=\"!(value | canUploadFile: maxFileCount:(disable$ | async)!!:(readonly$ | async)!!)\"\n fd-toolbar-item glyph=\"attachment\" buttonType=\"transparent\" (click)=\"uploader.open()\"></fdp-button>\n <fdp-button [disabled]=\"selectedIndex === -1 || (disableOrReadonly$ | async)!!\" class=\"delete\" fd-toolbar-item\n glyph=\"delete\" [buttonType]=\"'transparent'\" (click)=\"onDelete()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"zoom-in\" [buttonType]=\"'transparent'\" (click)=\"onZoomIn()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"zoom-out\" [buttonType]=\"'transparent'\" (click)=\"onZoomOut()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"exitfullscreen\" [buttonType]=\"'transparent'\"\n (click)=\"onFillOriginal()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"resize-horizontal\" [buttonType]=\"'transparent'\"\n (click)=\"onFillWidth()\"></fdp-button>\n <fdp-button fd-toolbar-item glyph=\"resize\" [buttonType]=\"'transparent'\" (click)=\"onFillAll()\"></fdp-button>\n <ng-container *ngIf=\"!inDialog\">\n <fdp-split-menu-button fd-toolbar-item [readonly]=\"(readonly$ | async)!!\" [disabled]=\"(readonly$ | async)!!\"\n *ngIf=\"value | canUploadFile: maxFileCount:(disable$ | async)!!:(readonly$ | async)!!\" [menu]=\"menu1\"\n [buttonLabel]=\"'Scan' | bbbTranslate\" [title]=\"'Scan' | bbbTranslate\" type=\"transparent\"\n [menuTitle]=\"'Scan' | bbbTranslate\" (primaryButtonClick)=\"onScan()\">\n </fdp-split-menu-button>\n <fdp-menu #menu1 xPosition=\"after\">\n <fdp-menu-item (itemSelect)=\"onAdvanceScan()\">{{ 'AdvancedScan' | bbbTranslate }}</fdp-menu-item>\n </fdp-menu>\n </ng-container>\n </fd-toolbar>\n</ng-template> -->\n\n<!-- <ng-container *ngIf=\"mediaData$ | async as mediaData\">\n <div *ngIf=\"mediaData.length > 0; else hashed\" dir=\"rtl\" class=\"gallery\" #gallery>\n <div class=\"column small-imgs-box\">\n <div class=\"pics\" (click)=\"onThumbnailClicked(i)\" *ngFor=\"let media of mediaData; let i = index\"\n [class.selected]=\"i === selectedIndex || (!selectedIndex && i === 0)\">\n <img [src]=\"media.thumbnailUrl\" />\n </div>\n </div>\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\" [class.fill-all]=\"fillAll\"\n [class.fill-original]=\"fillOriginal\" [ngClass]=\"selectedZoom\">\n <div class=\"pics\" [id]=\"i\" *ngFor=\"let media of mediaData; let i = index\">\n <img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\n </div>\n </div>\n </div>\n\n <ng-template #hashed>\n <div class=\"hatchBackground\" style=\"display: flex; align-items: center; justify-content: center\"></div>\n </ng-template>\n</ng-container> -->\n\n<ng-container *ngTemplateOutlet=\"layoutGridTpl\"></ng-container>\n<ng-template #layoutGridTpl let-inDialog=\"inDialog\">\n <fd-layout-grid>\n <div fdLayoutGridRow *ngIf=\"mediaData$ | async as mediaData\">\n <div\n *ngFor=\"let media of mediaData; let i = index\"\n [fdLayoutGridCol]=\"6\"\n [colMd]=\"3\"\n [colLg]=\"2\"\n [colXl]=\"2\"\n (click)=\"onMedaiClick(media, i)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n cardTpl;\n context: { $implicit: media, mediaData: this.mediaData, inDialog: this.inDialog, index: i }\n \"\n ></ng-container>\n </div>\n <div\n *ngIf=\"!inDialog && (disableOrReadonly$ | async) === false\"\n [fdLayoutGridCol]=\"6\"\n [colMd]=\"3\"\n [colLg]=\"2\"\n [colXl]=\"2\"\n >\n <ng-container *ngTemplateOutlet=\"newFile\"></ng-container>\n </div>\n </div>\n </fd-layout-grid>\n</ng-template>\n<ng-template #cardTpl let-media let-mediaData=\"mediaData\" let-inDialog=\"inDialog\" let-index=\"index\">\n <fd-card class=\"media\" [class.inDialog]=\"inDialog\">\n <fd-card-content style=\"text-align: center; height: 120px\">\n <img imgLazy [imgLazy]=\"media.thumbnailUrl\" [src]=\"media.thumbnailUrl\" />\n </fd-card-content>\n <fd-card-footer *ngIf=\"!inDialog\">\n <button\n glyph=\"message-information\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [fd-inline-help]=\"media.title\"\n [triggers]=\"['click']\"\n [closeOnOutsideClick]=\"true\"\n ></button>\n <button\n glyph=\"full-screen\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onFullscreen(media, mediaData)\"\n ></button>\n <ng-container *ngIf=\"(disableOrReadonly$ | async) === false\">\n <button\n glyph=\"delete\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onDelete(index)\"\n ></button>\n </ng-container>\n </fd-card-footer>\n </fd-card>\n</ng-template>\n<ng-template #newFile>\n <div style=\"position: relative; height: 100%\">\n <fd-card>\n <fd-card-content style=\"display: flex; align-items: center; justify-content: center; min-height: 120px\">\n <button\n fd-button\n glyph=\"add-photo\"\n fdType=\"transparent\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"uploader.open()\"\n ></button>\n </fd-card-content>\n\n <fd-card-footer style=\"border-top: 1px solid #ccc\">\n <button fd-button [glyph]=\"'overflow'\" [fdType]=\"'transparent'\" [fdMenuTrigger]=\"menu\"></button>\n <fd-menu #menu>\n <li fd-menu-item (click)=\"onScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'Scan' | bbbTranslate }}</span>\n </a>\n </li>\n <li fd-menu-item (click)=\"onAdvanceScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'AdvancedScan' | bbbTranslate }}</span>\n </a>\n </li>\n </fd-menu>\n </fd-card-footer>\n </fd-card>\n <bsu-mask *ngIf=\"(uploadingState$ | async)?.uploading === true\"></bsu-mask>\n </div>\n</ng-template>\n<ng-template #dialogTemplate let-dialog let-dialogConfig=\"dialogConfig\">\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTpl class=\"vertical\">\n <fd-dialog-header>\n <ng-template fdTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h1 fd-title>{{ Setting.ControlFieldCaptionTranslated }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-button-bar\n *ngIf=\"!dialogConfig.fullscreen\"\n ariaLabel=\"Fit image size\"\n [glyph]=\"'resize'\"\n [fdType]=\"fillWidth ? 'emphasized' : 'transparent'\"\n (click)=\"fillWidth = !fillWidth\"\n ></fd-button-bar>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.close()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body #fdbody>\n <div #gallery class=\"gallery inDialog\" style=\"flex: 1\">\n <div\n *ngFor=\"let media of dialog.data.mediaData; let i = index\"\n class=\"column big-imgs-box\"\n [class.fill-width]=\"fillWidth\"\n [class.fill-all]=\"fillAll\"\n [class.fill-original]=\"fillOriginal\"\n [ngClass]=\"selectedZoom\"\n >\n <div class=\"pics\" [id]=\"i\">\n <bsu-mask></bsu-mask>\n <img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\n </div>\n </div>\n </div>\n <div *ngIf=\"(deviceSize$ | async) !== 's'\" class=\"thumbnail\" style=\"flex-shrink: 1\">\n <ng-cotainer *ngTemplateOutlet=\"layoutGridTpl; context: { inDialog: true }\"></ng-cotainer>\n </div>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{position:relative}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}fd-toolbar{width:100%}fd-dialog-footer{justify-content:center}.hatchBackground{min-height:100px}.gallery{display:flex;width:100%;height:400px;column-gap:1px;background-color:var(--sapField_Background, #fff)}.gallery ::-webkit-scrollbar{width:7px;height:7px}.gallery ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:4px}.gallery ::-webkit-scrollbar-thumb{background:rgb(85,84,84);border-radius:4px}.gallery ::-webkit-scrollbar-thumb:hover{background:#2c2b2b}.gallery .column{overflow-y:scroll;display:flex;flex-direction:column;row-gap:3%;align-items:center}.gallery .column .pics{width:100%;display:flex;justify-content:center}.gallery .column .pics img{border-radius:5px}.gallery .column.small-imgs-box{flex:10%}.gallery .column.big-imgs-box{flex:90%}.gallery .selected{background-color:#fff;border:3px solid #0294d8;padding:10px}.gallery .fill-width img{width:100%!important}.gallery .fill-all .pics{height:100%}.gallery .fill-all img{width:100%!important;height:100%!important;object-fit:fill!important}.gallery .fill-original img{width:unset;height:unset}.gallery .zoom1 img{zoom:1}.gallery .zoom1-5 img{zoom:1.5}.gallery .zoom2 img{zoom:2}fd-dialog .gallery{overflow:auto}fd-dialog .gallery .column{overflow:initial}fd-dialog .gallery .pics{position:relative}fd-dialog fd-dialog-body{display:flex}fd-dialog.horizontal fd-dialog-body{flex-direction:column}fd-dialog.horizontal .gallery{flex-direction:row}fd-dialog.horizontal .thumbnail{border-top:1px solid #ccc;overflow-x:auto}fd-dialog.vertical fd-dialog-body{flex-direction:row-reverse}fd-dialog.vertical .gallery{flex-direction:column;height:100%}fd-dialog.vertical .thumbnail{border-left:1px solid #ccc;height:100%;width:200px;overflow-y:auto}fd-dialog.vertical .thumbnail ::ng-deep .fd-row>div{width:100%;min-width:100%}fd-card.media fd-card-footer button{border:none}fd-card.inDialog fd-card-header{padding-top:5px;padding-bottom:5px}.fd-col{min-width:165px}\n"] }]
|
|
214
214
|
}], propDecorators: { value: [{
|
|
215
215
|
type: Input
|
|
216
216
|
}], gallery: [{
|
|
@@ -220,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
220
220
|
type: ViewChild,
|
|
221
221
|
args: ['dialogTemplate', { read: TemplateRef }]
|
|
222
222
|
}] } });
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGljdHVyZXMtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1waWN0dXJlcy1pbmZvL3VpLXBpY3R1cmVzLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGljdHVyZXMtaW5mby91aS1waWN0dXJlcy1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEVBQ1QsV0FBVyxFQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJdkUsT0FBTyxFQUNILFFBQVEsRUFDUixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUV4QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTekUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDRCQUE0QjtJQVB6RTs7UUFvQkksaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR25DLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7UUFHbkQsa0JBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUluQixpQkFBWSxHQUFrQyxPQUFPLENBQUM7UUFLOUMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7S0EyTjdEO0lBek5HLFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEQsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1FBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUkscUJBQXFCLENBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FDbEMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQztRQUU1RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNaLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDaEQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTO1FBQ3pCLE1BQU0sWUFBWSxHQUFHO1lBQ2pCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDMUIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLEtBQUs7U0FDekIsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUNELGtCQUFrQixDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQUs7UUFDVixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELE1BQU07UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNKLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN2QixLQUFLLE9BQU87Z0JBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlCLE1BQU07WUFDVixLQUFLLFNBQVM7Z0JBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7Z0JBQzVCLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3ZCLEtBQUssT0FBTztnQkFDUixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztnQkFDOUIsTUFBTTtZQUNWLEtBQUssU0FBUztnQkFDVixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztnQkFDNUIsTUFBTTtTQUNiO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUNELGVBQWUsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzdFLENBQUM7SUFDUyxZQUFZLENBQUMsYUFBYTtRQUNoQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQztRQUNyQyxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLFVBQVUsR0FBRyxNQUFNLENBQUM7U0FDdkI7UUFDRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztTQUMxQjthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUM3QixNQUFNLEVBQUUsVUFBVTtZQUNsQixTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxnQkFBZ0I7U0FDN0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNTLFdBQVcsQ0FBQyxVQUFVO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDN0Msa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0I7U0FDdEQsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RixPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdGLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVTLG1CQUFtQixDQUFDLFFBQVE7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsSUFBSTtRQUMzQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEM7UUFDRCxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRVMsYUFBYSxDQUFDLEdBQUc7UUFDdkIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDekIsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVTLFdBQVcsQ0FBQyxRQUFRO1FBQzFCLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDekIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDbEYsK0RBQStEO29CQUMvRCxZQUFZO2dCQUNoQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7U0FDN0U7SUFDTCxDQUFDO0lBRVMsZUFBZSxDQUFDLEtBQVk7UUFDbEMsTUFBTSxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUYsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDTixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3BCLFNBQVMsRUFBRSxPQUFPO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3BCLFFBQVE7Z0JBQ1IsWUFBWTtnQkFDWixHQUFHLEVBQUUsaUJBQWlCLEdBQUcsUUFBUTthQUNwQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBYTtRQUNsQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDakQsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDL0IsQ0FDSixDQUNKLENBQUM7SUFDTixDQUFDO0lBRVMsYUFBYSxDQUFDLEtBQUs7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRVMsV0FBVyxDQUFDLE1BQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVTLGNBQWMsQ0FDcEIsS0FPRztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7O29IQXRQUSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwyRUFIckIsQ0FBQyxhQUFhLENBQUMsNE1BYVcsV0FBVyxvREN6Q3BELHM3VEFrTUE7MkZEbkthLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDSSxzQkFBc0IsYUFHckIsQ0FBQyxhQUFhLENBQUMsbUJBQ1QsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQVFnQixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ2dDLGNBQWM7c0JBQWpFLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVGVtcGxhdGVSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBjb25jYXRNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNZWRpYSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0nO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQmFyc2FBcGksXHJcbiAgICBVcGxvYWRTZXJ2aWNlLFxyXG4gICAgZ2V0RGV2aWNlSXNNb2JpbGUsXHJcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXHJcbiAgICBJVXBsb2FkaW5nU3RhdGVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IERldmljZUluZm9GaWVsZEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9kZXZpY2UtaW5mby1maWVsZC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktcGljdHVyZXMtaW5mbycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktcGljdHVyZXMtaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1waWN0dXJlcy1pbmZvLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtVcGxvYWRTZXJ2aWNlXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaVBpY3R1cmVzSW5mb0NvbXBvbmVudCBleHRlbmRzIERldmljZUluZm9GaWVsZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSB2YWx1ZToge1xyXG4gICAgICAgIElkOiBzdHJpbmc7XHJcbiAgICAgICAgRmlsZUlkOiBzdHJpbmc7XHJcbiAgICAgICAgRmlsZU5hbWU6IHN0cmluZztcclxuICAgICAgICBXaWR0aDogc3RyaW5nO1xyXG4gICAgICAgIEhlaWdodDogc3RyaW5nO1xyXG4gICAgICAgIFNpemU6IHN0cmluZztcclxuICAgIH1bXTtcclxuICAgIEBWaWV3Q2hpbGQoJ2dhbGxlcnknKSBnYWxsZXJ5ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgdXBsb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPElVcGxvYWRpbmdTdGF0ZT47XHJcbiAgICBjYW5jZWxhdGlvbiQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgY29udGVudERlbnNpdHkkOiBPYnNlcnZhYmxlPENvbnRlbnREZW5zaXR5PjtcclxuICAgIGZpbGVzOiBGaWxlW107XHJcbiAgICBtZWRpYURhdGFTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lZGlhW10+KFtdKTtcclxuICAgIG1lZGlhRGF0YSQ6IE9ic2VydmFibGU8TWVkaWFbXT47XHJcbiAgICBpc01vYmlsZTogYW55O1xyXG4gICAgc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG4gICAgZmlsbFdpZHRoOiBib29sZWFuO1xyXG4gICAgZmlsbEFsbDogYm9vbGVhbjtcclxuICAgIGZpbGxPcmlnaW5hbDogYm9vbGVhbjtcclxuICAgIHNlbGVjdGVkWm9vbTogJ3pvb20xJyB8ICd6b29tMS01JyB8ICd6b29tMicgPSAnem9vbTEnO1xyXG4gICAgZmlsZXNWYWxpZGF0aW9uSGVscGVyOiBGaWxlc1ZhbGlkYXRpb25IZWxwZXI7XHJcbiAgICBtYXhGaWxlQ291bnQ6IG51bWJlcjtcclxuICAgIGZpbGVDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuXHJcbiAgICBwcml2YXRlIF9maWxlQ291bnRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWxlQ291bnQkID0gdGhpcy5fZmlsZUNvdW50U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMubWVkaWFEYXRhJCA9IHRoaXMubWVkaWFEYXRhU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdGF0ZSQgPSB0aGlzLl91cGxvYWRTZXJ2aWNlLnVwbG9hZGluZ1N0YXRlJDtcclxuICAgICAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLl9zZXRGaWxlQ291bnQodmFsdWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWxlc1ZhbGlkYXRpb25IZWxwZXIgPSBuZXcgRmlsZXNWYWxpZGF0aW9uSGVscGVyKFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4UGljdHVyZUNvdW50LFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZVNpemVLYixcclxuICAgICAgICAgICAgdGhpcy5TZXR0aW5nLk1heFRvdGFsRmlsZVNpemVLYlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5tYXhGaWxlQ291bnQgPSB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlci5tYXhGaWxlQ291bnQ7XHJcblxyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVHYWxsZXJ5KHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5vbih7XHJcbiAgICAgICAgICAgIERpc3BsYXlJbWFnZXM6IHRoaXMuX2Rpc3BsYXlJbWFnZXMuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ0Rpc3BsYXlJbWFnZXMnLCB0aGlzLl9kaXNwbGF5SW1hZ2VzKTtcclxuICAgIH1cclxuICAgIG9uRnVsbHNjcmVlbihtZWRpYSwgbWVkaWFEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgICBkYXRhOiB7IG1lZGlhLCBtZWRpYURhdGEgfSxcclxuICAgICAgICAgICAgZXNjS2V5Q2xvc2VhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgZnVsbFNjcmVlbjogdHJ1ZSxcclxuICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuZGlhbG9nVGVtcGxhdGUsIGRpYWxvZ0NvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBvbk1lZGFpQ2xpY2sobWVkaWEsIGluZGV4KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nYWxsZXJ5Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW2lkPVwiJyArIFN0cmluZyhpbmRleCkgKyAnXCJdJyk/LnNjcm9sbEludG9WaWV3KHRydWUpO1xyXG4gICAgfVxyXG4gICAgb25UaHVtYm5haWxDbGlja2VkKGltZ0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbWdJbmRleDtcclxuICAgICAgICB0aGlzLmdhbGxlcnkubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbaWQ9XCInICsgU3RyaW5nKGltZ0luZGV4KSArICdcIl0nKT8uc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EZWxldGUoaW5kZXgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZE1lZGlhID0gdGhpcy52YWx1ZVtpbmRleF07XHJcbiAgICAgICAgdGhpcy5fZGVsZXRlTWVkaWEoc2VsZWN0ZWRNZWRpYSk7XHJcbiAgICB9XHJcbiAgICBvblNjYW4oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2NhbkhlbHBlcihmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZHZhbmNlU2NhbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zY2FuSGVscGVyKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uWm9vbUluKCk6IHZvaWQge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZFpvb20pIHtcclxuICAgICAgICAgICAgY2FzZSAnem9vbTEnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFpvb20gPSAnem9vbTEtNSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnem9vbTEtNSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9ICd6b29tMic7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25ab29tT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZFpvb20pIHtcclxuICAgICAgICAgICAgY2FzZSAnem9vbTInOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFpvb20gPSAnem9vbTEtNSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnem9vbTEtNSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9ICd6b29tMSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWxsT3JpZ2luYWwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWxsV2lkdGggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpbGxBbGwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpbGxPcmlnaW5hbCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWxsV2lkdGgoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWxsV2lkdGggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZmlsbEFsbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmlsbE9yaWdpbmFsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWxsQWxsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsbEFsbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5maWxsT3JpZ2luYWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpbGxXaWR0aCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcclxuICAgICAgICB0aGlzLnVwbG9hZFRvU2VydmVyKGZpbGVzKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2RlbGV0ZU1lZGlhKHNlbGVjdGVkTWVkaWEpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IElkLCBGaWxlSWQgfSA9IHNlbGVjdGVkTWVkaWE7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkSWQgPSBJZDtcclxuICAgICAgICBpZiAoIXNlbGVjdGVkSWQpIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJZCA9IEZpbGVJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQaWNJbmRleCA9IHRoaXMudmFsdWUuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBzZWxlY3RlZElkIHx8IGMuRmlsZUlkID09PSBzZWxlY3RlZElkKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoKGMpID0+IGMuSWQgIT09IHNlbGVjdGVkSWQgJiYgYy5GaWxlSWQgIT09IHNlbGVjdGVkSWQpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVHYWxsZXJ5KHRoaXMudmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdDaGFuZ2UnLCB7XHJcbiAgICAgICAgICAgIEZpbGVJZDogc2VsZWN0ZWRJZCxcclxuICAgICAgICAgICAgSXNEZWxldGVkOiB0cnVlLFxyXG4gICAgICAgICAgICBPbGRJbmRleDogc2VsZWN0ZWRQaWNJbmRleFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zY2FuSGVscGVyKGlzQWR2YW5jZWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzY2FubmVyID0gbmV3IEJhcnNhQXBpLkNvbW1vbi5CYXJzYVNjYW5uZXIoe1xyXG4gICAgICAgICAgICBTY2FubmVyQWdlbnRQYXJhbXM6IHRoaXMuY29udGV4dC5TY2FubmVyQWdlbnRQYXJhbXNcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2Nhbm5lci5vbihCYXJzYUFwaS5Db21tb24uQmFyc2FTY2FubmVyLkV2ZW50RW51bS5TY2FuUmVzdWx0UmVhZHksIHRoaXMuX29uU2NhblJlc3VsdF9SZWFkeSwgdGhpcyk7XHJcbiAgICAgICAgc2Nhbm5lci5vbihCYXJzYUFwaS5Db21tb24uQmFyc2FTY2FubmVyLkV2ZW50RW51bS5TY2FuRXJyb3IsIHRoaXMuX29uU2Nhbl9FcnJvciwgdGhpcyk7XHJcbiAgICAgICAgc2Nhbm5lci5vbihCYXJzYUFwaS5Db21tb24uQmFyc2FTY2FubmVyLkV2ZW50RW51bS5TaG93V2Fycm5pbmcsIHRoaXMuX29uU2Nhbl9XYXJybmluZywgdGhpcyk7XHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suTWFzayh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHNjYW5uZXIuU2Nhbihpc0FkdmFuY2VkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX29uU2NhblJlc3VsdF9SZWFkeShjb250ZW50cyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZFNjYW4oY29udGVudHMpO1xyXG4gICAgICAgIEJhcnNhQXBpLlVsLkxvYWRpbmdNYXNrLlVubWFzayh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfb25TY2FuX1dhcnJuaW5nKHRleHQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIEJhcnNhQXBpLlVsLk1zZ0JveC5FcnJvcih0ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suVW5tYXNrKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9vblNjYW5fRXJyb3IoZXJyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIEJhcnNhQXBpLlVsLk1zZ0JveC5FcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suVW5tYXNrKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGxvYWRTY2FuKGNvbnRlbnRzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNvbnRlbnRzICYmIGNvbnRlbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29udGVudHMuZm9yRWFjaCgoY29udGVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkJhcnNhU2Nhbm5lci5VcGxvYWRTY2FuQ29udGVudCh0aGlzLmNvbnRleHQuRmllbGREZWZJZCwgY29udGVudCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChmaWxlT2JqKSB0aGlzLl9vblVwbG9hZFdpbl9OZXdGaWxlVXBsb2FkKG51bGwsIGZpbGVPYmopO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIEJhcnNhQXBpLlVsLk1zZ0JveC5XYXJuaW5nKHRoaXMuX2JiYlBpcGUudHJhbnNmb3JtKCdTY2FuUmVzdWx0Tm90Rm91bmQnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcHJlcGFyZUdhbGxlcnkodmFsdWU6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGF0YTogYW55W10gPSBbXTtcclxuICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lZGlhVXJsID0gdGhpcy5fcGljRmllbGRTcmMudHJhbnNmb3JtKGl0ZW0uRmlsZUlkLCAnQmFyc2FQaWN0dXJlLkZ1bGwnLCBudWxsKTtcclxuICAgICAgICAgICAgY29uc3QgdGh1bWJuYWlsVXJsID0gdGhpcy5fcGljRmllbGRTcmMudHJhbnNmb3JtKGl0ZW0uRmlsZUlkLCAnQmFyc2FQaWN0dXJlLlRodW1ibmFpbCcsIG51bGwpO1xyXG4gICAgICAgICAgICBkYXRhLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgSWQ6IGl0ZW0uSWQsXHJcbiAgICAgICAgICAgICAgICBGaWxlSWQ6IGl0ZW0uRmlsZUlkLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uRmlsZU5hbWUsXHJcbiAgICAgICAgICAgICAgICBtZWRpYVR5cGU6ICdpbWFnZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5GaWxlTmFtZSxcclxuICAgICAgICAgICAgICAgIG1lZGlhVXJsLFxyXG4gICAgICAgICAgICAgICAgdGh1bWJuYWlsVXJsLFxyXG4gICAgICAgICAgICAgICAgYWx0OiAnRmFpbGVkIHRvIGxvYWQgJyArIG1lZGlhVXJsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubWVkaWFEYXRhU291cmNlLm5leHQoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwbG9hZFRvU2VydmVyKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91cGxvYWRTZXJ2aWNlLmNvbXByZXNzRmlsZXMkKGZpbGVzKS5waXBlKFxyXG4gICAgICAgICAgICBjb25jYXRNYXAoKGZvcm1EYXRhKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICB0YXAoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IG9mKGVycikpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfc2V0RmlsZUNvdW50KHZhbHVlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZmlsZUNvdW50U291cmNlLm5leHQodmFsdWUuZmlsdGVyKChjKSA9PiAhYy5Jc0RlbGV0ZWQpLmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVZhbHVlKG5ld1ZhbDogYW55W10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIC4uLm5ld1ZhbF07XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUdhbGxlcnkodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5maXJlQ29udGV4dEV2ZW50KCdDaGFuZ2UnLCBuZXdWYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfZGlzcGxheUltYWdlcyhcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICBJZDogc3RyaW5nO1xyXG4gICAgICAgICAgICBGaWxlSWQ6IHN0cmluZztcclxuICAgICAgICAgICAgRmlsZU5hbWU6IHN0cmluZztcclxuICAgICAgICAgICAgV2lkdGg6IHN0cmluZztcclxuICAgICAgICAgICAgSGVpZ2h0OiBzdHJpbmc7XHJcbiAgICAgICAgICAgIFNpemU6IHN0cmluZztcclxuICAgICAgICB9W11cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZmQtZmlsZS11cGxvYWRlclxyXG4gICAgI3VwbG9hZGVyXHJcbiAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxyXG4gICAgW2lkXT1cImlkXCJcclxuICAgIFtuYW1lXT1cIidwaWN0dXJlc18nICsgaWRcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIidBdHRhY2hQaWN0dXJlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICBbYnV0dG9uTGFiZWxdPVwiJ0F0dGFjaFBpY3R1cmUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgIFtidXR0b25BcmlhTGFiZWxdPVwiJ0F0dGFjaFBpY3R1cmUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgIGFjY2VwdD1cIi5wbmcsLmpwZywuYnBtLC5qcGVnLC5naWYsLnBuZywudGlmXCJcclxuICAgIFtmaWxlTGltaXRdPVwibWF4RmlsZUNvdW50ID09PSAwID8gMTAwIDogbWF4RmlsZUNvdW50XCJcclxuICAgIFttdWx0aXBsZV09XCJtYXhGaWxlQ291bnQgPT09IDAgfHwgbWF4RmlsZUNvdW50ID4gMVwiXHJcbiAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZWQpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudClcIlxyXG4+PC9mZC1maWxlLXVwbG9hZGVyPlxyXG48IS0tIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjdG9vbGJhclRwbCBsZXQtaW5EaWFsb2c9XCJpbkRpYWxvZ1wiPlxyXG4gICAgPGZkLXRvb2xiYXIgKnVudGlsSW5WaWV3PVwiZWxcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCI+XHJcbiAgICAgICAgPGZkcC1idXR0b24gKm5nSWY9XCIhaW5EaWFsb2dcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiISh2YWx1ZSB8IGNhblVwbG9hZEZpbGU6IG1heEZpbGVDb3VudDooZGlzYWJsZSQgfCBhc3luYykhIToocmVhZG9ubHkkIHwgYXN5bmMpISEpXCJcclxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtIGdseXBoPVwiYXR0YWNobWVudFwiIGJ1dHRvblR5cGU9XCJ0cmFuc3BhcmVudFwiIChjbGljayk9XCJ1cGxvYWRlci5vcGVuKClcIj48L2ZkcC1idXR0b24+XHJcbiAgICAgICAgPGZkcC1idXR0b24gW2Rpc2FibGVkXT1cInNlbGVjdGVkSW5kZXggPT09IC0xIHx8IChkaXNhYmxlT3JSZWFkb25seSQgfCBhc3luYykhIVwiIGNsYXNzPVwiZGVsZXRlXCIgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgIGdseXBoPVwiZGVsZXRlXCIgW2J1dHRvblR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC9mZHAtYnV0dG9uPlxyXG4gICAgICAgIDxmZHAtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBnbHlwaD1cInpvb20taW5cIiBbYnV0dG9uVHlwZV09XCIndHJhbnNwYXJlbnQnXCIgKGNsaWNrKT1cIm9uWm9vbUluKClcIj48L2ZkcC1idXR0b24+XHJcbiAgICAgICAgPGZkcC1idXR0b24gZmQtdG9vbGJhci1pdGVtIGdseXBoPVwiem9vbS1vdXRcIiBbYnV0dG9uVHlwZV09XCIndHJhbnNwYXJlbnQnXCIgKGNsaWNrKT1cIm9uWm9vbU91dCgpXCI+PC9mZHAtYnV0dG9uPlxyXG4gICAgICAgIDxmZHAtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBnbHlwaD1cImV4aXRmdWxsc2NyZWVuXCIgW2J1dHRvblR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkZpbGxPcmlnaW5hbCgpXCI+PC9mZHAtYnV0dG9uPlxyXG4gICAgICAgIDxmZHAtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBnbHlwaD1cInJlc2l6ZS1ob3Jpem9udGFsXCIgW2J1dHRvblR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkZpbGxXaWR0aCgpXCI+PC9mZHAtYnV0dG9uPlxyXG4gICAgICAgIDxmZHAtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBnbHlwaD1cInJlc2l6ZVwiIFtidXR0b25UeXBlXT1cIid0cmFuc3BhcmVudCdcIiAoY2xpY2spPVwib25GaWxsQWxsKClcIj48L2ZkcC1idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbkRpYWxvZ1wiPlxyXG4gICAgICAgICAgICA8ZmRwLXNwbGl0LW1lbnUtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBbcmVhZG9ubHldPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSEhXCIgW2Rpc2FibGVkXT1cIihyZWFkb25seSQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZhbHVlIHwgY2FuVXBsb2FkRmlsZTogbWF4RmlsZUNvdW50OihkaXNhYmxlJCB8IGFzeW5jKSEhOihyZWFkb25seSQgfCBhc3luYykhIVwiIFttZW51XT1cIm1lbnUxXCJcclxuICAgICAgICAgICAgICAgIFtidXR0b25MYWJlbF09XCInU2NhbicgfCBiYmJUcmFuc2xhdGVcIiBbdGl0bGVdPVwiJ1NjYW4nIHwgYmJiVHJhbnNsYXRlXCIgdHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgIFttZW51VGl0bGVdPVwiJ1NjYW4nIHwgYmJiVHJhbnNsYXRlXCIgKHByaW1hcnlCdXR0b25DbGljayk9XCJvblNjYW4oKVwiPlxyXG4gICAgICAgICAgICA8L2ZkcC1zcGxpdC1tZW51LWJ1dHRvbj5cclxuICAgICAgICAgICAgPGZkcC1tZW51ICNtZW51MSB4UG9zaXRpb249XCJhZnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGZkcC1tZW51LWl0ZW0gKGl0ZW1TZWxlY3QpPVwib25BZHZhbmNlU2NhbigpXCI+e3sgJ0FkdmFuY2VkU2NhbicgfCBiYmJUcmFuc2xhdGUgfX08L2ZkcC1tZW51LWl0ZW0+XHJcbiAgICAgICAgICAgIDwvZmRwLW1lbnU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2ZkLXRvb2xiYXI+XHJcbjwvbmctdGVtcGxhdGU+IC0tPlxyXG5cclxuPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwibWVkaWFEYXRhJCB8IGFzeW5jIGFzIG1lZGlhRGF0YVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cIm1lZGlhRGF0YS5sZW5ndGggPiAwOyBlbHNlIGhhc2hlZFwiIGRpcj1cInJ0bFwiIGNsYXNzPVwiZ2FsbGVyeVwiICNnYWxsZXJ5PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gc21hbGwtaW1ncy1ib3hcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY3NcIiAoY2xpY2spPVwib25UaHVtYm5haWxDbGlja2VkKGkpXCIgKm5nRm9yPVwibGV0IG1lZGlhIG9mIG1lZGlhRGF0YTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaSA9PT0gc2VsZWN0ZWRJbmRleCB8fCAoIXNlbGVjdGVkSW5kZXggJiYgaSA9PT0gMClcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYS50aHVtYm5haWxVcmxcIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGJpZy1pbWdzLWJveFwiIFtjbGFzcy5maWxsLXdpZHRoXT1cImZpbGxXaWR0aFwiIFtjbGFzcy5maWxsLWFsbF09XCJmaWxsQWxsXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZpbGwtb3JpZ2luYWxdPVwiZmlsbE9yaWdpbmFsXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRab29tXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNzXCIgW2lkXT1cImlcIiAqbmdGb3I9XCJsZXQgbWVkaWEgb2YgbWVkaWFEYXRhOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGltZ0xhenkgW2ltZ0xhenldPVwibWVkaWEubWVkaWFVcmxcIiBbc3JjXT1cIm1lZGlhLm1lZGlhVXJsXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2hhc2hlZD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGF0Y2hCYWNrZ3JvdW5kXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclwiPjwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+IC0tPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxheW91dEdyaWRUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuPG5nLXRlbXBsYXRlICNsYXlvdXRHcmlkVHBsIGxldC1pbkRpYWxvZz1cImluRGlhbG9nXCI+XHJcbiAgICA8ZmQtbGF5b3V0LWdyaWQ+XHJcbiAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3cgKm5nSWY9XCJtZWRpYURhdGEkIHwgYXN5bmMgYXMgbWVkaWFEYXRhXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtZWRpYSBvZiBtZWRpYURhdGE7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCI2XCJcclxuICAgICAgICAgICAgICAgIFtjb2xNZF09XCIzXCJcclxuICAgICAgICAgICAgICAgIFtjb2xMZ109XCIyXCJcclxuICAgICAgICAgICAgICAgIFtjb2xYbF09XCIyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1lZGFpQ2xpY2sobWVkaWEsIGkpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRUcGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZWRpYSwgbWVkaWFEYXRhOiB0aGlzLm1lZGlhRGF0YSwgaW5EaWFsb2c6IHRoaXMuaW5EaWFsb2csIGluZGV4OiBpIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpbkRpYWxvZ1wiIFtmZExheW91dEdyaWRDb2xdPVwiNlwiIFtjb2xNZF09XCIzXCIgW2NvbExnXT1cIjJcIiBbY29sWGxdPVwiMlwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5ld0ZpbGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2ZkLWxheW91dC1ncmlkPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2NhcmRUcGwgbGV0LW1lZGlhIGxldC1tZWRpYURhdGE9XCJtZWRpYURhdGFcIiBsZXQtaW5EaWFsb2c9XCJpbkRpYWxvZ1wiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICA8ZmQtY2FyZCBjbGFzcz1cIm1lZGlhXCIgW2NsYXNzLmluRGlhbG9nXT1cImluRGlhbG9nXCI+XHJcbiAgICAgICAgPGZkLWNhcmQtY29udGVudCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgaGVpZ2h0OiAxMjBweFwiPlxyXG4gICAgICAgICAgICA8aW1nIGltZ0xhenkgW2ltZ0xhenldPVwibWVkaWEudGh1bWJuYWlsVXJsXCIgW3NyY109XCJtZWRpYS50aHVtYm5haWxVcmxcIiAvPlxyXG4gICAgICAgIDwvZmQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxmZC1jYXJkLWZvb3RlciAqbmdJZj1cIiFpbkRpYWxvZ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBnbHlwaD1cIm1lc3NhZ2UtaW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgKmZkQ2FyZEZvb3RlckFjdGlvbkl0ZW1cclxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgICAgICAgICAgW2ZkLWlubGluZS1oZWxwXT1cIm1lZGlhLnRpdGxlXCJcclxuICAgICAgICAgICAgICAgIFt0cmlnZ2Vyc109XCJbJ2NsaWNrJ11cIlxyXG4gICAgICAgICAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJmdWxsLXNjcmVlblwiXHJcbiAgICAgICAgICAgICAgICAqZmRDYXJkRm9vdGVyQWN0aW9uSXRlbVxyXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25GdWxsc2NyZWVuKG1lZGlhLCBtZWRpYURhdGEpXCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBnbHlwaD1cImRlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAqZmRDYXJkRm9vdGVyQWN0aW9uSXRlbVxyXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoaW5kZXgpXCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZmQtY2FyZC1mb290ZXI+XHJcbiAgICA8L2ZkLWNhcmQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjbmV3RmlsZT5cclxuICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMTAwJVwiPlxyXG4gICAgICAgIDxmZC1jYXJkPlxyXG4gICAgICAgICAgICA8ZmQtY2FyZC1jb250ZW50IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IG1pbi1oZWlnaHQ6IDEyMHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJhZGQtcGhvdG9cIlxyXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBsb2FkZXIub3BlbigpXCJcclxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9mZC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgICAgICAgICA8ZmQtY2FyZC1mb290ZXIgc3R5bGU9XCJib3JkZXItdG9wOiAxcHggc29saWQgI2NjY1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gW2dseXBoXT1cIidvdmVyZmxvdydcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZmQtbWVudSAjbWVudT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbWVudS1pdGVtIChjbGljayk9XCJvblNjYW4oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1tZW51LWludGVyYWN0aXZlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyAnU2NhbicgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uQWR2YW5jZVNjYW4oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1tZW51LWludGVyYWN0aXZlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyAnQWR2YW5jZWRTY2FuJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLW1lbnU+XHJcbiAgICAgICAgICAgIDwvZmQtY2FyZC1mb290ZXI+XHJcbiAgICAgICAgPC9mZC1jYXJkPlxyXG4gICAgICAgIDxic3UtbWFzayAqbmdJZj1cIih1cGxvYWRpbmdTdGF0ZSQgfCBhc3luYyk/LnVwbG9hZGluZyA9PT0gdHJ1ZVwiPjwvYnN1LW1hc2s+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dUZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIj5cclxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiICNkaWFsb2dUcGwgY2xhc3M9XCJ2ZXJ0aWNhbFwiPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBmZC10aXRsZT57eyBTZXR0aW5nLkNvbnRyb2xGaWVsZENhcHRpb25UcmFuc2xhdGVkIH19PC9oMT5cclxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkaWFsb2dDb25maWcuZnVsbHNjcmVlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cIkZpdCBpbWFnZSBzaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidyZXNpemUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJmaWxsV2lkdGggPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGxXaWR0aCA9ICFmaWxsV2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXIgYXJpYUxhYmVsPVwiY2xvc2VcIiBnbHlwaD1cImRlY2xpbmVcIiAoY2xpY2spPVwiZGlhbG9nLmNsb3NlKClcIj48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5ICNmZGJvZHk+XHJcbiAgICAgICAgICAgIDxkaXYgI2dhbGxlcnkgY2xhc3M9XCJnYWxsZXJ5IGluRGlhbG9nXCIgc3R5bGU9XCJmbGV4OiAxXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1lZGlhIG9mIGRpYWxvZy5kYXRhLm1lZGlhRGF0YTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4gYmlnLWltZ3MtYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsbC13aWR0aF09XCJmaWxsV2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWxsLWFsbF09XCJmaWxsQWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsbC1vcmlnaW5hbF09XCJmaWxsT3JpZ2luYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkWm9vbVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY3NcIiBbaWRdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnN1LW1hc2s+PC9ic3UtbWFzaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBpbWdMYXp5IFtpbWdMYXp5XT1cIm1lZGlhLm1lZGlhVXJsXCIgW3NyY109XCJtZWRpYS5tZWRpYVVybFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZGV2aWNlU2l6ZSQgfCBhc3luYykgIT09ICdzJ1wiIGNsYXNzPVwidGh1bWJuYWlsXCIgc3R5bGU9XCJmbGV4LXNocmluazogMVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvdGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGF5b3V0R3JpZFRwbDsgY29udGV4dDogeyBpbkRpYWxvZzogdHJ1ZSB9XCI+PC9uZy1jb3RhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cclxuICAgIDwvZmQtZGlhbG9nPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktcGljdHVyZXMtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1waWN0dXJlcy1pbmZvL3VpLXBpY3R1cmVzLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktcGljdHVyZXMtaW5mby91aS1waWN0dXJlcy1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEVBQ1QsV0FBVyxFQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJdkUsT0FBTyxFQUNILFFBQVEsRUFDUixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUV4QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFTekUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDRCQUE0QjtJQVB6RTs7UUFvQkksaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR25DLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7UUFHbkQsa0JBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUluQixpQkFBWSxHQUFrQyxPQUFPLENBQUM7UUFLOUMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7S0EyTjdEO0lBek5HLFFBQVE7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QUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVTLGNBQWMsQ0FDcEIsS0FPRztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7O29IQXRQUSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwyRUFIckIsQ0FBQyxhQUFhLENBQUMsNE1BYVcsV0FBVyxvREN6Q3BELHEwVEEwTUE7MkZEM0thLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDSSxzQkFBc0IsYUFHckIsQ0FBQyxhQUFhLENBQUMsbUJBQ1QsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQVFnQixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ2dDLGNBQWM7c0JBQWpFLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVGVtcGxhdGVSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBjb25jYXRNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNZWRpYSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0nO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQmFyc2FBcGksXHJcbiAgICBVcGxvYWRTZXJ2aWNlLFxyXG4gICAgZ2V0RGV2aWNlSXNNb2JpbGUsXHJcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXHJcbiAgICBJVXBsb2FkaW5nU3RhdGVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IERldmljZUluZm9GaWVsZEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9kZXZpY2UtaW5mby1maWVsZC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktcGljdHVyZXMtaW5mbycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktcGljdHVyZXMtaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1waWN0dXJlcy1pbmZvLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtVcGxvYWRTZXJ2aWNlXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaVBpY3R1cmVzSW5mb0NvbXBvbmVudCBleHRlbmRzIERldmljZUluZm9GaWVsZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSB2YWx1ZToge1xyXG4gICAgICAgIElkOiBzdHJpbmc7XHJcbiAgICAgICAgRmlsZUlkOiBzdHJpbmc7XHJcbiAgICAgICAgRmlsZU5hbWU6IHN0cmluZztcclxuICAgICAgICBXaWR0aDogc3RyaW5nO1xyXG4gICAgICAgIEhlaWdodDogc3RyaW5nO1xyXG4gICAgICAgIFNpemU6IHN0cmluZztcclxuICAgIH1bXTtcclxuICAgIEBWaWV3Q2hpbGQoJ2dhbGxlcnknKSBnYWxsZXJ5ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgdXBsb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPElVcGxvYWRpbmdTdGF0ZT47XHJcbiAgICBjYW5jZWxhdGlvbiQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgY29udGVudERlbnNpdHkkOiBPYnNlcnZhYmxlPENvbnRlbnREZW5zaXR5PjtcclxuICAgIGZpbGVzOiBGaWxlW107XHJcbiAgICBtZWRpYURhdGFTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lZGlhW10+KFtdKTtcclxuICAgIG1lZGlhRGF0YSQ6IE9ic2VydmFibGU8TWVkaWFbXT47XHJcbiAgICBpc01vYmlsZTogYW55O1xyXG4gICAgc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG4gICAgZmlsbFdpZHRoOiBib29sZWFuO1xyXG4gICAgZmlsbEFsbDogYm9vbGVhbjtcclxuICAgIGZpbGxPcmlnaW5hbDogYm9vbGVhbjtcclxuICAgIHNlbGVjdGVkWm9vbTogJ3pvb20xJyB8ICd6b29tMS01JyB8ICd6b29tMicgPSAnem9vbTEnO1xyXG4gICAgZmlsZXNWYWxpZGF0aW9uSGVscGVyOiBGaWxlc1ZhbGlkYXRpb25IZWxwZXI7XHJcbiAgICBtYXhGaWxlQ291bnQ6IG51bWJlcjtcclxuICAgIGZpbGVDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcclxuXHJcbiAgICBwcml2YXRlIF9maWxlQ291bnRTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWxlQ291bnQkID0gdGhpcy5fZmlsZUNvdW50U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMubWVkaWFEYXRhJCA9IHRoaXMubWVkaWFEYXRhU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdGF0ZSQgPSB0aGlzLl91cGxvYWRTZXJ2aWNlLnVwbG9hZGluZ1N0YXRlJDtcclxuICAgICAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLl9zZXRGaWxlQ291bnQodmFsdWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWxlc1ZhbGlkYXRpb25IZWxwZXIgPSBuZXcgRmlsZXNWYWxpZGF0aW9uSGVscGVyKFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4UGljdHVyZUNvdW50LFxyXG4gICAgICAgICAgICB0aGlzLlNldHRpbmcuTWF4RmlsZVNpemVLYixcclxuICAgICAgICAgICAgdGhpcy5TZXR0aW5nLk1heFRvdGFsRmlsZVNpemVLYlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5tYXhGaWxlQ291bnQgPSB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlci5tYXhGaWxlQ291bnQ7XHJcblxyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVHYWxsZXJ5KHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5vbih7XHJcbiAgICAgICAgICAgIERpc3BsYXlJbWFnZXM6IHRoaXMuX2Rpc3BsYXlJbWFnZXMuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLmNvbnRleHQudW4oJ0Rpc3BsYXlJbWFnZXMnLCB0aGlzLl9kaXNwbGF5SW1hZ2VzKTtcclxuICAgIH1cclxuICAgIG9uRnVsbHNjcmVlbihtZWRpYSwgbWVkaWFEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgICBkYXRhOiB7IG1lZGlhLCBtZWRpYURhdGEgfSxcclxuICAgICAgICAgICAgZXNjS2V5Q2xvc2VhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgZnVsbFNjcmVlbjogdHJ1ZSxcclxuICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuZGlhbG9nVGVtcGxhdGUsIGRpYWxvZ0NvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBvbk1lZGFpQ2xpY2sobWVkaWEsIGluZGV4KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nYWxsZXJ5Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW2lkPVwiJyArIFN0cmluZyhpbmRleCkgKyAnXCJdJyk/LnNjcm9sbEludG9WaWV3KHRydWUpO1xyXG4gICAgfVxyXG4gICAgb25UaHVtYm5haWxDbGlja2VkKGltZ0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbWdJbmRleDtcclxuICAgICAgICB0aGlzLmdhbGxlcnkubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbaWQ9XCInICsgU3RyaW5nKGltZ0luZGV4KSArICdcIl0nKT8uc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EZWxldGUoaW5kZXgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZE1lZGlhID0gdGhpcy52YWx1ZVtpbmRleF07XHJcbiAgICAgICAgdGhpcy5fZGVsZXRlTWVkaWEoc2VsZWN0ZWRNZWRpYSk7XHJcbiAgICB9XHJcbiAgICBvblNjYW4oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2NhbkhlbHBlcihmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZHZhbmNlU2NhbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zY2FuSGVscGVyKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uWm9vbUluKCk6IHZvaWQge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZFpvb20pIHtcclxuICAgICAgICAgICAgY2FzZSAnem9vbTEnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFpvb20gPSAnem9vbTEtNSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnem9vbTEtNSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9ICd6b29tMic7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25ab29tT3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZFpvb20pIHtcclxuICAgICAgICAgICAgY2FzZSAnem9vbTInOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFpvb20gPSAnem9vbTEtNSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnem9vbTEtNSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9ICd6b29tMSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWxsT3JpZ2luYWwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWxsV2lkdGggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpbGxBbGwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpbGxPcmlnaW5hbCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWxsV2lkdGgoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWxsV2lkdGggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZmlsbEFsbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmlsbE9yaWdpbmFsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWxsQWxsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmlsbEFsbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5maWxsT3JpZ2luYWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpbGxXaWR0aCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbGVzVmFsaWRhdGlvbkhlbHBlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcclxuICAgICAgICB0aGlzLnVwbG9hZFRvU2VydmVyKGZpbGVzKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2RlbGV0ZU1lZGlhKHNlbGVjdGVkTWVkaWEpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IElkLCBGaWxlSWQgfSA9IHNlbGVjdGVkTWVkaWE7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkSWQgPSBJZDtcclxuICAgICAgICBpZiAoIXNlbGVjdGVkSWQpIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJZCA9IEZpbGVJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQaWNJbmRleCA9IHRoaXMudmFsdWUuZmluZEluZGV4KChjKSA9PiBjLklkID09PSBzZWxlY3RlZElkIHx8IGMuRmlsZUlkID09PSBzZWxlY3RlZElkKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5maWx0ZXIoKGMpID0+IGMuSWQgIT09IHNlbGVjdGVkSWQgJiYgYy5GaWxlSWQgIT09IHNlbGVjdGVkSWQpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVHYWxsZXJ5KHRoaXMudmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdDaGFuZ2UnLCB7XHJcbiAgICAgICAgICAgIEZpbGVJZDogc2VsZWN0ZWRJZCxcclxuICAgICAgICAgICAgSXNEZWxldGVkOiB0cnVlLFxyXG4gICAgICAgICAgICBPbGRJbmRleDogc2VsZWN0ZWRQaWNJbmRleFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zY2FuSGVscGVyKGlzQWR2YW5jZWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzY2FubmVyID0gbmV3IEJhcnNhQXBpLkNvbW1vbi5CYXJzYVNjYW5uZXIoe1xyXG4gICAgICAgICAgICBTY2FubmVyQWdlbnRQYXJhbXM6IHRoaXMuY29udGV4dC5TY2FubmVyQWdlbnRQYXJhbXNcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2Nhbm5lci5vbihCYXJzYUFwaS5Db21tb24uQmFyc2FTY2FubmVyLkV2ZW50RW51bS5TY2FuUmVzdWx0UmVhZHksIHRoaXMuX29uU2NhblJlc3VsdF9SZWFkeSwgdGhpcyk7XHJcbiAgICAgICAgc2Nhbm5lci5vbihCYXJzYUFwaS5Db21tb24uQmFyc2FTY2FubmVyLkV2ZW50RW51bS5TY2FuRXJyb3IsIHRoaXMuX29uU2Nhbl9FcnJvciwgdGhpcyk7XHJcbiAgICAgICAgc2Nhbm5lci5vbihCYXJzYUFwaS5Db21tb24uQmFyc2FTY2FubmVyLkV2ZW50RW51bS5TaG93V2Fycm5pbmcsIHRoaXMuX29uU2Nhbl9XYXJybmluZywgdGhpcyk7XHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suTWFzayh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHNjYW5uZXIuU2Nhbihpc0FkdmFuY2VkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX29uU2NhblJlc3VsdF9SZWFkeShjb250ZW50cyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZFNjYW4oY29udGVudHMpO1xyXG4gICAgICAgIEJhcnNhQXBpLlVsLkxvYWRpbmdNYXNrLlVubWFzayh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfb25TY2FuX1dhcnJuaW5nKHRleHQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIEJhcnNhQXBpLlVsLk1zZ0JveC5FcnJvcih0ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suVW5tYXNrKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9vblNjYW5fRXJyb3IoZXJyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIEJhcnNhQXBpLlVsLk1zZ0JveC5FcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQmFyc2FBcGkuVWwuTG9hZGluZ01hc2suVW5tYXNrKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cGxvYWRTY2FuKGNvbnRlbnRzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNvbnRlbnRzICYmIGNvbnRlbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29udGVudHMuZm9yRWFjaCgoY29udGVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkJhcnNhU2Nhbm5lci5VcGxvYWRTY2FuQ29udGVudCh0aGlzLmNvbnRleHQuRmllbGREZWZJZCwgY29udGVudCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChmaWxlT2JqKSB0aGlzLl9vblVwbG9hZFdpbl9OZXdGaWxlVXBsb2FkKG51bGwsIGZpbGVPYmopO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIEJhcnNhQXBpLlVsLk1zZ0JveC5XYXJuaW5nKHRoaXMuX2JiYlBpcGUudHJhbnNmb3JtKCdTY2FuUmVzdWx0Tm90Rm91bmQnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcHJlcGFyZUdhbGxlcnkodmFsdWU6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGF0YTogYW55W10gPSBbXTtcclxuICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lZGlhVXJsID0gdGhpcy5fcGljRmllbGRTcmMudHJhbnNmb3JtKGl0ZW0uRmlsZUlkLCAnQmFyc2FQaWN0dXJlLkZ1bGwnLCBudWxsKTtcclxuICAgICAgICAgICAgY29uc3QgdGh1bWJuYWlsVXJsID0gdGhpcy5fcGljRmllbGRTcmMudHJhbnNmb3JtKGl0ZW0uRmlsZUlkLCAnQmFyc2FQaWN0dXJlLlRodW1ibmFpbCcsIG51bGwpO1xyXG4gICAgICAgICAgICBkYXRhLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgSWQ6IGl0ZW0uSWQsXHJcbiAgICAgICAgICAgICAgICBGaWxlSWQ6IGl0ZW0uRmlsZUlkLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uRmlsZU5hbWUsXHJcbiAgICAgICAgICAgICAgICBtZWRpYVR5cGU6ICdpbWFnZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5GaWxlTmFtZSxcclxuICAgICAgICAgICAgICAgIG1lZGlhVXJsLFxyXG4gICAgICAgICAgICAgICAgdGh1bWJuYWlsVXJsLFxyXG4gICAgICAgICAgICAgICAgYWx0OiAnRmFpbGVkIHRvIGxvYWQgJyArIG1lZGlhVXJsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubWVkaWFEYXRhU291cmNlLm5leHQoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwbG9hZFRvU2VydmVyKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91cGxvYWRTZXJ2aWNlLmNvbXByZXNzRmlsZXMkKGZpbGVzKS5waXBlKFxyXG4gICAgICAgICAgICBjb25jYXRNYXAoKGZvcm1EYXRhKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBsb2FkU2VydmljZS51cGxvYWQoZm9ybURhdGEsIHRoaXMuU2V0dGluZy5Db250cm9sRmllbGREZWZJZCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICB0YXAoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IG9mKGVycikpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfc2V0RmlsZUNvdW50KHZhbHVlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZmlsZUNvdW50U291cmNlLm5leHQodmFsdWUuZmlsdGVyKChjKSA9PiAhYy5Jc0RlbGV0ZWQpLmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVZhbHVlKG5ld1ZhbDogYW55W10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIC4uLm5ld1ZhbF07XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUdhbGxlcnkodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5maXJlQ29udGV4dEV2ZW50KCdDaGFuZ2UnLCBuZXdWYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfZGlzcGxheUltYWdlcyhcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICBJZDogc3RyaW5nO1xyXG4gICAgICAgICAgICBGaWxlSWQ6IHN0cmluZztcclxuICAgICAgICAgICAgRmlsZU5hbWU6IHN0cmluZztcclxuICAgICAgICAgICAgV2lkdGg6IHN0cmluZztcclxuICAgICAgICAgICAgSGVpZ2h0OiBzdHJpbmc7XHJcbiAgICAgICAgICAgIFNpemU6IHN0cmluZztcclxuICAgICAgICB9W11cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZmQtZmlsZS11cGxvYWRlclxuICAgICN1cGxvYWRlclxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXG4gICAgW2lkXT1cImlkXCJcbiAgICBbbmFtZV09XCIncGljdHVyZXNfJyArIGlkXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ0F0dGFjaFBpY3R1cmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICBbYnV0dG9uTGFiZWxdPVwiJ0F0dGFjaFBpY3R1cmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICBbYnV0dG9uQXJpYUxhYmVsXT1cIidBdHRhY2hQaWN0dXJlJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgYWNjZXB0PVwiLnBuZywuanBnLC5icG0sLmpwZWcsLmdpZiwucG5nLC50aWZcIlxuICAgIFtmaWxlTGltaXRdPVwibWF4RmlsZUNvdW50ID09PSAwID8gMTAwIDogbWF4RmlsZUNvdW50XCJcbiAgICBbbXVsdGlwbGVdPVwibWF4RmlsZUNvdW50ID09PSAwIHx8IG1heEZpbGVDb3VudCA+IDFcIlxuICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlZCk9XCJvbkZpbGVTZWxlY3Rpb24oJGV2ZW50KVwiXG4+PC9mZC1maWxlLXVwbG9hZGVyPlxuPCEtLSA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRwbFwiPjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICN0b29sYmFyVHBsIGxldC1pbkRpYWxvZz1cImluRGlhbG9nXCI+XG4gICAgPGZkLXRvb2xiYXIgKnVudGlsSW5WaWV3PVwiZWxcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCI+XG4gICAgICAgIDxmZHAtYnV0dG9uICpuZ0lmPVwiIWluRGlhbG9nXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKHZhbHVlIHwgY2FuVXBsb2FkRmlsZTogbWF4RmlsZUNvdW50OihkaXNhYmxlJCB8IGFzeW5jKSEhOihyZWFkb25seSQgfCBhc3luYykhISlcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtIGdseXBoPVwiYXR0YWNobWVudFwiIGJ1dHRvblR5cGU9XCJ0cmFuc3BhcmVudFwiIChjbGljayk9XCJ1cGxvYWRlci5vcGVuKClcIj48L2ZkcC1idXR0b24+XG4gICAgICAgIDxmZHAtYnV0dG9uIFtkaXNhYmxlZF09XCJzZWxlY3RlZEluZGV4ID09PSAtMSB8fCAoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpISFcIiBjbGFzcz1cImRlbGV0ZVwiIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZ2x5cGg9XCJkZWxldGVcIiBbYnV0dG9uVHlwZV09XCIndHJhbnNwYXJlbnQnXCIgKGNsaWNrKT1cIm9uRGVsZXRlKClcIj48L2ZkcC1idXR0b24+XG4gICAgICAgIDxmZHAtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBnbHlwaD1cInpvb20taW5cIiBbYnV0dG9uVHlwZV09XCIndHJhbnNwYXJlbnQnXCIgKGNsaWNrKT1cIm9uWm9vbUluKClcIj48L2ZkcC1idXR0b24+XG4gICAgICAgIDxmZHAtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBnbHlwaD1cInpvb20tb3V0XCIgW2J1dHRvblR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiIChjbGljayk9XCJvblpvb21PdXQoKVwiPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgPGZkcC1idXR0b24gZmQtdG9vbGJhci1pdGVtIGdseXBoPVwiZXhpdGZ1bGxzY3JlZW5cIiBbYnV0dG9uVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkZpbGxPcmlnaW5hbCgpXCI+PC9mZHAtYnV0dG9uPlxuICAgICAgICA8ZmRwLWJ1dHRvbiBmZC10b29sYmFyLWl0ZW0gZ2x5cGg9XCJyZXNpemUtaG9yaXpvbnRhbFwiIFtidXR0b25UeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsbFdpZHRoKClcIj48L2ZkcC1idXR0b24+XG4gICAgICAgIDxmZHAtYnV0dG9uIGZkLXRvb2xiYXItaXRlbSBnbHlwaD1cInJlc2l6ZVwiIFtidXR0b25UeXBlXT1cIid0cmFuc3BhcmVudCdcIiAoY2xpY2spPVwib25GaWxsQWxsKClcIj48L2ZkcC1idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5EaWFsb2dcIj5cbiAgICAgICAgICAgIDxmZHAtc3BsaXQtbWVudS1idXR0b24gZmQtdG9vbGJhci1pdGVtIFtyZWFkb25seV09XCIocmVhZG9ubHkkIHwgYXN5bmMpISFcIiBbZGlzYWJsZWRdPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSEhXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZhbHVlIHwgY2FuVXBsb2FkRmlsZTogbWF4RmlsZUNvdW50OihkaXNhYmxlJCB8IGFzeW5jKSEhOihyZWFkb25seSQgfCBhc3luYykhIVwiIFttZW51XT1cIm1lbnUxXCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uTGFiZWxdPVwiJ1NjYW4nIHwgYmJiVHJhbnNsYXRlXCIgW3RpdGxlXT1cIidTY2FuJyB8IGJiYlRyYW5zbGF0ZVwiIHR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW21lbnVUaXRsZV09XCInU2NhbicgfCBiYmJUcmFuc2xhdGVcIiAocHJpbWFyeUJ1dHRvbkNsaWNrKT1cIm9uU2NhbigpXCI+XG4gICAgICAgICAgICA8L2ZkcC1zcGxpdC1tZW51LWJ1dHRvbj5cbiAgICAgICAgICAgIDxmZHAtbWVudSAjbWVudTEgeFBvc2l0aW9uPVwiYWZ0ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZmRwLW1lbnUtaXRlbSAoaXRlbVNlbGVjdCk9XCJvbkFkdmFuY2VTY2FuKClcIj57eyAnQWR2YW5jZWRTY2FuJyB8IGJiYlRyYW5zbGF0ZSB9fTwvZmRwLW1lbnUtaXRlbT5cbiAgICAgICAgICAgIDwvZmRwLW1lbnU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtdG9vbGJhcj5cbjwvbmctdGVtcGxhdGU+IC0tPlxuXG48IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZWRpYURhdGEkIHwgYXN5bmMgYXMgbWVkaWFEYXRhXCI+XG4gICAgPGRpdiAqbmdJZj1cIm1lZGlhRGF0YS5sZW5ndGggPiAwOyBlbHNlIGhhc2hlZFwiIGRpcj1cInJ0bFwiIGNsYXNzPVwiZ2FsbGVyeVwiICNnYWxsZXJ5PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIHNtYWxsLWltZ3MtYm94XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGljc1wiIChjbGljayk9XCJvblRodW1ibmFpbENsaWNrZWQoaSlcIiAqbmdGb3I9XCJsZXQgbWVkaWEgb2YgbWVkaWFEYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaSA9PT0gc2VsZWN0ZWRJbmRleCB8fCAoIXNlbGVjdGVkSW5kZXggJiYgaSA9PT0gMClcIj5cbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwibWVkaWEudGh1bWJuYWlsVXJsXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBiaWctaW1ncy1ib3hcIiBbY2xhc3MuZmlsbC13aWR0aF09XCJmaWxsV2lkdGhcIiBbY2xhc3MuZmlsbC1hbGxdPVwiZmlsbEFsbFwiXG4gICAgICAgICAgICBbY2xhc3MuZmlsbC1vcmlnaW5hbF09XCJmaWxsT3JpZ2luYWxcIiBbbmdDbGFzc109XCJzZWxlY3RlZFpvb21cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNzXCIgW2lkXT1cImlcIiAqbmdGb3I9XCJsZXQgbWVkaWEgb2YgbWVkaWFEYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGltZyBpbWdMYXp5IFtpbWdMYXp5XT1cIm1lZGlhLm1lZGlhVXJsXCIgW3NyY109XCJtZWRpYS5tZWRpYVVybFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI2hhc2hlZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhhdGNoQmFja2dyb3VuZFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXJcIj48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+IC0tPlxuXG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGF5b3V0R3JpZFRwbFwiPjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNsYXlvdXRHcmlkVHBsIGxldC1pbkRpYWxvZz1cImluRGlhbG9nXCI+XG4gICAgPGZkLWxheW91dC1ncmlkPlxuICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdyAqbmdJZj1cIm1lZGlhRGF0YSQgfCBhc3luYyBhcyBtZWRpYURhdGFcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWVkaWEgb2YgbWVkaWFEYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjZcIlxuICAgICAgICAgICAgICAgIFtjb2xNZF09XCIzXCJcbiAgICAgICAgICAgICAgICBbY29sTGddPVwiMlwiXG4gICAgICAgICAgICAgICAgW2NvbFhsXT1cIjJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1lZGFpQ2xpY2sobWVkaWEsIGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJkVHBsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lZGlhLCBtZWRpYURhdGE6IHRoaXMubWVkaWFEYXRhLCBpbkRpYWxvZzogdGhpcy5pbkRpYWxvZywgaW5kZXg6IGkgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWluRGlhbG9nICYmIChkaXNhYmxlT3JSZWFkb25seSQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjZcIlxuICAgICAgICAgICAgICAgIFtjb2xNZF09XCIzXCJcbiAgICAgICAgICAgICAgICBbY29sTGddPVwiMlwiXG4gICAgICAgICAgICAgICAgW2NvbFhsXT1cIjJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuZXdGaWxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mZC1sYXlvdXQtZ3JpZD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2NhcmRUcGwgbGV0LW1lZGlhIGxldC1tZWRpYURhdGE9XCJtZWRpYURhdGFcIiBsZXQtaW5EaWFsb2c9XCJpbkRpYWxvZ1wiIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgPGZkLWNhcmQgY2xhc3M9XCJtZWRpYVwiIFtjbGFzcy5pbkRpYWxvZ109XCJpbkRpYWxvZ1wiPlxuICAgICAgICA8ZmQtY2FyZC1jb250ZW50IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBoZWlnaHQ6IDEyMHB4XCI+XG4gICAgICAgICAgICA8aW1nIGltZ0xhenkgW2ltZ0xhenldPVwibWVkaWEudGh1bWJuYWlsVXJsXCIgW3NyY109XCJtZWRpYS50aHVtYm5haWxVcmxcIiAvPlxuICAgICAgICA8L2ZkLWNhcmQtY29udGVudD5cbiAgICAgICAgPGZkLWNhcmQtZm9vdGVyICpuZ0lmPVwiIWluRGlhbG9nXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJtZXNzYWdlLWluZm9ybWF0aW9uXCJcbiAgICAgICAgICAgICAgICAqZmRDYXJkRm9vdGVyQWN0aW9uSXRlbVxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBbZmQtaW5saW5lLWhlbHBdPVwibWVkaWEudGl0bGVcIlxuICAgICAgICAgICAgICAgIFt0cmlnZ2Vyc109XCJbJ2NsaWNrJ11cIlxuICAgICAgICAgICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGdseXBoPVwiZnVsbC1zY3JlZW5cIlxuICAgICAgICAgICAgICAgICpmZENhcmRGb290ZXJBY3Rpb25JdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZ1bGxzY3JlZW4obWVkaWEsIG1lZGlhRGF0YSlcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkaXNhYmxlT3JSZWFkb25seSQgfCBhc3luYykgPT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICpmZENhcmRGb290ZXJBY3Rpb25JdGVtXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShpbmRleClcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLWNhcmQtZm9vdGVyPlxuICAgIDwvZmQtY2FyZD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25ld0ZpbGU+XG4gICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAxMDAlXCI+XG4gICAgICAgIDxmZC1jYXJkPlxuICAgICAgICAgICAgPGZkLWNhcmQtY29udGVudCBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBtaW4taGVpZ2h0OiAxMjBweFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwiYWRkLXBob3RvXCJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwbG9hZGVyLm9wZW4oKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mZC1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgIDxmZC1jYXJkLWZvb3RlciBzdHlsZT1cImJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gW2dseXBoXT1cIidvdmVyZmxvdydcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGZkLW1lbnUgI21lbnU+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU2NhbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1tZW51LWludGVyYWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgJ1NjYW4nIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbWVudS1pdGVtIChjbGljayk9XCJvbkFkdmFuY2VTY2FuKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyAnQWR2YW5jZWRTY2FuJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L2ZkLW1lbnU+XG4gICAgICAgICAgICA8L2ZkLWNhcmQtZm9vdGVyPlxuICAgICAgICA8L2ZkLWNhcmQ+XG4gICAgICAgIDxic3UtbWFzayAqbmdJZj1cIih1cGxvYWRpbmdTdGF0ZSQgfCBhc3luYyk/LnVwbG9hZGluZyA9PT0gdHJ1ZVwiPjwvYnN1LW1hc2s+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkaWFsb2dUZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIj5cbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIiAjZGlhbG9nVHBsIGNsYXNzPVwidmVydGljYWxcIj5cbiAgICAgICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBmZC10aXRsZT57eyBTZXR0aW5nLkNvbnRyb2xGaWVsZENhcHRpb25UcmFuc2xhdGVkIH19PC9oMT5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRpYWxvZ0NvbmZpZy5mdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cIkZpdCBpbWFnZSBzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCIncmVzaXplJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cImZpbGxXaWR0aCA/ICdlbXBoYXNpemVkJyA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGxXaWR0aCA9ICFmaWxsV2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhciBhcmlhTGFiZWw9XCJjbG9zZVwiIGdseXBoPVwiZGVjbGluZVwiIChjbGljayk9XCJkaWFsb2cuY2xvc2UoKVwiPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5ICNmZGJvZHk+XG4gICAgICAgICAgICA8ZGl2ICNnYWxsZXJ5IGNsYXNzPVwiZ2FsbGVyeSBpbkRpYWxvZ1wiIHN0eWxlPVwiZmxleDogMVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1lZGlhIG9mIGRpYWxvZy5kYXRhLm1lZGlhRGF0YTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uIGJpZy1pbWdzLWJveFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWxsLXdpZHRoXT1cImZpbGxXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5maWxsLWFsbF09XCJmaWxsQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbGwtb3JpZ2luYWxdPVwiZmlsbE9yaWdpbmFsXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRab29tXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNzXCIgW2lkXT1cImlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxic3UtbWFzaz48L2JzdS1tYXNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBpbWdMYXp5IFtpbWdMYXp5XT1cIm1lZGlhLm1lZGlhVXJsXCIgW3NyY109XCJtZWRpYS5tZWRpYVVybFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGRldmljZVNpemUkIHwgYXN5bmMpICE9PSAncydcIiBjbGFzcz1cInRodW1ibmFpbFwiIHN0eWxlPVwiZmxleC1zaHJpbms6IDFcIj5cbiAgICAgICAgICAgICAgICA8bmctY290YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYXlvdXRHcmlkVHBsOyBjb250ZXh0OiB7IGluRGlhbG9nOiB0cnVlIH1cIj48L25nLWNvdGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgPC9mZC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuIl19
|