UNPKG

systelab-components

Version:

systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.

55 lines 19.4 kB
import { Component } from '@angular/core'; import { AbstractContextMenuComponent } from '../../contextmenu/abstract-context-menu.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "../../contextmenu/context-menu-submenu-item.component"; import * as i3 from "../../contextmenu/context-menu-item.component"; export class GridHeaderContextMenu extends AbstractContextMenuComponent { constructor(el, myRenderer, cdr) { super(el, myRenderer, cdr); this.el = el; this.myRenderer = myRenderer; this.cdr = cdr; } refresh(params) { return true; } afterGuiAttached(params) { } setActionManager(actionHandler) { this.actionHandler = actionHandler; } setHeaderData(headerData) { this.headerData = headerData; } openWithOptions(event, newContextMenuOptions) { this.contextMenuOptions = newContextMenuOptions; this.open(event); } existsAtLeastOneActionEnabled() { return this.contextMenuOptions ? this.contextMenuOptions.some(option => this.isEnabled(this.elementID, option.actionId)) : false; } isEnabled(elementId, actionId) { return this.actionHandler.isHeaderContextMenuOptionEnabled(elementId, actionId, this.headerData); } isIconEnabled(elementId, actionId) { return false; } executeAction(event, elementId, actionId) { this.actionHandler.executeHeaderContextMenuAction(elementId, actionId, this.headerData); } showSubmenu(event, actionId, selectedChild, elementId) { // TODO : Implement something } getOption(actionId) { // TODO : Implement something } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: GridHeaderContextMenu, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: GridHeaderContextMenu, selector: "systelab-grid-header-context-menu", usesInheritance: true, ngImport: i0, template: "<div #dropdownparent id=\"{{elementID}}\" class=\"dropdown\">\n <div class=\"dropdown-toggle slab-context-menu\" data-toggle=\"dropdown\" (click)=\"dotsClicked($event)\">\n <i class=\"icon-context-menu\" [ngClass]=\"{'d-none': isEmbedded}\" [style.font-size]=\"fontSize\"\n [style.color]=\"fontColor\"></i>\n </div>\n <div #dropdownmenu class=\"dropdown-menu slab-dropdown-menu\">\n <div #dropdown class=\"slab-dropdown slab-dropdown-fixed\">\n <div *ngIf=\"isOpened\">\n <div #ngcontent (click)=\"ngContentStopPropagation($event)\">\n <ng-content></ng-content>\n </div>\n <ul #scrollableList class=\"slab-dropdown-scroll\" [ngClass]=\"{'slab-dropdown-overflow': overflow}\">\n @for (action of contextMenuOptions; track action.actionId) {\n <li class=\"d-flex align-items-center m-0\"\n [class.disabled]=\"!isEnabled(elementID, action.actionId) || action.isDivider\"\n (click)=\"doClickWithAction($event, elementID, action.actionId)\"\n (mouseover)=\"doMouseOver($event, elementID, action.actionId)\">\n <div *ngIf=\"isEnabled(elementID, action.actionId)\" class=\"slab-flex-1\" style=\"flex:1 1 auto\">\n <systelab-context-menu-item class=\"d-flex align-items-center\" [action]=\"action\"\n [isEnabled]=\"isEnabled(elementID, action.actionId)\"\n [isIconEnabled]=\"isIconEnabled(elementID, action.actionId)\"\n [hasChildren]=\"action.hasChildren()\"\n [hasIcons]=\"hasIcons\"></systelab-context-menu-item>\n <ul *ngIf=\"action.hasChildren()\" #childdropdownmenu id=\"{{action.actionId+elementID}}\"\n class=\"slab-dropdown dropdown-menu slab-dropdown-menu slab-dropdown-scroll slab-dropdown-absolute\">\n <systelab-context-menu-submenu-item [action]=\"action\"\n [actionName]=\"action.actionId\"\n [hasChildren]=\"action.hasChildren()\"\n [hasIcons]=\"hasIcons\"\n [contextMenuOriginal]=\"getSelfReference()\"\n [parentId]=\"elementID\"\n ></systelab-context-menu-submenu-item>\n </ul>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ContextMenuSubmenuItemComponent, selector: "systelab-context-menu-submenu-item", inputs: ["action", "actionName", "hasIcons", "hasChildren", "contextMenuOriginal", "parentId", "elementID"] }, { kind: "component", type: i3.ContextMenuItemComponent, selector: "systelab-context-menu-item", inputs: ["action", "hasIcons", "isEnabled", "isIconEnabled", "hasChildren"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: GridHeaderContextMenu, decorators: [{ type: Component, args: [{ selector: 'systelab-grid-header-context-menu', template: "<div #dropdownparent id=\"{{elementID}}\" class=\"dropdown\">\n <div class=\"dropdown-toggle slab-context-menu\" data-toggle=\"dropdown\" (click)=\"dotsClicked($event)\">\n <i class=\"icon-context-menu\" [ngClass]=\"{'d-none': isEmbedded}\" [style.font-size]=\"fontSize\"\n [style.color]=\"fontColor\"></i>\n </div>\n <div #dropdownmenu class=\"dropdown-menu slab-dropdown-menu\">\n <div #dropdown class=\"slab-dropdown slab-dropdown-fixed\">\n <div *ngIf=\"isOpened\">\n <div #ngcontent (click)=\"ngContentStopPropagation($event)\">\n <ng-content></ng-content>\n </div>\n <ul #scrollableList class=\"slab-dropdown-scroll\" [ngClass]=\"{'slab-dropdown-overflow': overflow}\">\n @for (action of contextMenuOptions; track action.actionId) {\n <li class=\"d-flex align-items-center m-0\"\n [class.disabled]=\"!isEnabled(elementID, action.actionId) || action.isDivider\"\n (click)=\"doClickWithAction($event, elementID, action.actionId)\"\n (mouseover)=\"doMouseOver($event, elementID, action.actionId)\">\n <div *ngIf=\"isEnabled(elementID, action.actionId)\" class=\"slab-flex-1\" style=\"flex:1 1 auto\">\n <systelab-context-menu-item class=\"d-flex align-items-center\" [action]=\"action\"\n [isEnabled]=\"isEnabled(elementID, action.actionId)\"\n [isIconEnabled]=\"isIconEnabled(elementID, action.actionId)\"\n [hasChildren]=\"action.hasChildren()\"\n [hasIcons]=\"hasIcons\"></systelab-context-menu-item>\n <ul *ngIf=\"action.hasChildren()\" #childdropdownmenu id=\"{{action.actionId+elementID}}\"\n class=\"slab-dropdown dropdown-menu slab-dropdown-menu slab-dropdown-scroll slab-dropdown-absolute\">\n <systelab-context-menu-submenu-item [action]=\"action\"\n [actionName]=\"action.actionId\"\n [hasChildren]=\"action.hasChildren()\"\n [hasIcons]=\"hasIcons\"\n [contextMenuOriginal]=\"getSelfReference()\"\n [parentId]=\"elementID\"\n ></systelab-context-menu-submenu-item>\n </ul>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n</div>\n" }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1oZWFkZXItY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5c3RlbGFiLWNvbXBvbmVudHMvc3JjL2xpYi9ncmlkL2NvbnRleHRtZW51L2dyaWQtaGVhZGVyLWNvbnRleHQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi1jb21wb25lbnRzL3NyYy9saWIvY29udGV4dG1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQzs7Ozs7QUFjL0YsTUFBTSxPQUFPLHFCQUE4QixTQUFRLDRCQUEyRDtJQUk3RyxZQUErQixFQUFjLEVBQXNCLFVBQXFCLEVBQXFCLEdBQXNCO1FBQ2xJLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBREcsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFzQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQXFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBRW5JLENBQUM7SUFFTSxPQUFPLENBQUMsTUFBcUI7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRU0sZ0JBQWdCLENBQUUsTUFBZ0M7SUFDekQsQ0FBQztJQUVNLGdCQUFnQixDQUFDLGFBQTBDO1FBQ2pFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxhQUFhLENBQUMsVUFBa0I7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDOUIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFpQixFQUFFLHFCQUEyRDtRQUNwRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcscUJBQXFCLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRVMsNkJBQTZCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2xHLENBQUM7SUFFTSxTQUFTLENBQUMsU0FBaUIsRUFBRSxRQUFnQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVNLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFFBQWdCO1FBQ3ZELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFVLEVBQUUsU0FBaUIsRUFBRSxRQUFnQjtRQUNuRSxJQUFJLENBQUMsYUFBYSxDQUFDLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFZSxXQUFXLENBQUMsS0FBVSxFQUFFLFFBQWdCLEVBQUUsYUFBeUIsRUFBRSxTQUFpQjtRQUNyRyw2QkFBNkI7SUFDOUIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxRQUFnQjtRQUNuQyw2QkFBNkI7SUFDOUIsQ0FBQzs4R0FuRFcscUJBQXFCO2tHQUFyQixxQkFBcUIsZ0dDZmxDLGtpR0F5Q0E7OzJGRDFCYSxxQkFBcUI7a0JBSmpDLFNBQVM7K0JBQ0MsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRleHRNZW51Q29tcG9uZW50fSBmcm9tICcuLi8uLi9jb250ZXh0bWVudS9hYnN0cmFjdC1jb250ZXh0LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7R3JpZENvbnRleHRNZW51T3B0aW9ufSBmcm9tICcuL2dyaWQtY29udGV4dC1tZW51LW9wdGlvbic7XG5pbXBvcnQge0lBZnRlckd1aUF0dGFjaGVkUGFyYW1zLCBJSGVhZGVyUGFyYW1zfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZEhlYWRlck1lbnVBY3Rpb25IYW5kbGVyIHtcblx0ZXhlY3V0ZUhlYWRlckNvbnRleHRNZW51QWN0aW9uKGVsZW1lbnRJZDogc3RyaW5nLCBhY3Rpb25JZDogc3RyaW5nLCBoZWFkZXJEYXRhOiBPYmplY3QpOiB2b2lkO1xuXG5cdGlzSGVhZGVyQ29udGV4dE1lbnVPcHRpb25FbmFibGVkKGVsZW1lbnRJZDogc3RyaW5nLCBhY3Rpb25JZDogc3RyaW5nLCBoZWFkZXJEYXRhOiBPYmplY3QpOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzeXN0ZWxhYi1ncmlkLWhlYWRlci1jb250ZXh0LW1lbnUnLFxuXHR0ZW1wbGF0ZVVybDogJy4uLy4uL2NvbnRleHRtZW51L2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR3JpZEhlYWRlckNvbnRleHRNZW51PE9iamVjdD4gZXh0ZW5kcyBBYnN0cmFjdENvbnRleHRNZW51Q29tcG9uZW50PEdyaWRDb250ZXh0TWVudU9wdGlvbjxPYmplY3Q+PiB7XG5cdHB1YmxpYyBhY3Rpb25IYW5kbGVyOiBHcmlkSGVhZGVyTWVudUFjdGlvbkhhbmRsZXI7XG5cdHB1YmxpYyBoZWFkZXJEYXRhOiBPYmplY3Q7XG5cblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIG92ZXJyaWRlIGVsOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgb3ZlcnJpZGUgIG15UmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcblx0XHRzdXBlcihlbCwgbXlSZW5kZXJlciwgY2RyKTtcblx0fVxuXG5cdHB1YmxpYyByZWZyZXNoKHBhcmFtczogSUhlYWRlclBhcmFtcyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHVibGljIGFmdGVyR3VpQXR0YWNoZWQ/KHBhcmFtcz86IElBZnRlckd1aUF0dGFjaGVkUGFyYW1zKTogdm9pZCB7XG5cdH1cblxuXHRwdWJsaWMgc2V0QWN0aW9uTWFuYWdlcihhY3Rpb25IYW5kbGVyOiBHcmlkSGVhZGVyTWVudUFjdGlvbkhhbmRsZXIpOiB2b2lkIHtcblx0XHR0aGlzLmFjdGlvbkhhbmRsZXIgPSBhY3Rpb25IYW5kbGVyO1xuXHR9XG5cblx0cHVibGljIHNldEhlYWRlckRhdGEoaGVhZGVyRGF0YTogT2JqZWN0KTogdm9pZCB7XG5cdFx0dGhpcy5oZWFkZXJEYXRhID0gaGVhZGVyRGF0YTtcblx0fVxuXG5cdHB1YmxpYyBvcGVuV2l0aE9wdGlvbnMoZXZlbnQ6IE1vdXNlRXZlbnQsIG5ld0NvbnRleHRNZW51T3B0aW9uczogQXJyYXk8R3JpZENvbnRleHRNZW51T3B0aW9uPE9iamVjdD4+KTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZXh0TWVudU9wdGlvbnMgPSBuZXdDb250ZXh0TWVudU9wdGlvbnM7XG5cdFx0dGhpcy5vcGVuKGV2ZW50KTtcblx0fVxuXG5cdHByb3RlY3RlZCBleGlzdHNBdExlYXN0T25lQWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZXh0TWVudU9wdGlvbnMgP1xuXHRcdFx0dGhpcy5jb250ZXh0TWVudU9wdGlvbnMuc29tZShvcHRpb24gPT4gdGhpcy5pc0VuYWJsZWQodGhpcy5lbGVtZW50SUQsIG9wdGlvbi5hY3Rpb25JZCkpIDogZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgaXNFbmFibGVkKGVsZW1lbnRJZDogc3RyaW5nLCBhY3Rpb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuYWN0aW9uSGFuZGxlci5pc0hlYWRlckNvbnRleHRNZW51T3B0aW9uRW5hYmxlZChlbGVtZW50SWQsIGFjdGlvbklkLCB0aGlzLmhlYWRlckRhdGEpO1xuXHR9XG5cblx0cHVibGljIGlzSWNvbkVuYWJsZWQoZWxlbWVudElkOiBzdHJpbmcsIGFjdGlvbklkOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgZXhlY3V0ZUFjdGlvbihldmVudDogYW55LCBlbGVtZW50SWQ6IHN0cmluZywgYWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuYWN0aW9uSGFuZGxlci5leGVjdXRlSGVhZGVyQ29udGV4dE1lbnVBY3Rpb24oZWxlbWVudElkLCBhY3Rpb25JZCwgdGhpcy5oZWFkZXJEYXRhKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBzaG93U3VibWVudShldmVudDogYW55LCBhY3Rpb25JZDogc3RyaW5nLCBzZWxlY3RlZENoaWxkOiBFbGVtZW50UmVmLCBlbGVtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdC8vIFRPRE8gOiBJbXBsZW1lbnQgc29tZXRoaW5nXG5cdH1cblxuXHRwcm90ZWN0ZWQgZ2V0T3B0aW9uKGFjdGlvbklkOiBzdHJpbmcpIHtcblx0XHQvLyBUT0RPIDogSW1wbGVtZW50IHNvbWV0aGluZ1xuXHR9XG59XG4iLCI8ZGl2ICNkcm9wZG93bnBhcmVudCBpZD1cInt7ZWxlbWVudElEfX1cIiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSBzbGFiLWNvbnRleHQtbWVudVwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiAoY2xpY2spPVwiZG90c0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICA8aSBjbGFzcz1cImljb24tY29udGV4dC1tZW51XCIgW25nQ2xhc3NdPVwieydkLW5vbmUnOiBpc0VtYmVkZGVkfVwiIFtzdHlsZS5mb250LXNpemVdPVwiZm9udFNpemVcIlxuICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZm9udENvbG9yXCI+PC9pPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgI2Ryb3Bkb3dubWVudSBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2xhYi1kcm9wZG93bi1tZW51XCI+XG4gICAgICAgIDxkaXYgI2Ryb3Bkb3duIGNsYXNzPVwic2xhYi1kcm9wZG93biBzbGFiLWRyb3Bkb3duLWZpeGVkXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNPcGVuZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNuZ2NvbnRlbnQgKGNsaWNrKT1cIm5nQ29udGVudFN0b3BQcm9wYWdhdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dWwgI3Njcm9sbGFibGVMaXN0IGNsYXNzPVwic2xhYi1kcm9wZG93bi1zY3JvbGxcIiBbbmdDbGFzc109XCJ7J3NsYWItZHJvcGRvd24tb3ZlcmZsb3cnOiBvdmVyZmxvd31cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGNvbnRleHRNZW51T3B0aW9uczsgdHJhY2sgYWN0aW9uLmFjdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG0tMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0VuYWJsZWQoZWxlbWVudElELCBhY3Rpb24uYWN0aW9uSWQpIHx8IGFjdGlvbi5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb0NsaWNrV2l0aEFjdGlvbigkZXZlbnQsIGVsZW1lbnRJRCwgYWN0aW9uLmFjdGlvbklkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJkb01vdXNlT3ZlcigkZXZlbnQsIGVsZW1lbnRJRCwgYWN0aW9uLmFjdGlvbklkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0VuYWJsZWQoZWxlbWVudElELCBhY3Rpb24uYWN0aW9uSWQpXCIgY2xhc3M9XCJzbGFiLWZsZXgtMVwiIHN0eWxlPVwiZmxleDoxIDEgYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3lzdGVsYWItY29udGV4dC1tZW51LWl0ZW0gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgW2FjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRW5hYmxlZF09XCJpc0VuYWJsZWQoZWxlbWVudElELCBhY3Rpb24uYWN0aW9uSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0ljb25FbmFibGVkXT1cImlzSWNvbkVuYWJsZWQoZWxlbWVudElELCBhY3Rpb24uYWN0aW9uSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNDaGlsZHJlbl09XCJhY3Rpb24uaGFzQ2hpbGRyZW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGFzSWNvbnNdPVwiaGFzSWNvbnNcIj48L3N5c3RlbGFiLWNvbnRleHQtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nSWY9XCJhY3Rpb24uaGFzQ2hpbGRyZW4oKVwiICNjaGlsZGRyb3Bkb3dubWVudSBpZD1cInt7YWN0aW9uLmFjdGlvbklkK2VsZW1lbnRJRH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xhYi1kcm9wZG93biBkcm9wZG93bi1tZW51IHNsYWItZHJvcGRvd24tbWVudSBzbGFiLWRyb3Bkb3duLXNjcm9sbCBzbGFiLWRyb3Bkb3duLWFic29sdXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3lzdGVsYWItY29udGV4dC1tZW51LXN1Ym1lbnUtaXRlbSBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uTmFtZV09XCJhY3Rpb24uYWN0aW9uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhc0NoaWxkcmVuXT1cImFjdGlvbi5oYXNDaGlsZHJlbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNJY29uc109XCJoYXNJY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dE1lbnVPcmlnaW5hbF09XCJnZXRTZWxmUmVmZXJlbmNlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudElkXT1cImVsZW1lbnRJRFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zeXN0ZWxhYi1jb250ZXh0LW1lbnUtc3VibWVudS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==