ngx-sumax-erp-components 1.1.6 → 1.1.7
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/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.mjs +7 -6
- package/esm2022/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.mjs +5 -5
- package/fesm2022/ngx-sumax-erp-components.mjs +10 -9
- package/fesm2022/ngx-sumax-erp-components.mjs.map +1 -1
- package/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.d.ts +4 -2
- package/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.d.ts +2 -2
- package/package.json +1 -1
package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.mjs
CHANGED
|
@@ -51,11 +51,12 @@ export class ScMenuPanelComponent extends ScCellRenderBase {
|
|
|
51
51
|
this.idScMenuPanel = `sc-menu-panel-${++scMenuPanelNextId}`;
|
|
52
52
|
this.subMenus = [];
|
|
53
53
|
}
|
|
54
|
-
onButtonActionEmit(action) {
|
|
54
|
+
onButtonActionEmit(action, isRightClick = false) {
|
|
55
55
|
const index = this.params?.node.rowIndex ?? -1;
|
|
56
56
|
this._scCellRenderButtonService.buttonAction({
|
|
57
57
|
index,
|
|
58
58
|
action,
|
|
59
|
+
isRightClick
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScMenuPanelComponent, deps: [{ token: ScCellRenderButtonService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -205,9 +206,9 @@ export class ScCellRendererButtonComponent extends ScCellRenderBase {
|
|
|
205
206
|
this.configButtons =
|
|
206
207
|
params.context.componentParent._configButtonsDefaultAgGrid;
|
|
207
208
|
}
|
|
208
|
-
onButtonAction(typeButton) {
|
|
209
|
+
onButtonAction(typeButton, isRightClick = false) {
|
|
209
210
|
if (typeButton)
|
|
210
|
-
this.params?.context.componentParent.onButtonActionAgGridEmit(this.params.node.rowIndex, typeButton);
|
|
211
|
+
this.params?.context.componentParent.onButtonActionAgGridEmit(this.params.node.rowIndex, typeButton, isRightClick);
|
|
211
212
|
}
|
|
212
213
|
refresh(_) {
|
|
213
214
|
return true;
|
|
@@ -230,13 +231,13 @@ export class ScCellRendererButtonComponent extends ScCellRenderBase {
|
|
|
230
231
|
return configButtons?.tooltipOption;
|
|
231
232
|
}
|
|
232
233
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
233
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScCellRendererButtonComponent, selector: "ng-component", host: { properties: { "id": "idScCellRenderButton" }, classAttribute: "d-flex justify-content-center sc-cell-render-button" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\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: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ScMenuPanelComponent, selector: "sc-menu-panel", inputs: ["subMenus", "params"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
234
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScCellRendererButtonComponent, selector: "ng-component", host: { properties: { "id": "idScCellRenderButton" }, classAttribute: "d-flex justify-content-center sc-cell-render-button" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n (auxclick)=\"onButtonAction(option?.actionCode ?? '', true)\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\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: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ScMenuPanelComponent, selector: "sc-menu-panel", inputs: ["subMenus", "params"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
234
235
|
}
|
|
235
236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonComponent, decorators: [{
|
|
236
237
|
type: Component,
|
|
237
238
|
args: [{ host: {
|
|
238
239
|
'[id]': 'idScCellRenderButton',
|
|
239
240
|
class: 'd-flex justify-content-center sc-cell-render-button',
|
|
240
|
-
}, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"] }]
|
|
241
|
+
}, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n (auxclick)=\"onButtonAction(option?.actionCode ?? '', true)\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"] }]
|
|
241
242
|
}] });
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUcvQixJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNqQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUcxQixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVUsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBR3ZDLENBQUM7UUFDTCx5QkFBb0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FLbEU7SUFIQyxZQUFZLENBQUMsTUFBeUM7UUFDcEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQVRVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRGIsTUFBTTs7NEZBQ2xCLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxN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LENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLElBQUksSUFBSSxJQUFJLElBQUk7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDL0IsSUFBSSxPQUFPLElBQUksSUFBSSxVQUFVO2dCQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFpQztRQUNoRCxJQUFHLE9BQU8sYUFBYSxFQUFFLGFBQWEsS0FBSyxVQUFVO1lBQ25ELE9BQU8sYUFBYSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7O1lBRWhELE9BQU8sYUFBYSxFQUFFLGFBQWEsQ0FBQztJQUN4QyxDQUFDOytHQTNDVSw2QkFBNkI7bUdBQTdCLDZCQUE2QiwwTUN4TTFDLCt1RUFrREEscXdDRDhGYSxvQkFBb0I7OzRGQXdEcEIsNkJBQTZCO2tCQWpDekMsU0FBUzsyQkEyQkY7d0JBQ0osTUFBTSxFQUFFLHNCQUFzQjt3QkFDOUIsS0FBSyxFQUFFLHFEQUFxRDtxQkFDN0QsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIERpcmVjdGl2ZSxcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBJQ2VsbFJlbmRlcmVyUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpZ0J1dHRvbkFnR3JpZCwgRGlzYWJsZWRGdWMsIEVudW1CdXR0b25UeXBlLCBIaWRlRnVjLCBTdWJNZW51LCBUb29sdGlwT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvSVNjQWdHcmlkJztcclxuXHJcbmxldCBzY0NlbGxSZW5kZXJCdXR0b25OZXh0SWQgPSAwO1xyXG5sZXQgc2NNZW51UGFuZWxOZXh0SWQgPSAwO1xyXG5cclxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXHJcbmV4cG9ydCBjbGFzcyBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlIHtcclxuICBwcml2YXRlIF9oYW5kbGVyQnV0dG9uQWN0aW9uJCA9IG5ldyBTdWJqZWN0PHtcclxuICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICBhY3Rpb246IHN0cmluZztcclxuICB9PigpO1xyXG4gIGhhbmRsZXJCdXR0b25BY3Rpb24kID0gdGhpcy5faGFuZGxlckJ1dHRvbkFjdGlvbiQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGJ1dHRvbkFjdGlvbihvcHRpb246IHsgaW5kZXg6IG51bWJlcjsgYWN0aW9uOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgdGhpcy5faGFuZGxlckJ1dHRvbkFjdGlvbiQubmV4dChvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmFic3RyYWN0IGNsYXNzIFNjQ2VsbFJlbmRlckJhc2Uge1xyXG4gIHBhcmFtcyE6IElDZWxsUmVuZGVyZXJQYXJhbXM7XHJcblxyXG4gIGlzRnVuY3Rpb25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IERpc2FibGVkRnVjIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlKHRoaXMucGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc0Z1bmN0aW9uSGlkZSh2YWx1ZTogYm9vbGVhbiB8IEhpZGVGdWMpOiBib29sZWFuIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gdmFsdWUodGhpcy5wYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2MtbWVudS1wYW5lbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtbWVudSAjbWVudT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViTWVudSBvZiBzdWJNZW51c1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUoc3ViTWVudS5oaWRlID8/IGZhbHNlKVwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFzdWJNZW51LnN1Ym1lbnU7IGVsc2UgYnJhbmNoXCJcclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zYy1tZW51LXBhbmVsLWJvdHRvbV09XCJzdWJNZW51Py5pY29uICE9PSB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN1Yk1lbnU/LmxhYmVsID8/ICcnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZhLWxnXCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xyXG4gICAgICAgICAgICAgICAgc3ViTWVudS5pY29uICtcclxuICAgICAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICA/ICd0ZXh0LW11dGVkJ1xyXG4gICAgICAgICAgICAgICAgICA6IHN1Yk1lbnU/Lmljb25DbGFzcyA/PyAnJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bWF4LWxhYmVsXCI+e3sgc3ViTWVudT8ubGFiZWwgPz8gJycgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2JyYW5jaD5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiaW5uZXJQYW5lbC5tZW51XCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2MtbWVudS1wYW5lbC1ib3R0b21dPVwic3ViTWVudT8uaWNvbiAhPT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzdWJNZW51Py5sYWJlbCA/PyAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtbGdcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xyXG4gICAgICAgICAgICAgICAgICBzdWJNZW51Lmljb24gK1xyXG4gICAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ3RleHQtbXV0ZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzdWJNZW51Py5pY29uQ2xhc3MgPz8gJycpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1heC1sYWJlbFwiPnt7IHN1Yk1lbnU/LmxhYmVsID8/ICcnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxzYy1tZW51LXBhbmVsXHJcbiAgICAgICAgICAgICAgI2lubmVyUGFuZWxcclxuICAgICAgICAgICAgICBbcGFyYW1zXT1cInBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgKG9uQnV0dG9uQWN0aW9uKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgICAgICAgICAgW3N1Yk1lbnVzXT1cInN1Yk1lbnUuc3VibWVudSA/PyBbXVwiXHJcbiAgICAgICAgICAgID48L3NjLW1lbnUtcGFuZWw+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgLnNjLW1lbnUtcGFuZWwtYm90dG9tIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5zYy1tZW51LXBhbmVsLWljb24ge1xyXG4gICAgICAgIHdpZHRoOiAxLjZyZW07XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIHtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50O1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b246ZGlzYWJsZWQge1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcDtcclxuICAgICAgfVxyXG4gICAgYCxcclxuICBdLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbaWRdJzogJ2lkU2NNZW51UGFuZWwnLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY01lbnVQYW5lbENvbXBvbmVudCBleHRlbmRzIFNjQ2VsbFJlbmRlckJhc2Uge1xyXG4gIGlkU2NNZW51UGFuZWwgPSBgc2MtbWVudS1wYW5lbC0keysrc2NNZW51UGFuZWxOZXh0SWR9YDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnUhOiBNYXRNZW51O1xyXG5cclxuICBASW5wdXQoKSBzdWJNZW51czogU3ViTWVudVtdID0gW107XHJcbiAgQElucHV0KCkgb3ZlcnJpZGUgcGFyYW1zITogSUNlbGxSZW5kZXJlclBhcmFtcztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlOiBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgb25CdXR0b25BY3Rpb25FbWl0KGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyYW1zPy5ub2RlLnJvd0luZGV4ID8/IC0xO1xyXG4gICAgdGhpcy5fc2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZS5idXR0b25BY3Rpb24oe1xyXG4gICAgICBpbmRleCxcclxuICAgICAgYWN0aW9uLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgLnNjLWNlbGwtcmVuZGVyLWJ1dHRvbiB7XHJcbiAgICAgICAgcGFkZGluZzogMC4xZW0gMWVtO1xyXG4gICAgICB9XHJcbiAgICAgIC5zYy1jZWxsLXJlbmRlci1idXR0b24tYWN0aW9uIHtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMC41ZW07XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIG1hcmdpbjogMC4xZW07XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgLnNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb24gaSB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDEuN2VtO1xyXG4gICAgICAgIGhlaWdodDogMS43ZW07XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuN2VtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICAgIH1cclxuICAgICAgYnV0dG9uOmRpc2FibGVkIHtcclxuICAgICAgICBjdXJzb3I6IG5vLWRyb3A7XHJcbiAgICAgIH1cclxuICAgIGAsXHJcbiAgXSxcclxuICBob3N0OiB7XHJcbiAgICAnW2lkXSc6ICdpZFNjQ2VsbFJlbmRlckJ1dHRvbicsXHJcbiAgICBjbGFzczogJ2QtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbicsXHJcbiAgfSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnRcclxuICBleHRlbmRzIFNjQ2VsbFJlbmRlckJhc2VcclxuICBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcFxyXG57XHJcbiAgaWRTY0NlbGxSZW5kZXJCdXR0b24gPSBgc2MtY2VsbC1yZW5kZXItYnV0dG9uLSR7KytzY0NlbGxSZW5kZXJCdXR0b25OZXh0SWR9YDtcclxuXHJcbiAgb3ZlcnJpZGUgcGFyYW1zITogSUNlbGxSZW5kZXJlclBhcmFtcztcclxuXHJcbiAgY29uZmlnQnV0dG9uczogQ29uZmlnQnV0dG9uQWdHcmlkW10gPSBbXTtcclxuXHJcbiAgYWdJbml0KHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcyk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB0aGlzLmNvbmZpZ0J1dHRvbnMgPVxyXG4gICAgICBwYXJhbXMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkO1xyXG4gIH1cclxuXHJcbiAgb25CdXR0b25BY3Rpb24odHlwZUJ1dHRvbjogRW51bUJ1dHRvblR5cGUgfCBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlQnV0dG9uKVxyXG4gICAgICB0aGlzLnBhcmFtcz8uY29udGV4dC5jb21wb25lbnRQYXJlbnQub25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KFxyXG4gICAgICAgIHRoaXMucGFyYW1zLm5vZGUucm93SW5kZXgsXHJcbiAgICAgICAgdHlwZUJ1dHRvblxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChfOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGlkZVN1Yk1lbnUoc3ViTWVudTogU3ViTWVudVtdKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoc3ViTWVudS5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xyXG5cclxuICAgIHJldHVybiBzdWJNZW51LmV2ZXJ5KCh7IGhpZGUgfSkgPT4ge1xyXG4gICAgICBpZiAoaGlkZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGlmICh0eXBlb2YgaGlkZSA9PSAnZnVuY3Rpb24nKSByZXR1cm4gaGlkZSgpO1xyXG4gICAgICByZXR1cm4gaGlkZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcE9wdGlvbihjb25maWdCdXR0b25zOiBDb25maWdCdXR0b25BZ0dyaWQpOiBUb29sdGlwT3B0aW9uIHtcclxuICAgIGlmKHR5cGVvZiBjb25maWdCdXR0b25zPy50b29sdGlwT3B0aW9uID09PSAnZnVuY3Rpb24nKVxyXG4gICAgICByZXR1cm4gY29uZmlnQnV0dG9ucz8udG9vbHRpcE9wdGlvbih0aGlzLnBhcmFtcylcclxuICAgIGVsc2UgXHJcbiAgICAgIHJldHVybiBjb25maWdCdXR0b25zPy50b29sdGlwT3B0aW9uO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29uZmlnQnV0dG9uc1wiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb24/LnN1Ym1lbnU/Lmxlbmd0aCA/PyAwID4gMDsgZWxzZSBidXR0b25QcmluY2lwYWxcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZVN1Yk1lbnUob3B0aW9uPy5zdWJtZW51ID8/IFtdKVwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0UmlwcGxlXHJcbiAgICAgICAgY2xhc3M9XCJidG4gc2MtY2VsbC1yZW5kZXItYnV0dG9uLWFjdGlvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwib3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCA/ICRhbnkob3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCkgOiAnJ1wiXHJcbiAgICAgICAgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUob3B0aW9uPy5oaWRlID8/IGZhbHNlKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBhbmVsLm1lbnVcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5sYWJlbFwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikuY2xhc3NMaXN0ID8/ICcnXCJcclxuICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIj5cclxuICAgICAgICA8ZW1cclxuICAgICAgICAgIGNsYXNzPVwicC0wXCJcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgKG9wdGlvbj8uaWNvbk9wdGlvbj8uaWNvbiA/PyAnJykgK1xyXG4gICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKG9wdGlvbj8uZGlzYWJsZWQpID8gJ3RleHQtbXV0ZWQnIDogb3B0aW9uPy5pY29uT3B0aW9uPy5jbGFzc0xpc3QgPz8gJycpXHJcbiAgICAgICAgICBcIj48L2VtPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxzYy1tZW51LXBhbmVsICNwYW5lbCBbcGFyYW1zXT1cInBhcmFtc1wiIFtzdWJNZW51c109XCJvcHRpb24uc3VibWVudSA/PyBbXVwiPjwvc2MtbWVudS1wYW5lbD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2J1dHRvblByaW5jaXBhbD5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUob3B0aW9uPy5oaWRlID8/IGZhbHNlKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxyXG4gICAgICBbbmdDbGFzc109XCJvcHRpb24/LmJ1dHRvbk9wdGlvbj8uY2xhc3NMaXN0ID8gJGFueShvcHRpb24/LmJ1dHRvbk9wdGlvbj8uY2xhc3NMaXN0KSA6ICcnXCJcclxuICAgICAgY2xhc3M9XCJidG4gc2MtY2VsbC1yZW5kZXItYnV0dG9uLWFjdGlvblwiXHJcbiAgICAgIG1hdFJpcHBsZVxyXG4gICAgICAoY2xpY2spPVwib25CdXR0b25BY3Rpb24ob3B0aW9uPy5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIlxyXG4gICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5jbGFzc0xpc3QgPz8gJydcIlxyXG4gICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmxhYmVsXCI+XHJcbiAgICAgIDxlbVxyXG4gICAgICAgIGNsYXNzPVwicHQtMFwiXHJcbiAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgKG9wdGlvbj8uaWNvbk9wdGlvbj8uaWNvbiA/PyAnJykgK1xyXG4gICAgICAgICAgJyAnICtcclxuICAgICAgICAgIChpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZCkgPyAndGV4dC1tdXRlZCcgOiBvcHRpb24/Lmljb25PcHRpb24/LmNsYXNzTGlzdCA/PyAnJylcclxuICAgICAgICBcIj48L2VtPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1idXR0b24vc2MtY2VsbC1yZW5kZXItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUcvQixJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNqQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUcxQixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVUsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBSXZDLENBQUM7UUFDTCx5QkFBb0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FLbEU7SUFIQyxZQUFZLENBQUMsTUFBZ0U7UUFDM0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQVZVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRGIsTUFBTTs7NEZBQ2xCLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxN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QztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksSUFBSSxJQUFJO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQy9CLElBQUksT0FBTyxJQUFJLElBQUksVUFBVTtnQkFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBaUM7UUFDaEQsSUFBRyxPQUFPLGFBQWEsRUFBRSxhQUFhLEtBQUssVUFBVTtZQUNuRCxPQUFPLGFBQWEsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBOztZQUVoRCxPQUFPLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDeEMsQ0FBQzsrR0E1Q1UsNkJBQTZCO21HQUE3Qiw2QkFBNkIsME1DMU0xQyxzekVBbURBLHF3Q0Q4RmEsb0JBQW9COzs0RkF5RHBCLDZCQUE2QjtrQkFqQ3pDLFNBQVM7MkJBMkJGO3dCQUNKLE1BQU0sRUFBRSxzQkFBc0I7d0JBQzlCLEtBQUssRUFBRSxxREFBcUQ7cUJBQzdELGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBEaXJlY3RpdmUsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHsgSUNlbGxSZW5kZXJlclBhcmFtcyB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maWdCdXR0b25BZ0dyaWQsIERpc2FibGVkRnVjLCBFbnVtQnV0dG9uVHlwZSwgSGlkZUZ1YywgU3ViTWVudSwgVG9vbHRpcE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL0lTY0FnR3JpZCc7XHJcblxyXG5sZXQgc2NDZWxsUmVuZGVyQnV0dG9uTmV4dElkID0gMDtcclxubGV0IHNjTWVudVBhbmVsTmV4dElkID0gMDtcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgU2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfaGFuZGxlckJ1dHRvbkFjdGlvbiQgPSBuZXcgU3ViamVjdDx7XHJcbiAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgYWN0aW9uOiBzdHJpbmc7XHJcbiAgICBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW47XHJcbiAgfT4oKTtcclxuICBoYW5kbGVyQnV0dG9uQWN0aW9uJCA9IHRoaXMuX2hhbmRsZXJCdXR0b25BY3Rpb24kLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBidXR0b25BY3Rpb24ob3B0aW9uOiB7IGluZGV4OiBudW1iZXI7IGFjdGlvbjogc3RyaW5nOyBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW4gfSk6IHZvaWQge1xyXG4gICAgdGhpcy5faGFuZGxlckJ1dHRvbkFjdGlvbiQubmV4dChvcHRpb24pO1xyXG4gIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmFic3RyYWN0IGNsYXNzIFNjQ2VsbFJlbmRlckJhc2Uge1xyXG4gIHBhcmFtcyE6IElDZWxsUmVuZGVyZXJQYXJhbXM7XHJcblxyXG4gIGlzRnVuY3Rpb25EaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IERpc2FibGVkRnVjIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlKHRoaXMucGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc0Z1bmN0aW9uSGlkZSh2YWx1ZTogYm9vbGVhbiB8IEhpZGVGdWMpOiBib29sZWFuIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gdmFsdWUodGhpcy5wYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2MtbWVudS1wYW5lbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtbWVudSAjbWVudT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViTWVudSBvZiBzdWJNZW51c1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNGdW5jdGlvbkhpZGUoc3ViTWVudS5oaWRlID8/IGZhbHNlKVwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFzdWJNZW51LnN1Ym1lbnU7IGVsc2UgYnJhbmNoXCJcclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zYy1tZW51LXBhbmVsLWJvdHRvbV09XCJzdWJNZW51Py5pY29uICE9PSB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN1Yk1lbnU/LmxhYmVsID8/ICcnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZhLWxnXCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xyXG4gICAgICAgICAgICAgICAgc3ViTWVudS5pY29uICtcclxuICAgICAgICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICA/ICd0ZXh0LW11dGVkJ1xyXG4gICAgICAgICAgICAgICAgICA6IHN1Yk1lbnU/Lmljb25DbGFzcyA/PyAnJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bWF4LWxhYmVsXCI+e3sgc3ViTWVudT8ubGFiZWwgPz8gJycgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2JyYW5jaD5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiaW5uZXJQYW5lbC5tZW51XCJcclxuICAgICAgICAgICAgICBbY2xhc3Muc2MtbWVudS1wYW5lbC1ib3R0b21dPVwic3ViTWVudT8uaWNvbiAhPT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzdWJNZW51Py5sYWJlbCA/PyAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJNZW51Py5pY29uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtbGdcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAnc2MtbWVudS1wYW5lbC1pY29uICcgK1xyXG4gICAgICAgICAgICAgICAgICBzdWJNZW51Lmljb24gK1xyXG4gICAgICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgICAgICAoaXNGdW5jdGlvbkRpc2FibGVkKHN1Yk1lbnU/LmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ3RleHQtbXV0ZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzdWJNZW51Py5pY29uQ2xhc3MgPz8gJycpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1heC1sYWJlbFwiPnt7IHN1Yk1lbnU/LmxhYmVsID8/ICcnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxzYy1tZW51LXBhbmVsXHJcbiAgICAgICAgICAgICAgI2lubmVyUGFuZWxcclxuICAgICAgICAgICAgICBbcGFyYW1zXT1cInBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgKG9uQnV0dG9uQWN0aW9uKT1cIm9uQnV0dG9uQWN0aW9uRW1pdChzdWJNZW51Py5hY3Rpb25Db2RlID8/ICcnKVwiXHJcbiAgICAgICAgICAgICAgW3N1Yk1lbnVzXT1cInN1Yk1lbnUuc3VibWVudSA/PyBbXVwiXHJcbiAgICAgICAgICAgID48L3NjLW1lbnUtcGFuZWw+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgLnNjLW1lbnUtcGFuZWwtYm90dG9tIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5zYy1tZW51LXBhbmVsLWljb24ge1xyXG4gICAgICAgIHdpZHRoOiAxLjZyZW07XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIHtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50O1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b246ZGlzYWJsZWQge1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcDtcclxuICAgICAgfVxyXG4gICAgYCxcclxuICBdLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbaWRdJzogJ2lkU2NNZW51UGFuZWwnLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY01lbnVQYW5lbENvbXBvbmVudCBleHRlbmRzIFNjQ2VsbFJlbmRlckJhc2Uge1xyXG4gIGlkU2NNZW51UGFuZWwgPSBgc2MtbWVudS1wYW5lbC0keysrc2NNZW51UGFuZWxOZXh0SWR9YDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnUhOiBNYXRNZW51O1xyXG5cclxuICBASW5wdXQoKSBzdWJNZW51czogU3ViTWVudVtdID0gW107XHJcbiAgQElucHV0KCkgb3ZlcnJpZGUgcGFyYW1zITogSUNlbGxSZW5kZXJlclBhcmFtcztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlOiBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgb25CdXR0b25BY3Rpb25FbWl0KGFjdGlvbjogc3RyaW5nLCBpc1JpZ2h0Q2xpY2s6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnBhcmFtcz8ubm9kZS5yb3dJbmRleCA/PyAtMTtcclxuICAgIHRoaXMuX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UuYnV0dG9uQWN0aW9uKHtcclxuICAgICAgaW5kZXgsXHJcbiAgICAgIGFjdGlvbixcclxuICAgICAgaXNSaWdodENsaWNrXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9zYy1jZWxsLXJlbmRlci1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW1xyXG4gICAgYFxyXG4gICAgICAuc2MtY2VsbC1yZW5kZXItYnV0dG9uIHtcclxuICAgICAgICBwYWRkaW5nOiAwLjFlbSAxZW07XHJcbiAgICAgIH1cclxuICAgICAgLnNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb24ge1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgcGFkZGluZzogMCAwLjVlbTtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgbWFyZ2luOiAwLjFlbTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgICAuc2MtY2VsbC1yZW5kZXItYnV0dG9uLWFjdGlvbiBpIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB3aWR0aDogMS43ZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdlbTtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS43ZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgICAgfVxyXG4gICAgICBidXR0b246ZGlzYWJsZWQge1xyXG4gICAgICAgIGN1cnNvcjogbm8tZHJvcDtcclxuICAgICAgfVxyXG4gICAgYCxcclxuICBdLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbaWRdJzogJ2lkU2NDZWxsUmVuZGVyQnV0dG9uJyxcclxuICAgIGNsYXNzOiAnZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgc2MtY2VsbC1yZW5kZXItYnV0dG9uJyxcclxuICB9LFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudFxyXG4gIGV4dGVuZHMgU2NDZWxsUmVuZGVyQmFzZVxyXG4gIGltcGxlbWVudHMgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wXHJcbntcclxuICBpZFNjQ2VsbFJlbmRlckJ1dHRvbiA9IGBzYy1jZWxsLXJlbmRlci1idXR0b24tJHsrK3NjQ2VsbFJlbmRlckJ1dHRvbk5leHRJZH1gO1xyXG5cclxuICBvdmVycmlkZSBwYXJhbXMhOiBJQ2VsbFJlbmRlcmVyUGFyYW1zO1xyXG5cclxuICBjb25maWdCdXR0b25zOiBDb25maWdCdXR0b25BZ0dyaWRbXSA9IFtdO1xyXG5cclxuICBhZ0luaXQocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIHRoaXMuY29uZmlnQnV0dG9ucyA9XHJcbiAgICAgIHBhcmFtcy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5fY29uZmlnQnV0dG9uc0RlZmF1bHRBZ0dyaWQ7XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkFjdGlvbih0eXBlQnV0dG9uOiBFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgaXNSaWdodENsaWNrOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICh0eXBlQnV0dG9uKVxyXG4gICAgICB0aGlzLnBhcmFtcz8uY29udGV4dC5jb21wb25lbnRQYXJlbnQub25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KFxyXG4gICAgICAgIHRoaXMucGFyYW1zLm5vZGUucm93SW5kZXgsXHJcbiAgICAgICAgdHlwZUJ1dHRvbixcclxuICAgICAgICBpc1JpZ2h0Q2xpY2tcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goXzogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGhpZGVTdWJNZW51KHN1Yk1lbnU6IFN1Yk1lbnVbXSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHN1Yk1lbnUubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gc3ViTWVudS5ldmVyeSgoeyBoaWRlIH0pID0+IHtcclxuICAgICAgaWYgKGhpZGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBpZiAodHlwZW9mIGhpZGUgPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGhpZGUoKTtcclxuICAgICAgcmV0dXJuIGhpZGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXBPcHRpb24oY29uZmlnQnV0dG9uczogQ29uZmlnQnV0dG9uQWdHcmlkKTogVG9vbHRpcE9wdGlvbiB7XHJcbiAgICBpZih0eXBlb2YgY29uZmlnQnV0dG9ucz8udG9vbHRpcE9wdGlvbiA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgcmV0dXJuIGNvbmZpZ0J1dHRvbnM/LnRvb2x0aXBPcHRpb24odGhpcy5wYXJhbXMpXHJcbiAgICBlbHNlIFxyXG4gICAgICByZXR1cm4gY29uZmlnQnV0dG9ucz8udG9vbHRpcE9wdGlvbjtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbmZpZ0J1dHRvbnNcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uPy5zdWJtZW51Py5sZW5ndGggPz8gMCA+IDA7IGVsc2UgYnV0dG9uUHJpbmNpcGFsXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGVTdWJNZW51KG9wdGlvbj8uc3VibWVudSA/PyBbXSlcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdFJpcHBsZVxyXG4gICAgICAgIGNsYXNzPVwiYnRuIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb25cIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIm9wdGlvbj8uYnV0dG9uT3B0aW9uPy5jbGFzc0xpc3QgPyAkYW55KG9wdGlvbj8uYnV0dG9uT3B0aW9uPy5jbGFzc0xpc3QpIDogJydcIlxyXG4gICAgICAgICpuZ0lmPVwiIWlzRnVuY3Rpb25IaWRlKG9wdGlvbj8uaGlkZSA/PyBmYWxzZSlcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxyXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJwYW5lbC5tZW51XCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIlxyXG4gICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmNsYXNzTGlzdCA/PyAnJ1wiXHJcbiAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZClcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmxhYmVsXCI+XHJcbiAgICAgICAgPGVtXHJcbiAgICAgICAgICBjbGFzcz1cInAtMFwiXHJcbiAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgIChvcHRpb24/Lmljb25PcHRpb24/Lmljb24gPz8gJycpICtcclxuICAgICAgICAgICAgJyAnICtcclxuICAgICAgICAgICAgKGlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKSA/ICd0ZXh0LW11dGVkJyA6IG9wdGlvbj8uaWNvbk9wdGlvbj8uY2xhc3NMaXN0ID8/ICcnKVxyXG4gICAgICAgICAgXCI+PC9lbT5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8c2MtbWVudS1wYW5lbCAjcGFuZWwgW3BhcmFtc109XCJwYXJhbXNcIiBbc3ViTWVudXNdPVwib3B0aW9uLnN1Ym1lbnUgPz8gW11cIj48L3NjLW1lbnUtcGFuZWw+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNidXR0b25QcmluY2lwYWw+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiIWlzRnVuY3Rpb25IaWRlKG9wdGlvbj8uaGlkZSA/PyBmYWxzZSlcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNGdW5jdGlvbkRpc2FibGVkKG9wdGlvbj8uZGlzYWJsZWQpXCJcclxuICAgICAgW25nQ2xhc3NdPVwib3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCA/ICRhbnkob3B0aW9uPy5idXR0b25PcHRpb24/LmNsYXNzTGlzdCkgOiAnJ1wiXHJcbiAgICAgIGNsYXNzPVwiYnRuIHNjLWNlbGwtcmVuZGVyLWJ1dHRvbi1hY3Rpb25cIlxyXG4gICAgICBtYXRSaXBwbGVcclxuICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uQWN0aW9uKG9wdGlvbj8uYWN0aW9uQ29kZSA/PyAnJylcIlxyXG4gICAgICAoYXV4Y2xpY2spPVwib25CdXR0b25BY3Rpb24ob3B0aW9uPy5hY3Rpb25Db2RlID8/ICcnLCB0cnVlKVwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sdGlwT3B0aW9uKG9wdGlvbikubGFiZWxcIlxyXG4gICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImdldFRvb2x0aXBPcHRpb24ob3B0aW9uKS5jbGFzc0xpc3QgPz8gJydcIlxyXG4gICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cImlzRnVuY3Rpb25EaXNhYmxlZChvcHRpb24/LmRpc2FibGVkKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VG9vbHRpcE9wdGlvbihvcHRpb24pLmxhYmVsXCI+XHJcbiAgICAgIDxlbVxyXG4gICAgICAgIGNsYXNzPVwicHQtMFwiXHJcbiAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgKG9wdGlvbj8uaWNvbk9wdGlvbj8uaWNvbiA/PyAnJykgK1xyXG4gICAgICAgICAgJyAnICtcclxuICAgICAgICAgIChpc0Z1bmN0aW9uRGlzYWJsZWQob3B0aW9uPy5kaXNhYmxlZCkgPyAndGV4dC1tdXRlZCcgOiBvcHRpb24/Lmljb25PcHRpb24/LmNsYXNzTGlzdCA/PyAnJylcclxuICAgICAgICBcIj48L2VtPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
package/esm2022/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.mjs
CHANGED
|
@@ -194,13 +194,13 @@ export class ScAgGridCustomizableComponent {
|
|
|
194
194
|
};
|
|
195
195
|
}
|
|
196
196
|
ngOnInit() {
|
|
197
|
-
this._subscription$.add(this._scCellRenderButtonService.handlerButtonAction$.subscribe(({ index, action }) => {
|
|
197
|
+
this._subscription$.add(this._scCellRenderButtonService.handlerButtonAction$.subscribe(({ index, action, isRightClick }) => {
|
|
198
198
|
if (action == null)
|
|
199
199
|
return;
|
|
200
200
|
if (action.trim() === "")
|
|
201
201
|
return;
|
|
202
202
|
if (index !== -1) {
|
|
203
|
-
this.onButtonActionAgGridEmit(index, action);
|
|
203
|
+
this.onButtonActionAgGridEmit(index, action, isRightClick);
|
|
204
204
|
return;
|
|
205
205
|
}
|
|
206
206
|
this.onButtonActionHeaderEmit(action);
|
|
@@ -271,7 +271,7 @@ export class ScAgGridCustomizableComponent {
|
|
|
271
271
|
return hide();
|
|
272
272
|
return hide;
|
|
273
273
|
}
|
|
274
|
-
onButtonActionAgGridEmit(rowIndex, typeButton) {
|
|
274
|
+
onButtonActionAgGridEmit(rowIndex, typeButton, isRightClick) {
|
|
275
275
|
const IRowNode = this.gridApi?.getDisplayedRowAtIndex(rowIndex);
|
|
276
276
|
if (IRowNode) {
|
|
277
277
|
if (typeButton === EnumButtonType.TYPE_EDIT) {
|
|
@@ -282,7 +282,7 @@ export class ScAgGridCustomizableComponent {
|
|
|
282
282
|
this.onDeleteRow.emit([this.gridApi, [IRowNode.data]]);
|
|
283
283
|
return;
|
|
284
284
|
}
|
|
285
|
-
this.onButtonActionAgGrid.emit([typeButton, IRowNode]);
|
|
285
|
+
this.onButtonActionAgGrid.emit([typeButton, IRowNode, isRightClick]);
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
288
|
initRowData() {
|
|
@@ -588,4 +588,4 @@ export function isObjEmpty(object) {
|
|
|
588
588
|
return true;
|
|
589
589
|
return Object.keys(object).length === 0;
|
|
590
590
|
}
|
|
591
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWctZ3JpZC1jdXN0b21pemFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQW9CdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUtMLGNBQWMsR0FJZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBR3hFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQVdmLE1BQU0sT0FBTyw2QkFBNkI7SUFWMUM7UUF3QkUsb0NBQStCLEdBQUcsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFL0Qsb0JBQWUsR0FBb0IsR0FBRyxF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Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQWtCUCxxQkFBcUI7c0JBRHBCLEtBQUs7O0FBb1RSLE1BQU0sVUFBVSxVQUFVLENBQUksTUFBUztJQUNyQyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV6RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgaW5qZWN0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7XHJcbiAgQ2VsbENvbnRleHRNZW51RXZlbnQsXHJcbiAgQ2VsbEVkaXRpbmdTdG9wcGVkRXZlbnQsXHJcbiAgQ2VsbEtleURvd25FdmVudCxcclxuICBDZWxsVmFsdWVDaGFuZ2VkRXZlbnQsXHJcbiAgQ29sRGVmLFxyXG4gIEdyaWRBcGksXHJcbiAgR3JpZFJlYWR5RXZlbnQsXHJcbiAgSVJvd05vZGUsXHJcbiAgSXNSb3dTZWxlY3RhYmxlLFxyXG4gIFJvd0NsaWNrZWRFdmVudCxcclxuICBSb3dEYXRhVXBkYXRlZEV2ZW50LFxyXG4gIFJvd0RvdWJsZUNsaWNrZWRFdmVudCxcclxuICBSb3dEcmFnRXZlbnQsXHJcbiAgUm93RWRpdGluZ1N0YXJ0ZWRFdmVudCxcclxuICBSb3dTZWxlY3RlZEV2ZW50LFxyXG59IGZyb20gXCJhZy1ncmlkLWNvbW11bml0eVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSU5nU2VsZWN0IH0gZnJvbSBcIi4uLy4uL3V0aWxzL0lOZ1NlbGVjdFwiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbkhlYWRlcixcclxuICBDb25maWdCdXR0b25BY3Rpb24sXHJcbiAgQ29uZmlnQnV0dG9uQWdHcmlkLFxyXG4gIENvbmZpZ0J1dHRvbkhlYWRlcixcclxuICBFbnVtQnV0dG9uVHlwZSxcclxuICBHZXRSb3dTdHlsZSxcclxuICBIaWRlRnVjLFxyXG4gIFJvd1NlbGVjdGlvbixcclxufSBmcm9tIFwiLi4vLi4vdXRpbHMvSVNjQWdHcmlkXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VVdGlsU2VydmljZSB9IGZyb20gXCIuLi8uLi91dGlscy9tZXNzYWdlLXV0aWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlIH0gZnJvbSBcIi4uL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWJ1dHRvbi9zYy1jZWxsLXJlbmRlci1idXR0b24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IHNjQ29tcG9uZW50cyB9IGZyb20gXCIuLi9jZWxsLXJlbmRlci9zYy1jZWxsLXJlbmRlci1jb25maWdcIjtcclxuaW1wb3J0IHsgU2NBZ0dyaWRCdXR0b25IZWFkZXIgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9zY0FnR3JpZC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgU2NBZ0dyaWRQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSBcIi4uL3NjLWFnLWdyaWQtcGFnaW5hdGlvbi9zYy1hZy1ncmlkLXBhZ2luYXRpb24uY29tcG9uZW50XCI7XHJcblxyXG5sZXQgbmV4dElkID0gMDtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwic2MtYWctZ3JpZC1jdXN0b21pemFibGVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGhvc3Q6IHtcclxuICAgIFwiW2lkXVwiOiBcImlkU2NBZ0dyaWRDdXN0b21pemFibGVDb21wb25lbnRcIixcclxuICAgIGNsYXNzOiBcInNjLWFnLWdyaWQtY3VzdG9taXphYmxlXCIsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjQWdHcmlkQ3VzdG9taXphYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQENvbnRlbnRDaGlsZHJlbihTY0FnR3JpZEJ1dHRvbkhlYWRlciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxyXG4gIHZpZXdDaGlsZHJlbkJ1dHRvbkhlYWRlcnMhOiBRdWVyeUxpc3Q8U2NBZ0dyaWRCdXR0b25IZWFkZXI+O1xyXG5cclxuICBAVmlld0NoaWxkKFwibWVudVRyaWdnZXJcIikgbWVudVRyaWdnZXI/OiBNYXRNZW51VHJpZ2dlcjtcclxuXHJcbiAgQFZpZXdDaGlsZChcInNjQWdHcmlkUGFnaW5hdGlvblwiKVxyXG4gIHByaXZhdGUgX3NjQWdHcmlkUGFnaW5hdGlvbj86IFNjQWdHcmlkUGFnaW5hdGlvbkNvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChcImJ1dHRvbkFkZFwiKSBidXR0b25BZGQ/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcclxuICBnZXQgYnV0dG9uQWRkRWxlbWVudCgpOiBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uQWRkPy5uYXRpdmVFbGVtZW50ID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBpZFNjQWdHcmlkQ3VzdG9taXphYmxlQ29tcG9uZW50ID0gYHNjLWFnLWdyaWQtY3VzdG9taXphYmxlLSR7KytuZXh0SWR9YDtcclxuXHJcbiAgQElucHV0KCkgaXNSb3dTZWxlY3RhYmxlOiBJc1Jvd1NlbGVjdGFibGUgPSAoKSA9PiB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gVMOtdHVsbyBxdWUgc2UgbXVlc3RyYSBlbiBlbCBoZWFkZXIgZGUgbGEgZ3JpbGxhXHJcbiAgICovXHJcbiAgQElucHV0KCkgaGVhZGVyVGl0bGU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmFjacOzbiBkZWwgYmFkZ2UgKGV0aXF1ZXRhIGNvbiBjb250YWRvcikgZGVsIGhlYWRlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhlYWRlclN1YnRpdGxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gRGV0ZXJtaW5hIHNpIGVsIGJ1c2NhZG9yIGRlYmUgbW9zdHJhcnNlIGp1bnRvIGEgbG9zIGJvdG9uZXMgZGUgYWNjacOzblxyXG4gICAqL1xyXG4gIGdldCBzaG93U2VhcmNoSW5BY3Rpb25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5oZWFkZXJUaXRsZTtcclxuICB9XHJcblxyXG4gIHNlYXJjaENsYXNzID0gXCJjb2wtMTIgY29sLXNtLTEyIGNvbC1tZC02IGNvbC1sZy02IGNvbC14bC01IG15LTJcIjtcclxuICBASW5wdXQoKSBnZXRSb3dTdHlsZTogR2V0Um93U3R5bGUgPSAoKSA9PiB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZmlsbFNlYXJjaCA9IGZhbHNlO1xyXG4gIC8vI3JlZ2lvbiBJbnB1dHNcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gQ2FudGlkYWQgZGUgaXRlbXMgcXVlIHNlIG1vc3RyYXLDoSBwb3IgcMOhZ2luYVxyXG4gICAqIEBkZWZhdWx0IDE1XHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnaW5hdGlvblBhZ2VTaXplID0gMTU7XHJcbiAgQElucHV0KCkgc2VhcmNoV2lkdGggPSBcIlwiO1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiAgT3BjaW9uZXMgZGUgdGFtYcOxbyBkZSBww6FnaW5hXHJcbiAgICogQGRlZmF1bHQgJ1s1LCAxMCwgMTUsIDIwLCAyNV0nXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zID0gWzUsIDEwLCAxNSwgMjAsIDI1XTtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gU2kgZWwgdmFsb3IgZXMgYHRydWVgIG11ZXN0cmEgbGEgcGFnaW5hY2nDs25cclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnaW5hdGlvbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFRpcG8gZGUgc2VsZWNpb24gZW4gbGEgYGdyaWxsYWBzXHJcbiAgICogQGRlZmF1bHQgJ3NpbXBsZSdcclxuICAgKi9cclxuICBASW5wdXQoKSByb3dTZWxlY3Rpb246IFJvd1NlbGVjdGlvbiA9IFwic2luZ2xlXCI7XHJcbiAgLy8gQElucHV0KCkgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9IHRydWU7XHJcbiAgZ2V0IHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3dTZWxlY3Rpb24gPT09IFwic2luZ2xlXCIgPyBmYWxzZSA6IHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBcnJheSBkZSBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcmEgZW4gbGEgYGdyaWxsYWBcclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBjb2x1bW5EZWZzOiBDb2xEZWZbXSA9IFtdO1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBcnJheSBkZSBkYXRvcyBxdWUgc2UgbW9zdHJhcmEgZW4gbGEgYGdyaWxsYWBcclxuICAgKiBAZGVmYXVsdCBudWxsXHJcbiAgICovXHJcbiAgQElucHV0KCkgcm93RGF0YTogT2JzZXJ2YWJsZTxhbnlbXT4gPSBvZihbXSk7XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ0J1dHRvbnNBY3Rpb24hOiBDb25maWdCdXR0b25BY3Rpb247XHJcbiAgZ2V0IGNvbmZpZ0hlYWRlcigpOiBDb25maWdCdXR0b25IZWFkZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24/LmhlYWRlciA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZGVmYXVsdENlbGxSZW5kZXJlckFjdGlvbnM6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkOiBDb25maWdCdXR0b25BZ0dyaWRbXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gU2kgZWwgdmFsb3IgZXMgYHRydWVgIG11ZXN0cmEgZWwgYGJ1c2NhZG9yYFxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKi9cclxuICBASW5wdXQoKSB2aXNpYmxlU2VhcmNoID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgZG9tTGF5b3V0OiBcIm5vcm1hbFwiIHwgXCJhdXRvSGVpZ2h0XCIgPSBcIm5vcm1hbFwiO1xyXG4gIEBJbnB1dCgpIGhlaWdodCA9IFwiMjBlbVwiO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gQ3BuZmlndXJhY2nDs24gcGFyYSBlbCBib3RvbiBgQWdyZWdhcmBcclxuICAgKiBAZGVmYXVsdCAneyB2aXNpYmxlOiB0cnVlLCBkaXNhYmxlZDogZmFsc2UgfSdcclxuICAgKi9cclxuICBASW5wdXQoKSBidG5BZGQ6IEJ1dHRvbkhlYWRlciA9IHsgdmlzaWJsZTogdHJ1ZSB9O1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIGFjdGl2YXIgbyBkZXNjYXRpdmFyIGVsIGRyYWcgJiBkcm9wXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKi9cclxuICBASW5wdXQoKSByb3dEcmFnTWFuYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUGFyYSBhY3RpdmFyIG8gZGVzY2F0aXZhciBsYXMgYW5pbWFjaW9uZXNcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFuaW1hdGVSb3dzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHVzZUdyaWRDb3B5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbXVsdGlTb3J0S2V5ITogYW55O1xyXG4gIEBJbnB1dCgpIHNob3dNZW51RGVmYXVsdCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzdXBwcmVzc1Jvd1RyYW5zZm9ybSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVJhbmdlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbm9Sb3dzT3ZlcmxheUNvbXBvbmVudCA9IFwiXCI7XHJcbiAgQElucHV0KCkgbm9Sb3dzT3ZlcmxheUNvbXBvbmVudFBhcmFtcyA9IHt9O1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBIaWRlRGVsYXk6IG51bWJlciA9IDEwMDA7XHJcbiAgQElucHV0KCkgdG9vbHRpcFNob3dEZWxheTogbnVtYmVyID0gMTAwO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBTaG93TW9kZTogXCJzdGFuZGFyZFwiIHwgXCJ3aGVuVHJ1bmNhdGVkXCIgPSBcInN0YW5kYXJkXCI7XHJcbiAgQElucHV0KCkgdmFsaWRhdGVQYXN0ZUNlbGw/OiAoZXZ0U291cmNlOiBDZWxsS2V5RG93bkV2ZW50LCBldnRUYXJnZXQ6IENlbGxLZXlEb3duRXZlbnQpID0+IFByb21pc2U8Ym9vbGVhbj4gPSAoXHJcbiAgICBldnRTb3VyY2U6IENlbGxLZXlEb3duRXZlbnQsXHJcbiAgICBldnRUYXJnZXQ6IENlbGxLZXlEb3duRXZlbnRcclxuICApID0+IFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICBASW5wdXQoKSB2YWxpZGF0ZVBhc3RlUm93cz86IChldnRTb3VyY2U6IElSb3dOb2RlW10sIGV2dFRhcmdldDogSVJvd05vZGVbXSkgPT4gUHJvbWlzZTxib29sZWFuPiA9IChcclxuICAgIGV2dFNvdXJjZTogSVJvd05vZGVbXSxcclxuICAgIGV2dFRhcmdldDogSVJvd05vZGVbXVxyXG4gICkgPT4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUGFyYSBhZ3JlZ2FyIGNvbXBvbmVudGVzIGludGVybm9zIGRlbnRybyBkZSBsYSBncmlsbGFcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBmcmFtZXdvcmtDb21wb25lbnRzKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX2ZyYW1ld29ya0NvbXBvbmVudHMgPSB7IC4uLnRoaXMuX2ZyYW1ld29ya0NvbXBvbmVudHMsIC4uLnZhbHVlIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUGFyYSBwb2RlciBhZ3JlZ2FyIG3DoXMgb2JqZXRvcyBhbCBjb250ZXh0b1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbnRleHQodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fY29udGV4dCA9IHsgLi4udGhpcy5fY29udGV4dCwgLi4udmFsdWUgfTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBPdXRwdXRcclxuICBAT3V0cHV0KCkgb25DaGFuZ2VGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgb25BZGRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRBcGk+KCk7XHJcbiAgQE91dHB1dCgpIG9uR3JpZEFkZFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbEtleURvd25FdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25FZGl0Um93ID0gbmV3IEV2ZW50RW1pdHRlcjxJUm93Tm9kZT4oKTtcclxuICBAT3V0cHV0KCkgb25EZWxldGVSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPFtHcmlkQXBpLCBhbnlbXV0+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2VsbEtleURvd246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNlbGxTdG9wRWRpdGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQnV0dG9uQWN0aW9uQWdHcmlkID0gbmV3IEV2ZW50RW1pdHRlcjxbRW51bUJ1dHRvblR5cGUgfCBzdHJpbmcsIElSb3dOb2RlXT4oKTtcclxuICBAT3V0cHV0KCkgb25CdXR0b25BY3Rpb25IZWFkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFtFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgYW55W11dPigpO1xyXG5cclxuICAvLyBBZ0dyaWQgRXZlbnRzIC0gT3VwdXRcclxuICBAT3V0cHV0KCkgb25HcmlkUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPFtHcmlkQXBpXT4oKTtcclxuICBAT3V0cHV0KCkgb25HcmlkU2VsZWN0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCkgb25HcmlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxbR3JpZEFwaSwgUm93RGF0YVVwZGF0ZWRFdmVudF0+KCk7XHJcbiAgQE91dHB1dCgpIG9uUm93RHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93RHJhZ0V2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0VkaXRpbmdTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dFZGl0aW5nU3RhcnRlZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSByb3dDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dDbGlja2VkRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0RvdWJsZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0RvdWJsZUNsaWNrZWRFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93U2VsZWN0ZWRFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgY2VsbFZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbFZhbHVlQ2hhbmdlZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNlbGxDb250ZXh0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENvbnRleHRNZW51RXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uUGFzdGVNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsQ29udGV4dE1lbnVFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25Db3B5TWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENvbnRleHRNZW51RXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyUGFzdGVDZWxsID0gbmV3IEV2ZW50RW1pdHRlcjxbQ2VsbEtleURvd25FdmVudCwgQ2VsbEtleURvd25FdmVudF0+KCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZVBhc3RlQ2VsbCA9IG5ldyBFdmVudEVtaXR0ZXI8W0NlbGxLZXlEb3duRXZlbnQsIENlbGxLZXlEb3duRXZlbnRdPigpO1xyXG4gIEBPdXRwdXQoKSBhZnRlclBhc3RlUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8W0lSb3dOb2RlW10sIElSb3dOb2RlW11dPigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVQYXN0ZVJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPFtJUm93Tm9kZVtdLCBJUm93Tm9kZVtdXT4oKTtcclxuXHJcbiAgY29sdW1uRGVmc0FuZEFkZENlbGxBY3Rpb25zOiBDb2xEZWZbXSA9IFtdO1xyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gIH07XHJcbiAgX2ZyYW1ld29ya0NvbXBvbmVudHMgPSB7IC4uLnNjQ29tcG9uZW50cyB9O1xyXG4gIF9jb250ZXh0ID0geyBjb21wb25lbnRQYXJlbnQ6IHRoaXMgYXMgYW55IH07XHJcblxyXG4gIGJvdHRvbU1lbnU6IHN0cmluZyA9IFwiMFwiO1xyXG4gIGxlZnRNZW51OiBzdHJpbmcgPSBcIjBcIjtcclxuICBoaWRkZW5NZW51OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29waWVkQ2VsbD86IENlbGxLZXlEb3duRXZlbnQ7XHJcbiAgY29waWVkUm93PzogSVJvd05vZGVbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBvdmVybGF5Tm9Sb3dzVGVtcGxhdGUgPSBgPHNwYW4gY2xhc3M9XCJhZy1vdmVybGF5LWxvYWRpbmctY2VudGVyIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHNoYWRvdy1ub25lXCI+XHJcblx0XHRcdE5vIHNlIGVuY29udHJhcm9uIHJlZ2lzdHJvcy4uLlxyXG5cdFx0PC9zcGFuPmA7XHJcblxyXG4gIG92ZXJsYXlMb2FkaW5nVGVtcGxhdGUgPSBgPHNwYW4gY2xhc3M9XCJhZy1vdmVybGF5LWxvYWRpbmctdG9wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLTAgYmctd2hpdGUgc2hhZG93IHAtNCB0ZXh0LWluZm9cIiBzdHlsZT1cImhlaWdodDogMjBweDtcIj5cclxuXHRcdFx0PGltZyBzcmM9XCJhc3NldHMvbWVkaWEtZGVtby9sb2FkaW5nLmdpZlwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyNVwiIGNsYXNzPVwibXItMlwiPlxyXG5cdFx0XHQ8c3Ryb25nPkNhcmdhbmRvIHJlZ2lzdHJvczwvc3Ryb25nPlxyXG5cdFx0PC9zcGFuPlxyXG5cdFx0YDtcclxuICBzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1ucyA9IHRydWU7XHJcbiAgc3VwcHJlc3NTY3JvbGxPbk5ld0RhdGEgPSBmYWxzZTtcclxuICBzdXBwcmVzc1BhZ2luYXRpb25QYW5lbCA9IHRydWU7XHJcblxyXG4gIC8vIEFnR3JpZCBTdHlsZVxyXG4gIGdldCBuZ1N0eWxlQ29udGFpbmVyKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldCBuZ1N0eWxlQWdHcmlkKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIF9zdWJzY3JpcHRpb24kID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByb2dyZXNzVmlzaWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgZ3JpZEFwaSE6IEdyaWRBcGk7XHJcbiAgX3N1YnNjcmlwdGlvblJvd0RhdGEkPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XHJcblxyXG4gIGNlbGxDb250ZXh0TWVudUFjdHVhbD86IENlbGxDb250ZXh0TWVudUV2ZW50O1xyXG5cclxuICBwcml2YXRlIF9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlID0gaW5qZWN0KFNjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX21lc3NhZ2VVdGlsU2VydmljZSA9IGluamVjdChNZXNzYWdlVXRpbFNlcnZpY2UpO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiQuYWRkKFxyXG4gICAgICB0aGlzLl9zY0NlbGxSZW5kZXJCdXR0b25TZXJ2aWNlLmhhbmRsZXJCdXR0b25BY3Rpb24kLnN1YnNjcmliZSgoeyBpbmRleCwgYWN0aW9uIH0pID0+IHtcclxuICAgICAgICBpZiAoYWN0aW9uID09IG51bGwpIHJldHVybjtcclxuICAgICAgICBpZiAoYWN0aW9uLnRyaW0oKSA9PT0gXCJcIikgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQnV0dG9uQWN0aW9uQWdHcmlkRW1pdChpbmRleCwgYWN0aW9uKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub25CdXR0b25BY3Rpb25IZWFkZXJFbWl0KGFjdGlvbik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuaW5pdEFjdGlvbkJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmdyaWRBcGkpIHJldHVybjtcclxuICAgIGlmIChjaGFuZ2VzW1wiY29uZmlnQnV0dG9uc0FjdGlvblwiXSkgdGhpcy5pbml0QWN0aW9uQnV0dG9uKCk7XHJcbiAgICBpZiAoY2hhbmdlc1tcInJvd0RhdGFcIl0pIHRoaXMuaW5pdFJvd0RhdGEoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uJD8udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID0gMDtcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQWN0aW9uSGVhZGVyRW1pdCh0eXBlQnV0dG9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvd3NTZWxlY3RlZCA9IHRoaXMuZ3JpZEFwaT8uZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgICB0aGlzLm9uQnV0dG9uQWN0aW9uSGVhZGVyLmVtaXQoW3R5cGVCdXR0b24sIHJvd3NTZWxlY3RlZF0pO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFjdGlvbkJ1dHRvbigpOiB2b2lkIHtcclxuICAgIGlmIChpc09iakVtcHR5KHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbikpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB7IGFnR3JpZCB9ID0gdGhpcy5jb25maWdCdXR0b25zQWN0aW9uITtcclxuXHJcbiAgICBpZiAoYWdHcmlkICYmIGFnR3JpZC5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fY29uZmlnQnV0dG9uc0RlZmF1bHRBZ0dyaWQgPSBbLi4uYWdHcmlkLmFjdGlvbnNdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2l6ZUZpdENvbHVtbkFjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2l6ZUZpdENvbHVtbkFjdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuX2NvbmZpZ0J1dHRvbnNEZWZhdWx0QWdHcmlkLmZpbHRlcigoeyBoaWRlIH0pID0+IHtcclxuICAgICAgcmV0dXJuICF0aGlzLl9oaWRlRnVuYyhoaWRlKTtcclxuICAgIH0pLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCB3aWR0aCA9IGxlbmd0aCA9PSAyID8gOTAgOiA4MDtcclxuICAgIGNvbnN0IG1pbldpZHRoID0gbGVuZ3RoID4gMiA/IGxlbmd0aCAqIDMzICsgMTAgOiB3aWR0aDtcclxuXHJcbiAgICBjb25zdCBuZXdDb2x1bW5zOiBDb2xEZWYgPSB7XHJcbiAgICAgIGhlYWRlck5hbWU6IFwiQWNjaW9uZXNcIixcclxuICAgICAgaGVhZGVyQ2xhc3M6IFwiYWctaGVhZGVyX19jZW50ZXJcIixcclxuICAgICAgZmllbGQ6IFwiXCIsXHJcbiAgICAgIHdpZHRoOiBtaW5XaWR0aCxcclxuICAgICAgbWluV2lkdGgsXHJcbiAgICAgIG1heFdpZHRoOiBtaW5XaWR0aCxcclxuICAgICAgY2VsbENsYXNzOiBbXCJkLWZsZXhcIiwgXCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIsIFwiYWxpZ24taXRlbXMtY2VudGVyXCJdLFxyXG4gICAgICBjZWxsU3R5bGU6IHsgb3ZlcmZsb3c6IFwidmlzaWJsZVwiIH0sXHJcbiAgICAgIHJlc2l6YWJsZTogZmFsc2UsXHJcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLmRlZmF1bHRDZWxsUmVuZGVyZXJBY3Rpb25zID8gdGhpcy5kZWZhdWx0Q2VsbFJlbmRlcmVyQWN0aW9ucyA6IFwic2NDZWxsUmVuZGVyZXJCdXR0b25Db21wb25lbnRcIixcclxuICAgICAgcGlubmVkOiBcInJpZ2h0XCIsXHJcbiAgICAgIHN1cHByZXNzTWVudTogdHJ1ZSxcclxuICAgICAgbG9ja1Bvc2l0aW9uOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY29sdW1uRGVmc0FuZEFkZENlbGxBY3Rpb25zID0gdGhpcy5faGlkZUFnR3JpZE1lbnVBY3Rpb24oKSA/IFsuLi50aGlzLmNvbHVtbkRlZnNdIDogWy4uLnRoaXMuY29sdW1uRGVmcywgbmV3Q29sdW1uc107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oaWRlQWdHcmlkTWVudUFjdGlvbigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24gPT0gbnVsbCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24/LmFnR3JpZD8uYWN0aW9ucy5ldmVyeSgoeyBoaWRlIH0pID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUZ1bmMoaGlkZSk7XHJcbiAgICAgIH0pID8/IHRydWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oaWRlRnVuYyhoaWRlOiBIaWRlRnVjIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGhpZGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHR5cGVvZiBoaWRlID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGhpZGUoKTtcclxuXHJcbiAgICByZXR1cm4gaGlkZTtcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQWN0aW9uQWdHcmlkRW1pdChyb3dJbmRleDogbnVtYmVyLCB0eXBlQnV0dG9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IElSb3dOb2RlID0gdGhpcy5ncmlkQXBpPy5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KHJvd0luZGV4KTtcclxuXHJcbiAgICBpZiAoSVJvd05vZGUpIHtcclxuICAgICAgaWYgKHR5cGVCdXR0b24gPT09IEVudW1CdXR0b25UeXBlLlRZUEVfRURJVCkge1xyXG4gICAgICAgIHRoaXMub25FZGl0Um93LmVtaXQoSVJvd05vZGUpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZUJ1dHRvbiA9PT0gRW51bUJ1dHRvblR5cGUuVFlQRV9ERUxFVEUpIHtcclxuICAgICAgICB0aGlzLm9uRGVsZXRlUm93LmVtaXQoW3RoaXMuZ3JpZEFwaSwgW0lSb3dOb2RlLmRhdGFdXSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9uQnV0dG9uQWN0aW9uQWdHcmlkLmVtaXQoW3R5cGVCdXR0b24sIElSb3dOb2RlXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Um93RGF0YSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb25maWdCdXR0b25zQWN0aW9uPy5hZ0dyaWQpIHRoaXMuc2l6ZUZpdENvbHVtbkFjdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKFwicm93RGF0YVwiLCBbXSk7XHJcbiAgICAgIHRoaXMuZ3JpZEFwaT8uc2hvd0xvYWRpbmdPdmVybGF5KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25Sb3dEYXRhJCA9IHRoaXMucm93RGF0YS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oXCJyb3dEYXRhXCIsIGRhdGEpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGaWx0ZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQXBpPy5zZXRRdWlja0ZpbHRlcih2YWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlRmlsdGVyLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25BZGRSb3dFbWl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkFkZFJvdy5lbWl0KHRoaXMuZ3JpZEFwaSk7XHJcbiAgfVxyXG5cclxuICBoaWRlSGVhZGVyTWVudUFjdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyPy5zdWJtZW51Py5ldmVyeSgoeyBoaWRlIH0pID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUZ1bmMoaGlkZSk7XHJcbiAgICAgIH0pID8/IGZhbHNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcGFnaW5hdGlvbkNoYW5nZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc2NBZ0dyaWRQYWdpbmF0aW9uKSB0aGlzLl9zY0FnR3JpZFBhZ2luYXRpb24ub25QYWdpbmF0aW9uQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgZ3JpZFJlYWR5KGV2ZW50OiBHcmlkUmVhZHlFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkQXBpID0gZXZlbnQuYXBpO1xyXG5cclxuICAgIHRoaXMuaW5pdFJvd0RhdGEoKTtcclxuICAgIHRoaXMub25HcmlkUmVhZHkuZW1pdChbdGhpcy5ncmlkQXBpXSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gZXZlbnQ6IG9wY2lvbmFsIC0gQ29udGllbmUgZWwgbm9kbyB5IGxhIGRhdGEgZGUgbGEgZmlsYSBhY3R1YWwuXHJcbiAgICogQGRlc2NyaXB0aW9uIFNlIGRpc3BhcmEgY2FkYSB2ZXogcXVlIGxhIGZpbGEgZXMgY29sb2NhZGEgZW4gc3UgbnVldmEgcG9zaWNpw7NuIChEcmFnICYgRHJvcCkuXHJcbiAgICovXHJcbiAgcm93RHJhZ0VuZEVtaXQoZXZlbnQ6IFJvd0RyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblJvd0RyYWdFbmQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBjZWxsQ29udGV4dE1lbnUoZXZlbnQ6IENlbGxDb250ZXh0TWVudUV2ZW50KSB7XHJcbiAgICB0aGlzLmNlbGxDb250ZXh0TWVudUFjdHVhbCA9IGV2ZW50O1xyXG4gICAgdGhpcy5vbkNlbGxDb250ZXh0TWVudS5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMubGVmdE1lbnUgPSAoZXZlbnQuZXZlbnQhIGFzIFBvaW50ZXJFdmVudCkueC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5ib3R0b21NZW51ID0gKChldmVudC5ldmVudCEgYXMgUG9pbnRlckV2ZW50KS55IC0gMjApLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAoZXZlbnQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNob3dNZW51RGVmYXVsdCkgdGhpcy5tZW51VHJpZ2dlcj8ub3Blbk1lbnUoKTtcclxuICB9XHJcblxyXG4gIHJvd0RhdGFDaGFuZ2VkKGV2ZW50OiBSb3dEYXRhVXBkYXRlZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZEFwaSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghdGhpcy5ncmlkQXBpPy5nZXREaXNwbGF5ZWRSb3dDb3VudCgpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5vbkdyaWRDaGFuZ2UuZW1pdChbdGhpcy5ncmlkQXBpLCBldmVudF0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIHRoaXMub25HcmlkU2VsZWN0Q2hhbmdlLmVtaXQodGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKSk7XHJcbiAgfVxyXG5cclxuICBjZWxsU3RvcEVkaXRpbmcoZXZ0OiBDZWxsRWRpdGluZ1N0b3BwZWRFdmVudCkge1xyXG4gICAgdGhpcy5vbkNlbGxTdG9wRWRpdGluZy5lbWl0KGV2dCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjZWxsS2V5RG93bihldnQ6IENlbGxLZXlEb3duRXZlbnQpIHtcclxuICAgIHRoaXMub25DZWxsS2V5RG93bi5lbWl0KGV2dCk7XHJcbiAgICBpZiAoKGV2dC5ldmVudCBhcyBLZXlib2FyZEV2ZW50KS5jdHJsS2V5ICYmIChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkua2V5ID09PSBcIkFycm93RG93blwiICYmIGV2dC5ub2RlLmxhc3RDaGlsZCkge1xyXG4gICAgICB0aGlzLm9uR3JpZEFkZFJvdy5lbWl0KGV2dCk7XHJcbiAgICB9IGVsc2UgaWYgKChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY3RybEtleSAmJiAoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBcImNcIiAmJiB0aGlzLnVzZUdyaWRDb3B5KSB7XHJcbiAgICAgIHRoaXMuY29weShldnQpO1xyXG4gICAgfSBlbHNlIGlmICgoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmN0cmxLZXkgJiYgKGV2dC5ldmVudCBhcyBLZXlib2FyZEV2ZW50KS5rZXkudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gXCJ2XCIgJiYgdGhpcy51c2VHcmlkQ29weSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnBhc3RlKGV2dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb3B5KGV2dDogQ2VsbEtleURvd25FdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCFldnQubm9kZS5pc1NlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5jb3BpZWRDZWxsID0gZXZ0O1xyXG4gICAgICBpZiAoZXZ0LnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCgoZXZ0LnZhbHVlIGFzIElOZ1NlbGVjdCk/LmxhYmVsID8/IFwiXCIpO1xyXG4gICAgICBlbHNlIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGV2dC52YWx1ZSA/PyBcIlwiKTtcclxuICAgICAgdGhpcy5fbWVzc2FnZVV0aWxTZXJ2aWNlLmdldEFsZXJ0U3VjY2VzcyhcIkNlbGRhIENvcGlhZGFcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvcGllZFJvdyA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VVdGlsU2VydmljZS5nZXRBbGVydFN1Y2Nlc3MoXCJGaWxhIENvcGlhZGFcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyaWRBcGkuZGVzZWxlY3RBbGwoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHBhc3RlKGV2dDogQ2VsbEtleURvd25FdmVudCkge1xyXG4gICAgaWYgKCFldnQubm9kZS5pc1NlbGVjdGVkKCkgJiYgdGhpcy5jb3BpZWRDZWxsKSB7XHJcbiAgICAgIGlmIChldnQuY29sdW1uLmdldENvbElkKCkgPT09IHRoaXMuY29waWVkQ2VsbC5jb2x1bW4uZ2V0Q29sSWQoKSAmJiAoZXZ0LmRhdGEgYXMgRm9ybUdyb3VwKS5nZXQoZXZ0LmNvbHVtbi5nZXRDb2xJZCgpKSEuZW5hYmxlZCkge1xyXG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVBhc3RlQ2VsbCkgaXNWYWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdGVQYXN0ZUNlbGwodGhpcy5jb3BpZWRDZWxsLCBldnQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XHJcbiAgICAgICAgdGhpcy5iZWZvcmVQYXN0ZUNlbGwuZW1pdChbZXZ0LCB0aGlzLmNvcGllZENlbGxdKTtcclxuICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgKGV2dC5kYXRhIGFzIEZvcm1Hcm91cCkuZ2V0KGV2dC5jb2x1bW4uZ2V0Q29sSWQoKSkhLnNldFZhbHVlKHRoaXMuY29waWVkQ2VsbC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaENlbGxzKHtcclxuICAgICAgICAgICAgY29sdW1uczogW2V2dC5jb2x1bW5dLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyUGFzdGVDZWxsLmVtaXQoW2V2dCwgdGhpcy5jb3BpZWRDZWxsXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGV2dC5ub2RlLmlzU2VsZWN0ZWQoKSAmJiB0aGlzLmNvcGllZFJvdykge1xyXG4gICAgICBjb25zdCBJUm93Tm9kZSA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XHJcbiAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMudmFsaWRhdGVQYXN0ZVJvd3MpIGlzVmFsaWQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlUGFzdGVSb3dzKHRoaXMuY29waWVkUm93LCBJUm93Tm9kZSk7XHJcbiAgICAgIGVsc2UgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XHJcbiAgICAgIHRoaXMuYmVmb3JlUGFzdGVSb3dzLmVtaXQoW3RoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCksIHRoaXMuY29waWVkUm93XSk7XHJcbiAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgbGV0IGluZGV4Um93Q29weSA9IDA7XHJcbiAgICAgICAgSVJvd05vZGUuZm9yRWFjaCgocikgPT4ge1xyXG4gICAgICAgICAgKHIuZGF0YSBhcyBGb3JtR3JvdXApLnBhdGNoVmFsdWUoKHRoaXMuY29waWVkUm93IVtpbmRleFJvd0NvcHldLmRhdGEgYXMgRm9ybUdyb3VwKS5nZXRSYXdWYWx1ZSgpKTtcclxuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoe1xyXG4gICAgICAgICAgICByb3dOb2RlczogW3JdLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpbmRleFJvd0NvcHkrKztcclxuICAgICAgICAgIGlmIChpbmRleFJvd0NvcHkgPT0gdGhpcy5jb3BpZWRSb3chLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpbmRleFJvd0NvcHkgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJQYXN0ZVJvd3MuZW1pdChbdGhpcy5ncmlkQXBpLmdldFNlbGVjdGVkTm9kZXMoKSwgdGhpcy5jb3BpZWRSb3ddKTtcclxuICAgICAgICB0aGlzLmdyaWRBcGkuZGVzZWxlY3RBbGwoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29weU1lbnUoZXZlbnQ6IENlbGxDb250ZXh0TWVudUV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQ29weU1lbnUuZW1pdChldmVudCk7XHJcbiAgICB0aGlzLmNvcHkoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcGFzdGVNZW51KGV2ZW50OiBDZWxsQ29udGV4dE1lbnVFdmVudCkge1xyXG4gICAgdGhpcy5vblBhc3RlTWVudS5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMucGFzdGUoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkUGFzdGVNZW51KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZ3JpZEFwaT8uZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoID09IDAgJiYgIXRoaXMuY29waWVkQ2VsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwICYmICF0aGlzLmNvcGllZFJvdykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuY29waWVkQ2VsbCAmJiAhdGhpcy5jb3BpZWRSb3cpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNPYmpFbXB0eTxUPihvYmplY3Q6IFQpOiBib29sZWFuIHtcclxuICBpZiAob2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoID09PSAwO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XHJcbiAgPCEtLSBBRy1HUklEIEhFQURFUiAtLT5cclxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBteS0yXCJcclxuICAgICpuZ0lmPVwidmlzaWJsZVNlYXJjaCB8fCBidG5BZGQ/LnZpc2libGUgfHwgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycz8ubGVuZ3RoIHx8IGhlYWRlclRpdGxlXCI+XHJcbiAgICA8IS0tIEhlYWRlciBUaXRsZSBhbmQgU3VidGl0bGUgU2VjdGlvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byBkLWZsZXggYWxpZ24taXRlbXMtZW5kXCIgKm5nSWY9XCJoZWFkZXJUaXRsZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLXRpdGxlXCI+e3sgaGVhZGVyVGl0bGUgfX08L3NwYW4+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJTdWJ0aXRsZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2MtYWctZ3JpZC1oZWFkZXItc3VidGl0bGUgbXMtMlwiPnt7IGhlYWRlclN1YnRpdGxlIH19PC9zcGFuPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBFbmQgSGVhZGVyIFRpdGxlIGFuZCBTdWJ0aXRsZSBTZWN0aW9uIC0tPlxyXG5cclxuICAgIDwhLS0gRmlsdHJvIChwb3NpY2nDs24gaXpxdWllcmRhIC0gY3VhbmRvIE5PIGhheSB0w610dWxvIG8gc3VidMOtdHVsbykgLS0+XHJcbiAgICA8ZGl2IFtjbGFzc109XCJmaWxsU2VhcmNoID8gJ2NvbC0xMiBteS0yJyA6IHNlYXJjaENsYXNzXCIgKm5nSWY9XCJ2aXNpYmxlU2VhcmNoICYmICFzaG93U2VhcmNoSW5BY3Rpb25zXCI+XHJcbiAgICAgIDxpbnB1dC1zZWFyY2ggKG9uQ2hhbmdlKT1cImNoYW5nZUZpbHRlcigkZXZlbnQpXCI+PC9pbnB1dC1zZWFyY2g+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIFtjbGFzc109XCJ2aXNpYmxlU2VhcmNoICYmICFzaG93U2VhcmNoSW5BY3Rpb25zID8gJ2NvbC1zbS0xMiBjb2wtbWQtNiBjb2wtbGctNiBjb2wteGwtNyBjb2wtMTInIDogJ2NvbCdcIlxyXG4gICAgICBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLWFjdGlvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICBidG5BZGQ/LnZpc2libGUgfHwgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycz8ubGVuZ3RoIHx8IGNvbmZpZ0J1dHRvbnNBY3Rpb24/LmhlYWRlciB8fCBjb25maWdIZWFkZXIgIT0gbnVsbCB8fCBzaG93U2VhcmNoSW5BY3Rpb25zXHJcbiAgICAgIFwiPlxyXG4gICAgICA8IS0tIEZpbHRybyAocG9zaWNpw7NuIGRlcmVjaGEgLSBjdWFuZG8gSEFZIHTDrXR1bG8gbyBzdWJ0w610dWxvKSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLXNlYXJjaC1pbmxpbmVcIiAqbmdJZj1cInZpc2libGVTZWFyY2ggJiYgc2hvd1NlYXJjaEluQWN0aW9uc1wiPlxyXG4gICAgICAgIDxpbnB1dC1zZWFyY2ggKG9uQ2hhbmdlKT1cImNoYW5nZUZpbHRlcigkZXZlbnQpXCI+PC9pbnB1dC1zZWFyY2g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIEVuZCBTZWFyY2ggSW5wdXQgaW5saW5lIC0tPlxyXG4gICAgICA8IS0tIEhlYWRlciBhY3Rpb25zIGJ1dHRvbnMgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWdCdXR0b25zQWN0aW9uICYmIGNvbmZpZ0hlYWRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWdIZWFkZXIuZGlzYWJsZWQgPT09IGZhbHNlOyBlbHNlIHRlbXBsYXRlQWN0aW9uXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBBY3Rpb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVBY3Rpb24+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMDsgZWxzZSB0ZW1wQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWljb24gYnRuLXdpZHRoIGJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBkaXNhYmxlZD5cclxuICAgICAgICAgICAgICBBY2Npb25lc1xyXG4gICAgICAgICAgICAgIDxlbSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvZW0+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wQWN0aW9ucz5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJoaWRlSGVhZGVyTWVudUFjdGlvbigpOyBlbHNlIHRlbXBsYXRlSGVhZGVyQWN0aW9uXCIgY2xhc3M9XCJidG4taWNvbiBidG4td2lkdGggYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgICAgICBBY2Npb25lc1xyXG4gICAgICAgICAgICA8ZW0gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWRvd25cIj48L2VtPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZUhlYWRlckFjdGlvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taWNvbiBidG4td2lkdGggYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJwYW5lbC5tZW51XCI+XHJcbiAgICAgICAgICAgICAgQWNjaW9uZXNcclxuICAgICAgICAgICAgICA8ZW0gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWRvd25cIj48L2VtPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxzYy1tZW51LXBhbmVsICNwYW5lbCBjbGFzcz1cImQtbm9uZVwiIFtzdWJNZW51c109XCJjb25maWdIZWFkZXIuc3VibWVudSA/PyBbXVwiPjwvc2MtbWVudS1wYW5lbD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gRW5kIGhlYWRlciBhY3Rpb25zIGJ1dHRvbnMgLS0+XHJcblxyXG4gICAgICA8IS0tIE90aGVyIGJ1dHRvbnMgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q2hpbGRyZW5CdXR0b25IZWFkZXJzPy5sZW5ndGhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVyIG9mIHZpZXdDaGlsZHJlbkJ1dHRvbkhlYWRlcnNcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidmlld0NoaWxkcmVuQnV0dG9uSGVhZGVyLnRlbXBsYXRlXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tRW5kIG90aGVyIGJ1dHRvbnMgLS0+XHJcblxyXG4gICAgICA8IS0tIEFkZCBidXR0b24gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidG5BZGQ/LnZpc2libGVcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuLXdpZHRoIGJ0biBidG4td2FybmluZyBidG4tc21cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWRkUm93RW1pdCgpXCJcclxuICAgICAgICAgICNidXR0b25BZGRcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJidG5BZGQuZGlzYWJsZWQgPz8gZmFsc2VcIj5cclxuICAgICAgICAgIEFncmVnYXJcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1FbmQgYWRkIGJ1dHRvbiAtLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XHJcbiAgPCEtLSBBRy1HUklEIEhFQURFUiBFTkQgLS0+XHJcbiAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiIFtuZ1N0eWxlXT1cIm5nU3R5bGVDb250YWluZXJcIj5cclxuICAgICAgPGFnLWdyaWQtYW5ndWxhclxyXG4gICAgICAgICNhZ0dyaWRcclxuICAgICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwibmdTdHlsZUFnR3JpZFwiXHJcbiAgICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc0FuZEFkZENlbGxBY3Rpb25zXCJcclxuICAgICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgICBbY29tcG9uZW50c109XCJfZnJhbWV3b3JrQ29tcG9uZW50c1wiXHJcbiAgICAgICAgW2NvbnRleHRdPVwiX2NvbnRleHRcIlxyXG4gICAgICAgIFtyb3dTZWxlY3Rpb25dPVwicm93U2VsZWN0aW9uXCJcclxuICAgICAgICBbaXNSb3dTZWxlY3RhYmxlXT1cImlzUm93U2VsZWN0YWJsZVwiXHJcbiAgICAgICAgW3Jvd0RyYWdNYW5hZ2VkXT1cInJvd0RyYWdNYW5hZ2VkXCJcclxuICAgICAgICBbZG9tTGF5b3V0XT1cImRvbUxheW91dFwiXHJcbiAgICAgICAgW2FuaW1hdGVSb3dzXT1cImFuaW1hdGVSb3dzXCJcclxuICAgICAgICBbZ2V0Um93U3R5bGVdPVwiZ2V0Um93U3R5bGVcIlxyXG4gICAgICAgIFtlbmFibGVSYW5nZVNlbGVjdGlvbl09XCJlbmFibGVSYW5nZVNlbGVjdGlvblwiXHJcbiAgICAgICAgW3N1cHByZXNzUm93VHJhbnNmb3JtXT1cInN1cHByZXNzUm93VHJhbnNmb3JtXCJcclxuICAgICAgICBbc3VwcHJlc3NNb3ZlV2hlblJvd0RyYWdnaW5nXT1cImFuaW1hdGVSb3dzXCJcclxuICAgICAgICBbb3ZlcmxheU5vUm93c1RlbXBsYXRlXT1cIm92ZXJsYXlOb1Jvd3NUZW1wbGF0ZVwiXHJcbiAgICAgICAgW292ZXJsYXlMb2FkaW5nVGVtcGxhdGVdPVwib3ZlcmxheUxvYWRpbmdUZW1wbGF0ZVwiXHJcbiAgICAgICAgW25vUm93c092ZXJsYXlDb21wb25lbnRQYXJhbXNdPVwibm9Sb3dzT3ZlcmxheUNvbXBvbmVudFBhcmFtc1wiXHJcbiAgICAgICAgW3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25dPVwic3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvblwiXHJcbiAgICAgICAgW3N1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zXT1cInN1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zXCJcclxuICAgICAgICBbc3VwcHJlc3NTY3JvbGxPbk5ld0RhdGFdPVwic3VwcHJlc3NTY3JvbGxPbk5ld0RhdGFcIlxyXG4gICAgICAgIFtzdXBwcmVzc1Byb3BlcnR5TmFtZXNDaGVja109XCJ0cnVlXCJcclxuICAgICAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb24gPyBwYWdpbmF0aW9uUGFnZVNpemUgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxyXG4gICAgICAgIFtzdXBwcmVzc1BhZ2luYXRpb25QYW5lbF09XCJzdXBwcmVzc1BhZ2luYXRpb25QYW5lbFwiXHJcbiAgICAgICAgKHJvd0NsaWNrZWQpPVwicm93Q2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChyb3dEb3VibGVDbGlja2VkKT1cInJvd0RvdWJsZUNsaWNrZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAocm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChwYWdpbmF0aW9uQ2hhbmdlZCk9XCJwYWdpbmF0aW9uQ2hhbmdlZCgpXCJcclxuICAgICAgICAoZ3JpZFJlYWR5KT1cImdyaWRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgICAocm93RHJhZ0VuZCk9XCJyb3dEcmFnRW5kRW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoY2VsbENvbnRleHRNZW51KT1cImNlbGxDb250ZXh0TWVudSgkZXZlbnQpXCJcclxuICAgICAgICBbZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb25dPVwiZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb25cIlxyXG4gICAgICAgIChyb3dEYXRhVXBkYXRlZCk9XCJyb3dEYXRhQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAocm93RWRpdGluZ1N0YXJ0ZWQpPVwib25Sb3dFZGl0aW5nU3RhcnRlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChjZWxsVmFsdWVDaGFuZ2VkKT1cImNlbGxWYWx1ZUNoYW5nZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKClcIlxyXG4gICAgICAgIChjZWxsRWRpdGluZ1N0b3BwZWQpPVwiY2VsbFN0b3BFZGl0aW5nKCRldmVudClcIlxyXG4gICAgICAgIChjZWxsS2V5RG93bik9XCJjZWxsS2V5RG93bigkYW55KCRldmVudCkpXCJcclxuICAgICAgICBbbXVsdGlTb3J0S2V5XT1cIm11bHRpU29ydEtleVwiXHJcbiAgICAgICAgW3Rvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiXHJcbiAgICAgICAgW3Rvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiXHJcbiAgICAgICAgW3Rvb2x0aXBTaG93TW9kZV09XCJ0b29sdGlwU2hvd01vZGVcIlxyXG4gICAgICAgIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gZmFsc2U7XCI+XHJcbiAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XHJcbiAgPCEtLSBBRy1HUklEIFBBR0lOQVRJT04gLS0+XHJcbiAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT5cclxuICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwYWdpbmF0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgIDxzYy1hZy1ncmlkLXBhZ2luYXRpb25cclxuICAgICAgICAjc2NBZ0dyaWRQYWdpbmF0aW9uXHJcbiAgICAgICAgW2dyaWRBcGldPVwiZ3JpZEFwaVwiXHJcbiAgICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uUGFnZVNpemVcIlxyXG4gICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCI+PC9zYy1hZy1ncmlkLXBhZ2luYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxyXG4gIDwhLS0gQUctR1JJRCBQQUdJTkFUSU9OIEVORCAtLT5cclxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICAqbmdJZj1cInNob3dNZW51RGVmYXVsdFwiXHJcbiAgb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIlxyXG4gIHN0eWxlPVwicG9zaXRpb246IGZpeGVkOyB3aWR0aDogMHB4OyBoZWlnaHQ6IDBweFwiXHJcbiAgW25nU3R5bGVdPVwieyB0b3A6IGJvdHRvbU1lbnUgKyAncHgnLCBsZWZ0OiBsZWZ0TWVudSArICdweCcgfVwiPlxyXG4gIDxtYXQtbWVudSBvbmNvbnRleHRtZW51PVwicmV0dXJuIGZhbHNlO1wiICNzY01lbnU9XCJtYXRNZW51XCI+XHJcbiAgICA8YnV0dG9uIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gZmFsc2U7XCIgKGNsaWNrKT1cImNvcHlNZW51KGNlbGxDb250ZXh0TWVudUFjdHVhbCEpXCIgbWF0LW1lbnUtaXRlbT5cclxuICAgICAgPG1hdC1pY29uPmNvbnRlbnRfY29weTwvbWF0LWljb24+IDxzcGFuPkNvcGlhcjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXN0ZU1lbnVcIiBvbmNvbnRleHRtZW51PVwicmV0dXJuIGZhbHNlO1wiIChjbGljayk9XCJwYXN0ZU1lbnUoY2VsbENvbnRleHRNZW51QWN0dWFsISlcIiBtYXQtbWVudS1pdGVtPlxyXG4gICAgICA8bWF0LWljb24+Y29udGVudF9wYXN0ZTwvbWF0LWljb24+PHNwYW4+UGVnYXI8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG4gIDxidXR0b24gb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNjTWVudVwiICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCI+XHJcbiAgICBNZW51XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
591
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWctZ3JpZC1jdXN0b21pemFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9zYy1hZy1ncmlkL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvc2MtYWctZ3JpZC9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS9zYy1hZy1ncmlkLWN1c3RvbWl6YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQW9CdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUtMLGNBQWMsR0FJZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBR3hFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQVdmLE1BQU0sT0FBTyw2QkFBNkI7SUFWMUM7UUF3QkUsb0NBQStCLEdBQUcsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFL0Qsb0JBQWUsR0FBb0IsR0FBRyxF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LGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBa0JQLHFCQUFxQjtzQkFEcEIsS0FBSzs7QUFtVFIsTUFBTSxVQUFVLFVBQVUsQ0FBSSxNQUFTO0lBQ3JDLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXpELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBpbmplY3QsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHtcclxuICBDZWxsQ29udGV4dE1lbnVFdmVudCxcclxuICBDZWxsRWRpdGluZ1N0b3BwZWRFdmVudCxcclxuICBDZWxsS2V5RG93bkV2ZW50LFxyXG4gIENlbGxWYWx1ZUNoYW5nZWRFdmVudCxcclxuICBDb2xEZWYsXHJcbiAgR3JpZEFwaSxcclxuICBHcmlkUmVhZHlFdmVudCxcclxuICBJUm93Tm9kZSxcclxuICBJc1Jvd1NlbGVjdGFibGUsXHJcbiAgUm93Q2xpY2tlZEV2ZW50LFxyXG4gIFJvd0RhdGFVcGRhdGVkRXZlbnQsXHJcbiAgUm93RG91YmxlQ2xpY2tlZEV2ZW50LFxyXG4gIFJvd0RyYWdFdmVudCxcclxuICBSb3dFZGl0aW5nU3RhcnRlZEV2ZW50LFxyXG4gIFJvd1NlbGVjdGVkRXZlbnQsXHJcbn0gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJTmdTZWxlY3QgfSBmcm9tIFwiLi4vLi4vdXRpbHMvSU5nU2VsZWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgQnV0dG9uSGVhZGVyLFxyXG4gIENvbmZpZ0J1dHRvbkFjdGlvbixcclxuICBDb25maWdCdXR0b25BZ0dyaWQsXHJcbiAgQ29uZmlnQnV0dG9uSGVhZGVyLFxyXG4gIEVudW1CdXR0b25UeXBlLFxyXG4gIEdldFJvd1N0eWxlLFxyXG4gIEhpZGVGdWMsXHJcbiAgUm93U2VsZWN0aW9uLFxyXG59IGZyb20gXCIuLi8uLi91dGlscy9JU2NBZ0dyaWRcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVV0aWxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL21lc3NhZ2UtdXRpbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UgfSBmcm9tIFwiLi4vY2VsbC1yZW5kZXIvc2MtY2VsbC1yZW5kZXItYnV0dG9uL3NjLWNlbGwtcmVuZGVyLWJ1dHRvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgc2NDb21wb25lbnRzIH0gZnJvbSBcIi4uL2NlbGwtcmVuZGVyL3NjLWNlbGwtcmVuZGVyLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBTY0FnR3JpZEJ1dHRvbkhlYWRlciB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL3NjQWdHcmlkLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBTY0FnR3JpZFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tIFwiLi4vc2MtYWctZ3JpZC1wYWdpbmF0aW9uL3NjLWFnLWdyaWQtcGFnaW5hdGlvbi5jb21wb25lbnRcIjtcclxuXHJcbmxldCBuZXh0SWQgPSAwO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJzYy1hZy1ncmlkLWN1c3RvbWl6YWJsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2MtYWctZ3JpZC1jdXN0b21pemFibGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3NjLWFnLWdyaWQtY3VzdG9taXphYmxlLmNvbXBvbmVudC5zY3NzXCIsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaG9zdDoge1xyXG4gICAgXCJbaWRdXCI6IFwiaWRTY0FnR3JpZEN1c3RvbWl6YWJsZUNvbXBvbmVudFwiLFxyXG4gICAgY2xhc3M6IFwic2MtYWctZ3JpZC1jdXN0b21pemFibGVcIixcclxuICB9LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NBZ0dyaWRDdXN0b21pemFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBAQ29udGVudENoaWxkcmVuKFNjQWdHcmlkQnV0dG9uSGVhZGVyLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXHJcbiAgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycyE6IFF1ZXJ5TGlzdDxTY0FnR3JpZEJ1dHRvbkhlYWRlcj47XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJtZW51VHJpZ2dlclwiKSBtZW51VHJpZ2dlcj86IE1hdE1lbnVUcmlnZ2VyO1xyXG5cclxuICBAVmlld0NoaWxkKFwic2NBZ0dyaWRQYWdpbmF0aW9uXCIpXHJcbiAgcHJpdmF0ZSBfc2NBZ0dyaWRQYWdpbmF0aW9uPzogU2NBZ0dyaWRQYWdpbmF0aW9uQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFwiYnV0dG9uQWRkXCIpIGJ1dHRvbkFkZD86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xyXG4gIGdldCBidXR0b25BZGRFbGVtZW50KCk6IEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25BZGQ/Lm5hdGl2ZUVsZW1lbnQgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIGlkU2NBZ0dyaWRDdXN0b21pemFibGVDb21wb25lbnQgPSBgc2MtYWctZ3JpZC1jdXN0b21pemFibGUtJHsrK25leHRJZH1gO1xyXG5cclxuICBASW5wdXQoKSBpc1Jvd1NlbGVjdGFibGU6IElzUm93U2VsZWN0YWJsZSA9ICgpID0+IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBUw610dWxvIHF1ZSBzZSBtdWVzdHJhIGVuIGVsIGhlYWRlciBkZSBsYSBncmlsbGFcclxuICAgKi9cclxuICBASW5wdXQoKSBoZWFkZXJUaXRsZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYWNpw7NuIGRlbCBiYWRnZSAoZXRpcXVldGEgY29uIGNvbnRhZG9yKSBkZWwgaGVhZGVyXHJcbiAgICovXHJcbiAgQElucHV0KCkgaGVhZGVyU3VidGl0bGU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmEgc2kgZWwgYnVzY2Fkb3IgZGViZSBtb3N0cmFyc2UganVudG8gYSBsb3MgYm90b25lcyBkZSBhY2Npw7NuXHJcbiAgICovXHJcbiAgZ2V0IHNob3dTZWFyY2hJbkFjdGlvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmhlYWRlclRpdGxlO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoQ2xhc3MgPSBcImNvbC0xMiBjb2wtc20tMTIgY29sLW1kLTYgY29sLWxnLTYgY29sLXhsLTUgbXktMlwiO1xyXG4gIEBJbnB1dCgpIGdldFJvd1N0eWxlOiBHZXRSb3dTdHlsZSA9ICgpID0+IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBmaWxsU2VhcmNoID0gZmFsc2U7XHJcbiAgLy8jcmVnaW9uIElucHV0c1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBDYW50aWRhZCBkZSBpdGVtcyBxdWUgc2UgbW9zdHJhcsOhIHBvciBww6FnaW5hXHJcbiAgICogQGRlZmF1bHQgMTVcclxuICAgKi9cclxuICBASW5wdXQoKSBwYWdpbmF0aW9uUGFnZVNpemUgPSAxNTtcclxuICBASW5wdXQoKSBzZWFyY2hXaWR0aCA9IFwiXCI7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uICBPcGNpb25lcyBkZSB0YW1hw7FvIGRlIHDDoWdpbmFcclxuICAgKiBAZGVmYXVsdCAnWzUsIDEwLCAxNSwgMjAsIDI1XSdcclxuICAgKi9cclxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSBbNSwgMTAsIDE1LCAyMCwgMjVdO1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBTaSBlbCB2YWxvciBlcyBgdHJ1ZWAgbXVlc3RyYSBsYSBwYWdpbmFjacOzblxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKi9cclxuICBASW5wdXQoKSBwYWdpbmF0aW9uID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gVGlwbyBkZSBzZWxlY2lvbiBlbiBsYSBgZ3JpbGxhYHNcclxuICAgKiBAZGVmYXVsdCAnc2ltcGxlJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbjogUm93U2VsZWN0aW9uID0gXCJzaW5nbGVcIjtcclxuICAvLyBASW5wdXQoKSBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uID0gdHJ1ZTtcclxuICBnZXQgc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJvd1NlbGVjdGlvbiA9PT0gXCJzaW5nbGVcIiA/IGZhbHNlIDogdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IGRlIGNvbHVtbmFzIHF1ZSBzZSBtb3N0cmFyYSBlbiBsYSBgZ3JpbGxhYFxyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IENvbERlZltdID0gW107XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IGRlIGRhdG9zIHF1ZSBzZSBtb3N0cmFyYSBlbiBsYSBgZ3JpbGxhYFxyXG4gICAqIEBkZWZhdWx0IG51bGxcclxuICAgKi9cclxuICBASW5wdXQoKSByb3dEYXRhOiBPYnNlcnZhYmxlPGFueVtdPiA9IG9mKFtdKTtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnQnV0dG9uc0FjdGlvbiE6IENvbmZpZ0J1dHRvbkFjdGlvbjtcclxuICBnZXQgY29uZmlnSGVhZGVyKCk6IENvbmZpZ0J1dHRvbkhlYWRlciB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBkZWZhdWx0Q2VsbFJlbmRlcmVyQWN0aW9uczogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBfY29uZmlnQnV0dG9uc0RlZmF1bHRBZ0dyaWQ6IENvbmZpZ0J1dHRvbkFnR3JpZFtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBTaSBlbCB2YWxvciBlcyBgdHJ1ZWAgbXVlc3RyYSBlbCBgYnVzY2Fkb3JgXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHZpc2libGVTZWFyY2ggPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBkb21MYXlvdXQ6IFwibm9ybWFsXCIgfCBcImF1dG9IZWlnaHRcIiA9IFwibm9ybWFsXCI7XHJcbiAgQElucHV0KCkgaGVpZ2h0ID0gXCIyMGVtXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBDcG5maWd1cmFjacOzbiBwYXJhIGVsIGJvdG9uIGBBZ3JlZ2FyYFxyXG4gICAqIEBkZWZhdWx0ICd7IHZpc2libGU6IHRydWUsIGRpc2FibGVkOiBmYWxzZSB9J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJ0bkFkZDogQnV0dG9uSGVhZGVyID0geyB2aXNpYmxlOiB0cnVlIH07XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFBhcmEgYWN0aXZhciBvIGRlc2NhdGl2YXIgZWwgZHJhZyAmIGRyb3BcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHJvd0RyYWdNYW5hZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIGFjdGl2YXIgbyBkZXNjYXRpdmFyIGxhcyBhbmltYWNpb25lc1xyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICovXHJcbiAgQElucHV0KCkgYW5pbWF0ZVJvd3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgdXNlR3JpZENvcHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtdWx0aVNvcnRLZXkhOiBhbnk7XHJcbiAgQElucHV0KCkgc2hvd01lbnVEZWZhdWx0ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHN1cHByZXNzUm93VHJhbnNmb3JtID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZW5hYmxlUmFuZ2VTZWxlY3Rpb24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBub1Jvd3NPdmVybGF5Q29tcG9uZW50ID0gXCJcIjtcclxuICBASW5wdXQoKSBub1Jvd3NPdmVybGF5Q29tcG9uZW50UGFyYW1zID0ge307XHJcbiAgQElucHV0KCkgdG9vbHRpcEhpZGVEZWxheTogbnVtYmVyID0gMTAwMDtcclxuICBASW5wdXQoKSB0b29sdGlwU2hvd0RlbGF5OiBudW1iZXIgPSAxMDA7XHJcbiAgQElucHV0KCkgdG9vbHRpcFNob3dNb2RlOiBcInN0YW5kYXJkXCIgfCBcIndoZW5UcnVuY2F0ZWRcIiA9IFwic3RhbmRhcmRcIjtcclxuICBASW5wdXQoKSB2YWxpZGF0ZVBhc3RlQ2VsbD86IChldnRTb3VyY2U6IENlbGxLZXlEb3duRXZlbnQsIGV2dFRhcmdldDogQ2VsbEtleURvd25FdmVudCkgPT4gUHJvbWlzZTxib29sZWFuPiA9IChcclxuICAgIGV2dFNvdXJjZTogQ2VsbEtleURvd25FdmVudCxcclxuICAgIGV2dFRhcmdldDogQ2VsbEtleURvd25FdmVudFxyXG4gICkgPT4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRlUGFzdGVSb3dzPzogKGV2dFNvdXJjZTogSVJvd05vZGVbXSwgZXZ0VGFyZ2V0OiBJUm93Tm9kZVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+ID0gKFxyXG4gICAgZXZ0U291cmNlOiBJUm93Tm9kZVtdLFxyXG4gICAgZXZ0VGFyZ2V0OiBJUm93Tm9kZVtdXHJcbiAgKSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIGFncmVnYXIgY29tcG9uZW50ZXMgaW50ZXJub3MgZGVudHJvIGRlIGxhIGdyaWxsYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZyYW1ld29ya0NvbXBvbmVudHModmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fZnJhbWV3b3JrQ29tcG9uZW50cyA9IHsgLi4udGhpcy5fZnJhbWV3b3JrQ29tcG9uZW50cywgLi4udmFsdWUgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhIHBvZGVyIGFncmVnYXIgbcOhcyBvYmpldG9zIGFsIGNvbnRleHRvXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgY29udGV4dCh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9jb250ZXh0ID0geyAuLi50aGlzLl9jb250ZXh0LCAuLi52YWx1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dFxyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZUZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvbkFkZFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8R3JpZEFwaT4oKTtcclxuICBAT3V0cHV0KCkgb25HcmlkQWRkUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsS2V5RG93bkV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvbkVkaXRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPElSb3dOb2RlPigpO1xyXG4gIEBPdXRwdXQoKSBvbkRlbGV0ZVJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8W0dyaWRBcGksIGFueVtdXT4oKTtcclxuICBAT3V0cHV0KCkgb25DZWxsS2V5RG93bjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2VsbFN0b3BFZGl0aW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25CdXR0b25BY3Rpb25BZ0dyaWQgPSBuZXcgRXZlbnRFbWl0dGVyPFtFbnVtQnV0dG9uVHlwZSB8IHN0cmluZywgSVJvd05vZGUsIGJvb2xlYW5dPigpO1xyXG4gIEBPdXRwdXQoKSBvbkJ1dHRvbkFjdGlvbkhlYWRlciA9IG5ldyBFdmVudEVtaXR0ZXI8W0VudW1CdXR0b25UeXBlIHwgc3RyaW5nLCBhbnlbXV0+KCk7XHJcblxyXG4gIC8vIEFnR3JpZCBFdmVudHMgLSBPdXB1dFxyXG4gIEBPdXRwdXQoKSBvbkdyaWRSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8W0dyaWRBcGldPigpO1xyXG4gIEBPdXRwdXQoKSBvbkdyaWRTZWxlY3RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFtHcmlkQXBpLCBSb3dEYXRhVXBkYXRlZEV2ZW50XT4oKTtcclxuICBAT3V0cHV0KCkgb25Sb3dEcmFnRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dEcmFnRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uUm93RWRpdGluZ1N0YXJ0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0VkaXRpbmdTdGFydGVkRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0NsaWNrZWRFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgcm93RG91YmxlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Um93RG91YmxlQ2xpY2tlZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dTZWxlY3RlZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBjZWxsVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsVmFsdWVDaGFuZ2VkRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2VsbENvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsQ29udGV4dE1lbnVFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25QYXN0ZU1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxDb250ZXh0TWVudUV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvcHlNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsQ29udGV4dE1lbnVFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJQYXN0ZUNlbGwgPSBuZXcgRXZlbnRFbWl0dGVyPFtDZWxsS2V5RG93bkV2ZW50LCBDZWxsS2V5RG93bkV2ZW50XT4oKTtcclxuICBAT3V0cHV0KCkgYmVmb3JlUGFzdGVDZWxsID0gbmV3IEV2ZW50RW1pdHRlcjxbQ2VsbEtleURvd25FdmVudCwgQ2VsbEtleURvd25FdmVudF0+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyUGFzdGVSb3dzID0gbmV3IEV2ZW50RW1pdHRlcjxbSVJvd05vZGVbXSwgSVJvd05vZGVbXV0+KCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZVBhc3RlUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8W0lSb3dOb2RlW10sIElSb3dOb2RlW11dPigpO1xyXG5cclxuICBjb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnM6IENvbERlZltdID0gW107XHJcbiAgZGVmYXVsdENvbERlZjogQ29sRGVmID0ge1xyXG4gICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgc29ydGFibGU6IHRydWUsXHJcbiAgfTtcclxuICBfZnJhbWV3b3JrQ29tcG9uZW50cyA9IHsgLi4uc2NDb21wb25lbnRzIH07XHJcbiAgX2NvbnRleHQgPSB7IGNvbXBvbmVudFBhcmVudDogdGhpcyBhcyBhbnkgfTtcclxuXHJcbiAgYm90dG9tTWVudTogc3RyaW5nID0gXCIwXCI7XHJcbiAgbGVmdE1lbnU6IHN0cmluZyA9IFwiMFwiO1xyXG4gIGhpZGRlbk1lbnU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb3BpZWRDZWxsPzogQ2VsbEtleURvd25FdmVudDtcclxuICBjb3BpZWRSb3c/OiBJUm93Tm9kZVtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG92ZXJsYXlOb1Jvd3NUZW1wbGF0ZSA9IGA8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXIgYm9yZGVyLTAgYmctdHJhbnNwYXJlbnQgc2hhZG93LW5vbmVcIj5cclxuXHRcdFx0Tm8gc2UgZW5jb250cmFyb24gcmVnaXN0cm9zLi4uXHJcblx0XHQ8L3NwYW4+YDtcclxuXHJcbiAgb3ZlcmxheUxvYWRpbmdUZW1wbGF0ZSA9IGA8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy10b3AgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBib3JkZXItMCBiZy13aGl0ZSBzaGFkb3cgcC00IHRleHQtaW5mb1wiIHN0eWxlPVwiaGVpZ2h0OiAyMHB4O1wiPlxyXG5cdFx0XHQ8aW1nIHNyYz1cImFzc2V0cy9tZWRpYS1kZW1vL2xvYWRpbmcuZ2lmXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjI1XCIgY2xhc3M9XCJtci0yXCI+XHJcblx0XHRcdDxzdHJvbmc+Q2FyZ2FuZG8gcmVnaXN0cm9zPC9zdHJvbmc+XHJcblx0XHQ8L3NwYW4+XHJcblx0XHRgO1xyXG4gIHN1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zID0gdHJ1ZTtcclxuICBzdXBwcmVzc1Njcm9sbE9uTmV3RGF0YSA9IGZhbHNlO1xyXG4gIHN1cHByZXNzUGFnaW5hdGlvblBhbmVsID0gdHJ1ZTtcclxuXHJcbiAgLy8gQWdHcmlkIFN0eWxlXHJcbiAgZ2V0IG5nU3R5bGVDb250YWluZXIoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5nU3R5bGVBZ0dyaWQoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgX3N1YnNjcmlwdGlvbiQgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJvZ3Jlc3NWaXNpYmxlZCA9IGZhbHNlO1xyXG5cclxuICBncmlkQXBpITogR3JpZEFwaTtcclxuICBfc3Vic2NyaXB0aW9uUm93RGF0YSQ/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHNlbGVjdGVkUm93czogYW55W10gPSBbXTtcclxuXHJcbiAgY2VsbENvbnRleHRNZW51QWN0dWFsPzogQ2VsbENvbnRleHRNZW51RXZlbnQ7XHJcblxyXG4gIHByaXZhdGUgX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UgPSBpbmplY3QoU2NDZWxsUmVuZGVyQnV0dG9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfbWVzc2FnZVV0aWxTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VVdGlsU2VydmljZSk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uJC5hZGQoXHJcbiAgICAgIHRoaXMuX3NjQ2VsbFJlbmRlckJ1dHRvblNlcnZpY2UuaGFuZGxlckJ1dHRvbkFjdGlvbiQuc3Vic2NyaWJlKCh7IGluZGV4LCBhY3Rpb24sIGlzUmlnaHRDbGljayB9KSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGlvbiA9PSBudWxsKSByZXR1cm47XHJcbiAgICAgICAgaWYgKGFjdGlvbi50cmltKCkgPT09IFwiXCIpIHJldHVybjtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQnV0dG9uQWN0aW9uQWdHcmlkRW1pdChpbmRleCwgYWN0aW9uLCBpc1JpZ2h0Q2xpY2spO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vbkJ1dHRvbkFjdGlvbkhlYWRlckVtaXQoYWN0aW9uKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5pbml0QWN0aW9uQnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZEFwaSkgcmV0dXJuO1xyXG4gICAgaWYgKGNoYW5nZXNbXCJjb25maWdCdXR0b25zQWN0aW9uXCJdKSB0aGlzLmluaXRBY3Rpb25CdXR0b24oKTtcclxuICAgIGlmIChjaGFuZ2VzW1wicm93RGF0YVwiXSkgdGhpcy5pbml0Um93RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24kPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uUm93RGF0YSQ/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPSAwO1xyXG4gIH1cclxuXHJcbiAgb25CdXR0b25BY3Rpb25IZWFkZXJFbWl0KHR5cGVCdXR0b246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgcm93c1NlbGVjdGVkID0gdGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIHRoaXMub25CdXR0b25BY3Rpb25IZWFkZXIuZW1pdChbdHlwZUJ1dHRvbiwgcm93c1NlbGVjdGVkXSk7XHJcbiAgfVxyXG5cclxuICBpbml0QWN0aW9uQnV0dG9uKCk6IHZvaWQge1xyXG4gICAgaWYgKGlzT2JqRW1wdHkodGhpcy5jb25maWdCdXR0b25zQWN0aW9uKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHsgYWdHcmlkIH0gPSB0aGlzLmNvbmZpZ0J1dHRvbnNBY3Rpb24hO1xyXG5cclxuICAgIGlmIChhZ0dyaWQgJiYgYWdHcmlkLmFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLl9jb25maWdCdXR0b25zRGVmYXVsdEFnR3JpZCA9IFsuLi5hZ0dyaWQuYWN0aW9uc107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaXplRml0Q29sdW1uQWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzaXplRml0Q29sdW1uQWN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5fY29uZmlnQnV0dG9uc0RlZmF1bHRBZ0dyaWQuZmlsdGVyKCh7IGhpZGUgfSkgPT4ge1xyXG4gICAgICByZXR1cm4gIXRoaXMuX2hpZGVGdW5jKGhpZGUpO1xyXG4gICAgfSkubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHdpZHRoID0gbGVuZ3RoID09IDIgPyA5MCA6IDgwO1xyXG4gICAgY29uc3QgbWluV2lkdGggPSBsZW5ndGggPiAyID8gbGVuZ3RoICogMzMgKyAxMCA6IHdpZHRoO1xyXG5cclxuICAgIGNvbnN0IG5ld0NvbHVtbnM6IENvbERlZiA9IHtcclxuICAgICAgaGVhZGVyTmFtZTogXCJBY2Npb25lc1wiLFxyXG4gICAgICBoZWFkZXJDbGFzczogXCJhZy1oZWFkZXJfX2NlbnRlclwiLFxyXG4gICAgICBmaWVsZDogXCJcIixcclxuICAgICAgd2lkdGg6IG1pbldpZHRoLFxyXG4gICAgICBtaW5XaWR0aCxcclxuICAgICAgbWF4V2lkdGg6IG1pbldpZHRoLFxyXG4gICAgICBjZWxsQ2xhc3M6IFtcImQtZmxleFwiLCBcImp1c3RpZnktY29udGVudC1jZW50ZXJcIiwgXCJhbGlnbi1pdGVtcy1jZW50ZXJcIl0sXHJcbiAgICAgIGNlbGxTdHlsZTogeyBvdmVyZmxvdzogXCJ2aXNpYmxlXCIgfSxcclxuICAgICAgcmVzaXphYmxlOiBmYWxzZSxcclxuICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICBjZWxsUmVuZGVyZXI6IHRoaXMuZGVmYXVsdENlbGxSZW5kZXJlckFjdGlvbnMgPyB0aGlzLmRlZmF1bHRDZWxsUmVuZGVyZXJBY3Rpb25zIDogXCJzY0NlbGxSZW5kZXJlckJ1dHRvbkNvbXBvbmVudFwiLFxyXG4gICAgICBwaW5uZWQ6IFwicmlnaHRcIixcclxuICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICBsb2NrUG9zaXRpb246IHRydWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jb2x1bW5EZWZzQW5kQWRkQ2VsbEFjdGlvbnMgPSB0aGlzLl9oaWRlQWdHcmlkTWVudUFjdGlvbigpID8gWy4uLnRoaXMuY29sdW1uRGVmc10gOiBbLi4udGhpcy5jb2x1bW5EZWZzLCBuZXdDb2x1bW5zXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hpZGVBZ0dyaWRNZW51QWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbiA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uYWdHcmlkPy5hY3Rpb25zLmV2ZXJ5KCh7IGhpZGUgfSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9oaWRlRnVuYyhoaWRlKTtcclxuICAgICAgfSkgPz8gdHJ1ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hpZGVGdW5jKGhpZGU6IEhpZGVGdWMgfCBib29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoaGlkZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodHlwZW9mIGhpZGUgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gaGlkZSgpO1xyXG5cclxuICAgIHJldHVybiBoaWRlO1xyXG4gIH1cclxuXHJcbiAgb25CdXR0b25BY3Rpb25BZ0dyaWRFbWl0KHJvd0luZGV4OiBudW1iZXIsIHR5cGVCdXR0b246IHN0cmluZywgaXNSaWdodENsaWNrOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBJUm93Tm9kZSA9IHRoaXMuZ3JpZEFwaT8uZ2V0RGlzcGxheWVkUm93QXRJbmRleChyb3dJbmRleCk7XHJcblxyXG4gICAgaWYgKElSb3dOb2RlKSB7XHJcbiAgICAgIGlmICh0eXBlQnV0dG9uID09PSBFbnVtQnV0dG9uVHlwZS5UWVBFX0VESVQpIHtcclxuICAgICAgICB0aGlzLm9uRWRpdFJvdy5lbWl0KElSb3dOb2RlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVCdXR0b24gPT09IEVudW1CdXR0b25UeXBlLlRZUEVfREVMRVRFKSB7XHJcbiAgICAgICAgdGhpcy5vbkRlbGV0ZVJvdy5lbWl0KFt0aGlzLmdyaWRBcGksIFtJUm93Tm9kZS5kYXRhXV0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5vbkJ1dHRvbkFjdGlvbkFnR3JpZC5lbWl0KFt0eXBlQnV0dG9uLCBJUm93Tm9kZSwgaXNSaWdodENsaWNrXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Um93RGF0YSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb25maWdCdXR0b25zQWN0aW9uPy5hZ0dyaWQpIHRoaXMuc2l6ZUZpdENvbHVtbkFjdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvblJvd0RhdGEkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKFwicm93RGF0YVwiLCBbXSk7XHJcbiAgICAgIHRoaXMuZ3JpZEFwaT8uc2hvd0xvYWRpbmdPdmVybGF5KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25Sb3dEYXRhJCA9IHRoaXMucm93RGF0YS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oXCJyb3dEYXRhXCIsIGRhdGEpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VGaWx0ZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQXBpPy5zZXRRdWlja0ZpbHRlcih2YWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlRmlsdGVyLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25BZGRSb3dFbWl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkFkZFJvdy5lbWl0KHRoaXMuZ3JpZEFwaSk7XHJcbiAgfVxyXG5cclxuICBoaWRlSGVhZGVyTWVudUFjdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnQnV0dG9uc0FjdGlvbj8uaGVhZGVyPy5zdWJtZW51Py5ldmVyeSgoeyBoaWRlIH0pID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUZ1bmMoaGlkZSk7XHJcbiAgICAgIH0pID8/IGZhbHNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcGFnaW5hdGlvbkNoYW5nZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc2NBZ0dyaWRQYWdpbmF0aW9uKSB0aGlzLl9zY0FnR3JpZFBhZ2luYXRpb24ub25QYWdpbmF0aW9uQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgZ3JpZFJlYWR5KGV2ZW50OiBHcmlkUmVhZHlFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkQXBpID0gZXZlbnQuYXBpO1xyXG5cclxuICAgIHRoaXMuaW5pdFJvd0RhdGEoKTtcclxuICAgIHRoaXMub25HcmlkUmVhZHkuZW1pdChbdGhpcy5ncmlkQXBpXSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gZXZlbnQ6IG9wY2lvbmFsIC0gQ29udGllbmUgZWwgbm9kbyB5IGxhIGRhdGEgZGUgbGEgZmlsYSBhY3R1YWwuXHJcbiAgICogQGRlc2NyaXB0aW9uIFNlIGRpc3BhcmEgY2FkYSB2ZXogcXVlIGxhIGZpbGEgZXMgY29sb2NhZGEgZW4gc3UgbnVldmEgcG9zaWNpw7NuIChEcmFnICYgRHJvcCkuXHJcbiAgICovXHJcbiAgcm93RHJhZ0VuZEVtaXQoZXZlbnQ6IFJvd0RyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblJvd0RyYWdFbmQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBjZWxsQ29udGV4dE1lbnUoZXZlbnQ6IENlbGxDb250ZXh0TWVudUV2ZW50KSB7XHJcbiAgICB0aGlzLmNlbGxDb250ZXh0TWVudUFjdHVhbCA9IGV2ZW50O1xyXG4gICAgdGhpcy5vbkNlbGxDb250ZXh0TWVudS5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMubGVmdE1lbnUgPSAoZXZlbnQuZXZlbnQhIGFzIFBvaW50ZXJFdmVudCkueC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5ib3R0b21NZW51ID0gKChldmVudC5ldmVudCEgYXMgUG9pbnRlckV2ZW50KS55IC0gMjApLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAoZXZlbnQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNob3dNZW51RGVmYXVsdCkgdGhpcy5tZW51VHJpZ2dlcj8ub3Blbk1lbnUoKTtcclxuICB9XHJcblxyXG4gIHJvd0RhdGFDaGFuZ2VkKGV2ZW50OiBSb3dEYXRhVXBkYXRlZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZEFwaSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghdGhpcy5ncmlkQXBpPy5nZXREaXNwbGF5ZWRSb3dDb3VudCgpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5vbkdyaWRDaGFuZ2UuZW1pdChbdGhpcy5ncmlkQXBpLCBldmVudF0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIHRoaXMub25HcmlkU2VsZWN0Q2hhbmdlLmVtaXQodGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKSk7XHJcbiAgfVxyXG5cclxuICBjZWxsU3RvcEVkaXRpbmcoZXZ0OiBDZWxsRWRpdGluZ1N0b3BwZWRFdmVudCkge1xyXG4gICAgdGhpcy5vbkNlbGxTdG9wRWRpdGluZy5lbWl0KGV2dCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjZWxsS2V5RG93bihldnQ6IENlbGxLZXlEb3duRXZlbnQpIHtcclxuICAgIHRoaXMub25DZWxsS2V5RG93bi5lbWl0KGV2dCk7XHJcbiAgICBpZiAoKGV2dC5ldmVudCBhcyBLZXlib2FyZEV2ZW50KS5jdHJsS2V5ICYmIChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkua2V5ID09PSBcIkFycm93RG93blwiICYmIGV2dC5ub2RlLmxhc3RDaGlsZCkge1xyXG4gICAgICB0aGlzLm9uR3JpZEFkZFJvdy5lbWl0KGV2dCk7XHJcbiAgICB9IGVsc2UgaWYgKChldnQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY3RybEtleSAmJiAoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09PSBcImNcIiAmJiB0aGlzLnVzZUdyaWRDb3B5KSB7XHJcbiAgICAgIHRoaXMuY29weShldnQpO1xyXG4gICAgfSBlbHNlIGlmICgoZXZ0LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmN0cmxLZXkgJiYgKGV2dC5ldmVudCBhcyBLZXlib2FyZEV2ZW50KS5rZXkudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gXCJ2XCIgJiYgdGhpcy51c2VHcmlkQ29weSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnBhc3RlKGV2dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb3B5KGV2dDogQ2VsbEtleURvd25FdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCFldnQubm9kZS5pc1NlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5jb3BpZWRDZWxsID0gZXZ0O1xyXG4gICAgICBpZiAoZXZ0LnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCgoZXZ0LnZhbHVlIGFzIElOZ1NlbGVjdCk/LmxhYmVsID8/IFwiXCIpO1xyXG4gICAgICBlbHNlIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGV2dC52YWx1ZSA/PyBcIlwiKTtcclxuICAgICAgdGhpcy5fbWVzc2FnZVV0aWxTZXJ2aWNlLmdldEFsZXJ0U3VjY2VzcyhcIkNlbGRhIENvcGlhZGFcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvcGllZFJvdyA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VVdGlsU2VydmljZS5nZXRBbGVydFN1Y2Nlc3MoXCJGaWxhIENvcGlhZGFcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyaWRBcGkuZGVzZWxlY3RBbGwoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHBhc3RlKGV2dDogQ2VsbEtleURvd25FdmVudCkge1xyXG4gICAgaWYgKCFldnQubm9kZS5pc1NlbGVjdGVkKCkgJiYgdGhpcy5jb3BpZWRDZWxsKSB7XHJcbiAgICAgIGlmIChldnQuY29sdW1uLmdldENvbElkKCkgPT09IHRoaXMuY29waWVkQ2VsbC5jb2x1bW4uZ2V0Q29sSWQoKSAmJiAoZXZ0LmRhdGEgYXMgRm9ybUdyb3VwKS5nZXQoZXZ0LmNvbHVtbi5nZXRDb2xJZCgpKSEuZW5hYmxlZCkge1xyXG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVBhc3RlQ2VsbCkgaXNWYWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdGVQYXN0ZUNlbGwodGhpcy5jb3BpZWRDZWxsLCBldnQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XHJcbiAgICAgICAgdGhpcy5iZWZvcmVQYXN0ZUNlbGwuZW1pdChbZXZ0LCB0aGlzLmNvcGllZENlbGxdKTtcclxuICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgKGV2dC5kYXRhIGFzIEZvcm1Hcm91cCkuZ2V0KGV2dC5jb2x1bW4uZ2V0Q29sSWQoKSkhLnNldFZhbHVlKHRoaXMuY29waWVkQ2VsbC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaENlbGxzKHtcclxuICAgICAgICAgICAgY29sdW1uczogW2V2dC5jb2x1bW5dLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyUGFzdGVDZWxsLmVtaXQoW2V2dCwgdGhpcy5jb3BpZWRDZWxsXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGV2dC5ub2RlLmlzU2VsZWN0ZWQoKSAmJiB0aGlzLmNvcGllZFJvdykge1xyXG4gICAgICBjb25zdCBJUm93Tm9kZSA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XHJcbiAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMudmFsaWRhdGVQYXN0ZVJvd3MpIGlzVmFsaWQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlUGFzdGVSb3dzKHRoaXMuY29waWVkUm93LCBJUm93Tm9kZSk7XHJcbiAgICAgIGVsc2UgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XHJcbiAgICAgIHRoaXMuYmVmb3JlUGFzdGVSb3dzLmVtaXQoW3RoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCksIHRoaXMuY29waWVkUm93XSk7XHJcbiAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgbGV0IGluZGV4Um93Q29weSA9IDA7XHJcbiAgICAgICAgSVJvd05vZGUuZm9yRWFjaCgocikgPT4ge1xyXG4gICAgICAgICAgKHIuZGF0YSBhcyBGb3JtR3JvdXApLnBhdGNoVmFsdWUoKHRoaXMuY29waWVkUm93IVtpbmRleFJvd0NvcHldLmRhdGEgYXMgRm9ybUdyb3VwKS5nZXRSYXdWYWx1ZSgpKTtcclxuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoe1xyXG4gICAgICAgICAgICByb3dOb2RlczogW3JdLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpbmRleFJvd0NvcHkrKztcclxuICAgICAgICAgIGlmIChpbmRleFJvd0NvcHkgPT0gdGhpcy5jb3BpZWRSb3chLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpbmRleFJvd0NvcHkgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJQYXN0ZVJvd3MuZW1pdChbdGhpcy5ncmlkQXBpLmdldFNlbGVjdGVkTm9kZXMoKSwgdGhpcy5jb3BpZWRSb3ddKTtcclxuICAgICAgICB0aGlzLmdyaWRBcGkuZGVzZWxlY3RBbGwoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29weU1lbnUoZXZlbnQ6IENlbGxDb250ZXh0TWVudUV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQ29weU1lbnUuZW1pdChldmVudCk7XHJcbiAgICB0aGlzLmNvcHkoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcGFzdGVNZW51KGV2ZW50OiBDZWxsQ29udGV4dE1lbnVFdmVudCkge1xyXG4gICAgdGhpcy5vblBhc3RlTWVudS5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMucGFzdGUoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkUGFzdGVNZW51KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZ3JpZEFwaT8uZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoID09IDAgJiYgIXRoaXMuY29waWVkQ2VsbCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5ncmlkQXBpPy5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwICYmICF0aGlzLmNvcGllZFJvdykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuY29waWVkQ2VsbCAmJiAhdGhpcy5jb3BpZWRSb3cpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNPYmpFbXB0eTxUPihvYmplY3Q6IFQpOiBib29sZWFuIHtcclxuICBpZiAob2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoID09PSAwO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XHJcbiAgPCEtLSBBRy1HUklEIEhFQURFUiAtLT5cclxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBteS0yXCJcclxuICAgICpuZ0lmPVwidmlzaWJsZVNlYXJjaCB8fCBidG5BZGQ/LnZpc2libGUgfHwgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycz8ubGVuZ3RoIHx8IGhlYWRlclRpdGxlXCI+XHJcbiAgICA8IS0tIEhlYWRlciBUaXRsZSBhbmQgU3VidGl0bGUgU2VjdGlvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byBkLWZsZXggYWxpZ24taXRlbXMtZW5kXCIgKm5nSWY9XCJoZWFkZXJUaXRsZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLXRpdGxlXCI+e3sgaGVhZGVyVGl0bGUgfX08L3NwYW4+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJTdWJ0aXRsZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2MtYWctZ3JpZC1oZWFkZXItc3VidGl0bGUgbXMtMlwiPnt7IGhlYWRlclN1YnRpdGxlIH19PC9zcGFuPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBFbmQgSGVhZGVyIFRpdGxlIGFuZCBTdWJ0aXRsZSBTZWN0aW9uIC0tPlxyXG5cclxuICAgIDwhLS0gRmlsdHJvIChwb3NpY2nDs24gaXpxdWllcmRhIC0gY3VhbmRvIE5PIGhheSB0w610dWxvIG8gc3VidMOtdHVsbykgLS0+XHJcbiAgICA8ZGl2IFtjbGFzc109XCJmaWxsU2VhcmNoID8gJ2NvbC0xMiBteS0yJyA6IHNlYXJjaENsYXNzXCIgKm5nSWY9XCJ2aXNpYmxlU2VhcmNoICYmICFzaG93U2VhcmNoSW5BY3Rpb25zXCI+XHJcbiAgICAgIDxpbnB1dC1zZWFyY2ggKG9uQ2hhbmdlKT1cImNoYW5nZUZpbHRlcigkZXZlbnQpXCI+PC9pbnB1dC1zZWFyY2g+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIFtjbGFzc109XCJ2aXNpYmxlU2VhcmNoICYmICFzaG93U2VhcmNoSW5BY3Rpb25zID8gJ2NvbC1zbS0xMiBjb2wtbWQtNiBjb2wtbGctNiBjb2wteGwtNyBjb2wtMTInIDogJ2NvbCdcIlxyXG4gICAgICBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLWFjdGlvbnMgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICBidG5BZGQ/LnZpc2libGUgfHwgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVycz8ubGVuZ3RoIHx8IGNvbmZpZ0J1dHRvbnNBY3Rpb24/LmhlYWRlciB8fCBjb25maWdIZWFkZXIgIT0gbnVsbCB8fCBzaG93U2VhcmNoSW5BY3Rpb25zXHJcbiAgICAgIFwiPlxyXG4gICAgICA8IS0tIEZpbHRybyAocG9zaWNpw7NuIGRlcmVjaGEgLSBjdWFuZG8gSEFZIHTDrXR1bG8gbyBzdWJ0w610dWxvKSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInNjLWFnLWdyaWQtaGVhZGVyLXNlYXJjaC1pbmxpbmVcIiAqbmdJZj1cInZpc2libGVTZWFyY2ggJiYgc2hvd1NlYXJjaEluQWN0aW9uc1wiPlxyXG4gICAgICAgIDxpbnB1dC1zZWFyY2ggKG9uQ2hhbmdlKT1cImNoYW5nZUZpbHRlcigkZXZlbnQpXCI+PC9pbnB1dC1zZWFyY2g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIEVuZCBTZWFyY2ggSW5wdXQgaW5saW5lIC0tPlxyXG4gICAgICA8IS0tIEhlYWRlciBhY3Rpb25zIGJ1dHRvbnMgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWdCdXR0b25zQWN0aW9uICYmIGNvbmZpZ0hlYWRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWdIZWFkZXIuZGlzYWJsZWQgPT09IGZhbHNlOyBlbHNlIHRlbXBsYXRlQWN0aW9uXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBBY3Rpb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVBY3Rpb24+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMDsgZWxzZSB0ZW1wQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWljb24gYnRuLXdpZHRoIGJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBkaXNhYmxlZD5cclxuICAgICAgICAgICAgICBBY2Npb25lc1xyXG4gICAgICAgICAgICAgIDxlbSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiPjwvZW0+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wQWN0aW9ucz5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJoaWRlSGVhZGVyTWVudUFjdGlvbigpOyBlbHNlIHRlbXBsYXRlSGVhZGVyQWN0aW9uXCIgY2xhc3M9XCJidG4taWNvbiBidG4td2lkdGggYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgICAgICBBY2Npb25lc1xyXG4gICAgICAgICAgICA8ZW0gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWRvd25cIj48L2VtPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZUhlYWRlckFjdGlvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taWNvbiBidG4td2lkdGggYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJwYW5lbC5tZW51XCI+XHJcbiAgICAgICAgICAgICAgQWNjaW9uZXNcclxuICAgICAgICAgICAgICA8ZW0gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWRvd25cIj48L2VtPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxzYy1tZW51LXBhbmVsICNwYW5lbCBjbGFzcz1cImQtbm9uZVwiIFtzdWJNZW51c109XCJjb25maWdIZWFkZXIuc3VibWVudSA/PyBbXVwiPjwvc2MtbWVudS1wYW5lbD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gRW5kIGhlYWRlciBhY3Rpb25zIGJ1dHRvbnMgLS0+XHJcblxyXG4gICAgICA8IS0tIE90aGVyIGJ1dHRvbnMgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q2hpbGRyZW5CdXR0b25IZWFkZXJzPy5sZW5ndGhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdmlld0NoaWxkcmVuQnV0dG9uSGVhZGVyIG9mIHZpZXdDaGlsZHJlbkJ1dHRvbkhlYWRlcnNcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidmlld0NoaWxkcmVuQnV0dG9uSGVhZGVyLnRlbXBsYXRlXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tRW5kIG90aGVyIGJ1dHRvbnMgLS0+XHJcblxyXG4gICAgICA8IS0tIEFkZCBidXR0b24gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidG5BZGQ/LnZpc2libGVcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuLXdpZHRoIGJ0biBidG4td2FybmluZyBidG4tc21cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWRkUm93RW1pdCgpXCJcclxuICAgICAgICAgICNidXR0b25BZGRcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJidG5BZGQuZGlzYWJsZWQgPz8gZmFsc2VcIj5cclxuICAgICAgICAgIEFncmVnYXJcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1FbmQgYWRkIGJ1dHRvbiAtLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XHJcbiAgPCEtLSBBRy1HUklEIEhFQURFUiBFTkQgLS0+XHJcbiAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiIFtuZ1N0eWxlXT1cIm5nU3R5bGVDb250YWluZXJcIj5cclxuICAgICAgPGFnLWdyaWQtYW5ndWxhclxyXG4gICAgICAgICNhZ0dyaWRcclxuICAgICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwibmdTdHlsZUFnR3JpZFwiXHJcbiAgICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc0FuZEFkZENlbGxBY3Rpb25zXCJcclxuICAgICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgICBbY29tcG9uZW50c109XCJfZnJhbWV3b3JrQ29tcG9uZW50c1wiXHJcbiAgICAgICAgW2NvbnRleHRdPVwiX2NvbnRleHRcIlxyXG4gICAgICAgIFtyb3dTZWxlY3Rpb25dPVwicm93U2VsZWN0aW9uXCJcclxuICAgICAgICBbaXNSb3dTZWxlY3RhYmxlXT1cImlzUm93U2VsZWN0YWJsZVwiXHJcbiAgICAgICAgW3Jvd0RyYWdNYW5hZ2VkXT1cInJvd0RyYWdNYW5hZ2VkXCJcclxuICAgICAgICBbZG9tTGF5b3V0XT1cImRvbUxheW91dFwiXHJcbiAgICAgICAgW2FuaW1hdGVSb3dzXT1cImFuaW1hdGVSb3dzXCJcclxuICAgICAgICBbZ2V0Um93U3R5bGVdPVwiZ2V0Um93U3R5bGVcIlxyXG4gICAgICAgIFtlbmFibGVSYW5nZVNlbGVjdGlvbl09XCJlbmFibGVSYW5nZVNlbGVjdGlvblwiXHJcbiAgICAgICAgW3N1cHByZXNzUm93VHJhbnNmb3JtXT1cInN1cHByZXNzUm93VHJhbnNmb3JtXCJcclxuICAgICAgICBbc3VwcHJlc3NNb3ZlV2hlblJvd0RyYWdnaW5nXT1cImFuaW1hdGVSb3dzXCJcclxuICAgICAgICBbb3ZlcmxheU5vUm93c1RlbXBsYXRlXT1cIm92ZXJsYXlOb1Jvd3NUZW1wbGF0ZVwiXHJcbiAgICAgICAgW292ZXJsYXlMb2FkaW5nVGVtcGxhdGVdPVwib3ZlcmxheUxvYWRpbmdUZW1wbGF0ZVwiXHJcbiAgICAgICAgW25vUm93c092ZXJsYXlDb21wb25lbnRQYXJhbXNdPVwibm9Sb3dzT3ZlcmxheUNvbXBvbmVudFBhcmFtc1wiXHJcbiAgICAgICAgW3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25dPVwic3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvblwiXHJcbiAgICAgICAgW3N1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zXT1cInN1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zXCJcclxuICAgICAgICBbc3VwcHJlc3NTY3JvbGxPbk5ld0RhdGFdPVwic3VwcHJlc3NTY3JvbGxPbk5ld0RhdGFcIlxyXG4gICAgICAgIFtzdXBwcmVzc1Byb3BlcnR5TmFtZXNDaGVja109XCJ0cnVlXCJcclxuICAgICAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb24gPyBwYWdpbmF0aW9uUGFnZVNpemUgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxyXG4gICAgICAgIFtzdXBwcmVzc1BhZ2luYXRpb25QYW5lbF09XCJzdXBwcmVzc1BhZ2luYXRpb25QYW5lbFwiXHJcbiAgICAgICAgKHJvd0NsaWNrZWQpPVwicm93Q2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChyb3dEb3VibGVDbGlja2VkKT1cInJvd0RvdWJsZUNsaWNrZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAocm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChwYWdpbmF0aW9uQ2hhbmdlZCk9XCJwYWdpbmF0aW9uQ2hhbmdlZCgpXCJcclxuICAgICAgICAoZ3JpZFJlYWR5KT1cImdyaWRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgICAocm93RHJhZ0VuZCk9XCJyb3dEcmFnRW5kRW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoY2VsbENvbnRleHRNZW51KT1cImNlbGxDb250ZXh0TWVudSgkZXZlbnQpXCJcclxuICAgICAgICBbZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb25dPVwiZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb25cIlxyXG4gICAgICAgIChyb3dEYXRhVXBkYXRlZCk9XCJyb3dEYXRhQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAocm93RWRpdGluZ1N0YXJ0ZWQpPVwib25Sb3dFZGl0aW5nU3RhcnRlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChjZWxsVmFsdWVDaGFuZ2VkKT1cImNlbGxWYWx1ZUNoYW5nZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKClcIlxyXG4gICAgICAgIChjZWxsRWRpdGluZ1N0b3BwZWQpPVwiY2VsbFN0b3BFZGl0aW5nKCRldmVudClcIlxyXG4gICAgICAgIChjZWxsS2V5RG93bik9XCJjZWxsS2V5RG93bigkYW55KCRldmVudCkpXCJcclxuICAgICAgICBbbXVsdGlTb3J0S2V5XT1cIm11bHRpU29ydEtleVwiXHJcbiAgICAgICAgW3Rvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiXHJcbiAgICAgICAgW3Rvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiXHJcbiAgICAgICAgW3Rvb2x0aXBTaG93TW9kZV09XCJ0b29sdGlwU2hvd01vZGVcIlxyXG4gICAgICAgIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gZmFsc2U7XCI+XHJcbiAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+XHJcbiAgPCEtLSBBRy1HUklEIFBBR0lOQVRJT04gLS0+XHJcbiAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT5cclxuICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwYWdpbmF0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgIDxzYy1hZy1ncmlkLXBhZ2luYXRpb25cclxuICAgICAgICAjc2NBZ0dyaWRQYWdpbmF0aW9uXHJcbiAgICAgICAgW2dyaWRBcGldPVwiZ3JpZEFwaVwiXHJcbiAgICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uUGFnZVNpemVcIlxyXG4gICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCI+PC9zYy1hZy1ncmlkLXBhZ2luYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxyXG4gIDwhLS0gQUctR1JJRCBQQUdJTkFUSU9OIEVORCAtLT5cclxuICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICAqbmdJZj1cInNob3dNZW51RGVmYXVsdFwiXHJcbiAgb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIlxyXG4gIHN0eWxlPVwicG9zaXRpb246IGZpeGVkOyB3aWR0aDogMHB4OyBoZWlnaHQ6IDBweFwiXHJcbiAgW25nU3R5bGVdPVwieyB0b3A6IGJvdHRvbU1lbnUgKyAncHgnLCBsZWZ0OiBsZWZ0TWVudSArICdweCcgfVwiPlxyXG4gIDxtYXQtbWVudSBvbmNvbnRleHRtZW51PVwicmV0dXJuIGZhbHNlO1wiICNzY01lbnU9XCJtYXRNZW51XCI+XHJcbiAgICA8YnV0dG9uIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gZmFsc2U7XCIgKGNsaWNrKT1cImNvcHlNZW51KGNlbGxDb250ZXh0TWVudUFjdHVhbCEpXCIgbWF0LW1lbnUtaXRlbT5cclxuICAgICAgPG1hdC1pY29uPmNvbnRlbnRfY29weTwvbWF0LWljb24+IDxzcGFuPkNvcGlhcjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRQYXN0ZU1lbnVcIiBvbmNvbnRleHRtZW51PVwicmV0dXJuIGZhbHNlO1wiIChjbGljayk9XCJwYXN0ZU1lbnUoY2VsbENvbnRleHRNZW51QWN0dWFsISlcIiBtYXQtbWVudS1pdGVtPlxyXG4gICAgICA8bWF0LWljb24+Y29udGVudF9wYXN0ZTwvbWF0LWljb24+PHNwYW4+UGVnYXI8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG4gIDxidXR0b24gb25jb250ZXh0bWVudT1cInJldHVybiBmYWxzZTtcIiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNjTWVudVwiICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCI+XHJcbiAgICBNZW51XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -6429,11 +6429,12 @@ class ScMenuPanelComponent extends ScCellRenderBase {
|
|
|
6429
6429
|
this.idScMenuPanel = `sc-menu-panel-${++scMenuPanelNextId}`;
|
|
6430
6430
|
this.subMenus = [];
|
|
6431
6431
|
}
|
|
6432
|
-
onButtonActionEmit(action) {
|
|
6432
|
+
onButtonActionEmit(action, isRightClick = false) {
|
|
6433
6433
|
const index = this.params?.node.rowIndex ?? -1;
|
|
6434
6434
|
this._scCellRenderButtonService.buttonAction({
|
|
6435
6435
|
index,
|
|
6436
6436
|
action,
|
|
6437
|
+
isRightClick
|
|
6437
6438
|
});
|
|
6438
6439
|
}
|
|
6439
6440
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScMenuPanelComponent, deps: [{ token: ScCellRenderButtonService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -6583,9 +6584,9 @@ class ScCellRendererButtonComponent extends ScCellRenderBase {
|
|
|
6583
6584
|
this.configButtons =
|
|
6584
6585
|
params.context.componentParent._configButtonsDefaultAgGrid;
|
|
6585
6586
|
}
|
|
6586
|
-
onButtonAction(typeButton) {
|
|
6587
|
+
onButtonAction(typeButton, isRightClick = false) {
|
|
6587
6588
|
if (typeButton)
|
|
6588
|
-
this.params?.context.componentParent.onButtonActionAgGridEmit(this.params.node.rowIndex, typeButton);
|
|
6589
|
+
this.params?.context.componentParent.onButtonActionAgGridEmit(this.params.node.rowIndex, typeButton, isRightClick);
|
|
6589
6590
|
}
|
|
6590
6591
|
refresh(_) {
|
|
6591
6592
|
return true;
|
|
@@ -6608,14 +6609,14 @@ class ScCellRendererButtonComponent extends ScCellRenderBase {
|
|
|
6608
6609
|
return configButtons?.tooltipOption;
|
|
6609
6610
|
}
|
|
6610
6611
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
6611
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScCellRendererButtonComponent, selector: "ng-component", host: { properties: { "id": "idScCellRenderButton" }, classAttribute: "d-flex justify-content-center sc-cell-render-button" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\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: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ScMenuPanelComponent, selector: "sc-menu-panel", inputs: ["subMenus", "params"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6612
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ScCellRendererButtonComponent, selector: "ng-component", host: { properties: { "id": "idScCellRenderButton" }, classAttribute: "d-flex justify-content-center sc-cell-render-button" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n (auxclick)=\"onButtonAction(option?.actionCode ?? '', true)\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\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: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ScMenuPanelComponent, selector: "sc-menu-panel", inputs: ["subMenus", "params"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
6612
6613
|
}
|
|
6613
6614
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRendererButtonComponent, decorators: [{
|
|
6614
6615
|
type: Component,
|
|
6615
6616
|
args: [{ host: {
|
|
6616
6617
|
'[id]': 'idScCellRenderButton',
|
|
6617
6618
|
class: 'd-flex justify-content-center sc-cell-render-button',
|
|
6618
|
-
}, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"] }]
|
|
6619
|
+
}, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let option of configButtons\">\r\n <ng-container *ngIf=\"option?.submenu?.length ?? 0 > 0; else buttonPrincipal\">\r\n <ng-container *ngIf=\"!hideSubMenu(option?.submenu ?? [])\">\r\n <button\r\n matRipple\r\n class=\"btn sc-cell-render-button-action\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [matMenuTriggerFor]=\"panel.menu\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"p-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n\r\n <sc-menu-panel #panel [params]=\"params\" [subMenus]=\"option.submenu ?? []\"></sc-menu-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #buttonPrincipal>\r\n <button\r\n *ngIf=\"!isFunctionHide(option?.hide ?? false)\"\r\n [disabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [ngClass]=\"option?.buttonOption?.classList ? $any(option?.buttonOption?.classList) : ''\"\r\n class=\"btn sc-cell-render-button-action\"\r\n matRipple\r\n (click)=\"onButtonAction(option?.actionCode ?? '')\"\r\n (auxclick)=\"onButtonAction(option?.actionCode ?? '', true)\"\r\n type=\"button\"\r\n [matTooltip]=\"getTooltipOption(option).label\"\r\n [matTooltipClass]=\"getTooltipOption(option).classList ?? ''\"\r\n [matTooltipDisabled]=\"isFunctionDisabled(option?.disabled)\"\r\n [attr.aria-label]=\"getTooltipOption(option).label\">\r\n <em\r\n class=\"pt-0\"\r\n [class]=\"\r\n (option?.iconOption?.icon ?? '') +\r\n ' ' +\r\n (isFunctionDisabled(option?.disabled) ? 'text-muted' : option?.iconOption?.classList ?? '')\r\n \"></em>\r\n </button>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".sc-cell-render-button{padding:.1em 1em}.sc-cell-render-button-action{border:none;border-radius:50%;padding:0 .5em;text-align:center;margin:.1em;background-color:transparent}.sc-cell-render-button-action i{display:block;width:1.7em;height:1.7em;line-height:1.7em;padding-right:0}button:disabled{cursor:no-drop}\n"] }]
|
|
6619
6620
|
}] });
|
|
6620
6621
|
|
|
6621
6622
|
let nextId$1 = 0;
|
|
@@ -7006,13 +7007,13 @@ class ScAgGridCustomizableComponent {
|
|
|
7006
7007
|
};
|
|
7007
7008
|
}
|
|
7008
7009
|
ngOnInit() {
|
|
7009
|
-
this._subscription$.add(this._scCellRenderButtonService.handlerButtonAction$.subscribe(({ index, action }) => {
|
|
7010
|
+
this._subscription$.add(this._scCellRenderButtonService.handlerButtonAction$.subscribe(({ index, action, isRightClick }) => {
|
|
7010
7011
|
if (action == null)
|
|
7011
7012
|
return;
|
|
7012
7013
|
if (action.trim() === "")
|
|
7013
7014
|
return;
|
|
7014
7015
|
if (index !== -1) {
|
|
7015
|
-
this.onButtonActionAgGridEmit(index, action);
|
|
7016
|
+
this.onButtonActionAgGridEmit(index, action, isRightClick);
|
|
7016
7017
|
return;
|
|
7017
7018
|
}
|
|
7018
7019
|
this.onButtonActionHeaderEmit(action);
|
|
@@ -7083,7 +7084,7 @@ class ScAgGridCustomizableComponent {
|
|
|
7083
7084
|
return hide();
|
|
7084
7085
|
return hide;
|
|
7085
7086
|
}
|
|
7086
|
-
onButtonActionAgGridEmit(rowIndex, typeButton) {
|
|
7087
|
+
onButtonActionAgGridEmit(rowIndex, typeButton, isRightClick) {
|
|
7087
7088
|
const IRowNode = this.gridApi?.getDisplayedRowAtIndex(rowIndex);
|
|
7088
7089
|
if (IRowNode) {
|
|
7089
7090
|
if (typeButton === EnumButtonType.TYPE_EDIT) {
|
|
@@ -7094,7 +7095,7 @@ class ScAgGridCustomizableComponent {
|
|
|
7094
7095
|
this.onDeleteRow.emit([this.gridApi, [IRowNode.data]]);
|
|
7095
7096
|
return;
|
|
7096
7097
|
}
|
|
7097
|
-
this.onButtonActionAgGrid.emit([typeButton, IRowNode]);
|
|
7098
|
+
this.onButtonActionAgGrid.emit([typeButton, IRowNode, isRightClick]);
|
|
7098
7099
|
}
|
|
7099
7100
|
}
|
|
7100
7101
|
initRowData() {
|