ngx-histaff-alpha 2.6.9 → 2.7.0
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/app/libraries/navigator/navigator/navigator.component.mjs +10 -8
- package/esm2022/lib/app/services/sys-menu.service.mjs +3 -3
- package/fesm2022/ngx-histaff-alpha.mjs +7 -6
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/libraries/core-table/core-table.component.d.ts +1 -1
- package/lib/app/libraries/navigator/navigator/navigator.component.d.ts +3 -1
- package/lib/app/services/sys-menu.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -16,10 +16,11 @@ import * as i7 from "../../../services/layout.service";
|
|
|
16
16
|
import * as i8 from "../../../services/multi-language.service";
|
|
17
17
|
import * as i9 from "../../../services/auth.service";
|
|
18
18
|
import * as i10 from "../../alert/alert.service";
|
|
19
|
-
import * as i11 from "
|
|
20
|
-
import * as i12 from "@angular/
|
|
19
|
+
import * as i11 from "../../../services/app-config.service";
|
|
20
|
+
import * as i12 from "@angular/common";
|
|
21
|
+
import * as i13 from "@angular/forms";
|
|
21
22
|
export class NavigatorComponent {
|
|
22
|
-
constructor(navigatorService, sysMenuService, recursiveService, router, menuService, organizationService, layoutService, mls, authService, alertService) {
|
|
23
|
+
constructor(navigatorService, sysMenuService, recursiveService, router, menuService, organizationService, layoutService, mls, authService, alertService, appConfigService) {
|
|
23
24
|
this.navigatorService = navigatorService;
|
|
24
25
|
this.sysMenuService = sysMenuService;
|
|
25
26
|
this.recursiveService = recursiveService;
|
|
@@ -30,6 +31,7 @@ export class NavigatorComponent {
|
|
|
30
31
|
this.mls = mls;
|
|
31
32
|
this.authService = authService;
|
|
32
33
|
this.alertService = alertService;
|
|
34
|
+
this.appConfigService = appConfigService;
|
|
33
35
|
this.linerItems$ = new BehaviorSubject([]);
|
|
34
36
|
this.subscriptions = [];
|
|
35
37
|
this.flatNavigationCheck = [];
|
|
@@ -200,7 +202,7 @@ export class NavigatorComponent {
|
|
|
200
202
|
});
|
|
201
203
|
console.groupEnd();
|
|
202
204
|
}
|
|
203
|
-
this.subscriptions.push(this.authService.data$.pipe(filter(x => !!x), map(x => x?.id), switchMap(x => this.sysMenuService.readPermittedMenu(x))).subscribe(x => {
|
|
205
|
+
this.subscriptions.push(this.authService.data$.pipe(filter(x => !!x), map(x => x?.id), switchMap(x => this.sysMenuService.readPermittedMenu(x, this.appConfigService.APP_TYPE))).subscribe(x => {
|
|
204
206
|
if (x.ok && x.status === 200) {
|
|
205
207
|
const body = x.body;
|
|
206
208
|
body.innerBody.sort((a, b) => {
|
|
@@ -351,8 +353,8 @@ export class NavigatorComponent {
|
|
|
351
353
|
x.unsubscribe();
|
|
352
354
|
});
|
|
353
355
|
}
|
|
354
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: NavigatorComponent, deps: [{ token: i1.NavigatorService }, { token: i2.SysMenuService }, { token: i3.RecursiveService }, { token: i4.Router }, { token: i5.MenuService }, { token: i6.OrganizationService }, { token: i7.LayoutService }, { token: i8.MultiLanguageService }, { token: i9.AuthService }, { token: i10.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
355
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: NavigatorComponent, isStandalone: true, selector: "corelib-navigator", inputs: { logoTemplate: "logoTemplate", rightPartHeadeMenuItem: "rightPartHeadeMenuItem", rightIcon: "rightIcon" }, viewQueries: [{ propertyName: "mainMenu", first: true, predicate: ["mainMenu"], descendants: true }], ngImport: i0, template: "<div class=\"navigator-container\">\r\n\r\n <div class=\"input-search-container\" [class.opacity0]=\"!!leftbarReduced\">\r\n <input id=\"navigator-search\" placeholder=\"T\u00ECm ki\u1EBFm ...\" type=\"text\" [(ngModel)]=\"searchFor\"\r\n (ngModelChange)=\"onSearchChange($event)\">\r\n <div class=\"search-clear-wrapper\" *ngIf=\"!!searchFor.length\" (click)=\"clearSearch()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div id=\"nav\">\r\n <core-loading-surface *ngIf=\"loading\"></core-loading-surface>\r\n <ul id=\"main-menu\" #mainMenu [ngStyle]=\"{ padding: 0}\">\r\n <!-- <li id=\"first-menu-item\" class=\"first-menu-iem\"><a title=\"Go to home page\" routerLink=\"/\">\r\n <span id=\"logo-menu\">\r\n <ng-container [ngTemplateOutlet]=\"logoTemplate\"></ng-container>\r\n </span>\r\n </a>\r\n </li> -->\r\n <ng-container *ngIf=\"items?.length\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <app-item [item]=\"item\" [level]=\"1\"></app-item>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <li class=\"parent right-part-item\" *ngIf=\"!!rightIcon\">\r\n <a (click)=\"rightIcon.function()\" class=\"no-vertical-padding\">\r\n <div class=\"right-icon-wrapper\">\r\n <i [class]=\"'right-icon ' + rightIcon.featherClass\"></i>\r\n <div class=\"right-icon-badge\">\r\n {{ rightIcon.badgeCount }}\r\n </div>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>", styles: [".navigator-container{position:relative;display:block}.navigator-container .input-search-container{margin-left:12px;margin-bottom:var(--size-layout-block-cell-spacing);width:calc(var(--size-left-bar-current-width) - var(--size-left-bar-the-second-icon-left) - var(--size-scrollbar-width) - 1px);border-radius:20px;background-color:#e7e7e7}.navigator-container .input-search-container .search-clear-wrapper{display:block;position:absolute;top:5px;right:20px;width:24px;height:24px;cursor:pointer}.navigator-container .input-search-container .search-clear-wrapper i{font-size:24px;color:#848484}.navigator-container #navigator-search{font-family:Open Sans,sans-serif!important;-webkit-appearance:none;appearance:none;font-size:13px;width:100%;max-width:400px;height:35px;border:none;border-radius:20px;background-color:#e7e7e7;color:#000;padding-left:20px;position:relative;display:inline-block}.navigator-container .search-wrapper{padding:5px;position:relative}.navigator-container #main-menu{height:calc(100vh - var(--size-header-height) - 40px - var(--size-layout-block-cell-spacing) * 2);overflow-x:hidden;overflow-y:auto}.navigator-container ul{padding:0!important}.navigator-container .custom-item:hover{background-color:#eaf1fb}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
356
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: NavigatorComponent, deps: [{ token: i1.NavigatorService }, { token: i2.SysMenuService }, { token: i3.RecursiveService }, { token: i4.Router }, { token: i5.MenuService }, { token: i6.OrganizationService }, { token: i7.LayoutService }, { token: i8.MultiLanguageService }, { token: i9.AuthService }, { token: i10.AlertService }, { token: i11.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
357
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: NavigatorComponent, isStandalone: true, selector: "corelib-navigator", inputs: { logoTemplate: "logoTemplate", rightPartHeadeMenuItem: "rightPartHeadeMenuItem", rightIcon: "rightIcon" }, viewQueries: [{ propertyName: "mainMenu", first: true, predicate: ["mainMenu"], descendants: true }], ngImport: i0, template: "<div class=\"navigator-container\">\r\n\r\n <div class=\"input-search-container\" [class.opacity0]=\"!!leftbarReduced\">\r\n <input id=\"navigator-search\" placeholder=\"T\u00ECm ki\u1EBFm ...\" type=\"text\" [(ngModel)]=\"searchFor\"\r\n (ngModelChange)=\"onSearchChange($event)\">\r\n <div class=\"search-clear-wrapper\" *ngIf=\"!!searchFor.length\" (click)=\"clearSearch()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div id=\"nav\">\r\n <core-loading-surface *ngIf=\"loading\"></core-loading-surface>\r\n <ul id=\"main-menu\" #mainMenu [ngStyle]=\"{ padding: 0}\">\r\n <!-- <li id=\"first-menu-item\" class=\"first-menu-iem\"><a title=\"Go to home page\" routerLink=\"/\">\r\n <span id=\"logo-menu\">\r\n <ng-container [ngTemplateOutlet]=\"logoTemplate\"></ng-container>\r\n </span>\r\n </a>\r\n </li> -->\r\n <ng-container *ngIf=\"items?.length\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <app-item [item]=\"item\" [level]=\"1\"></app-item>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <li class=\"parent right-part-item\" *ngIf=\"!!rightIcon\">\r\n <a (click)=\"rightIcon.function()\" class=\"no-vertical-padding\">\r\n <div class=\"right-icon-wrapper\">\r\n <i [class]=\"'right-icon ' + rightIcon.featherClass\"></i>\r\n <div class=\"right-icon-badge\">\r\n {{ rightIcon.badgeCount }}\r\n </div>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>", styles: [".navigator-container{position:relative;display:block}.navigator-container .input-search-container{margin-left:12px;margin-bottom:var(--size-layout-block-cell-spacing);width:calc(var(--size-left-bar-current-width) - var(--size-left-bar-the-second-icon-left) - var(--size-scrollbar-width) - 1px);border-radius:20px;background-color:#e7e7e7}.navigator-container .input-search-container .search-clear-wrapper{display:block;position:absolute;top:5px;right:20px;width:24px;height:24px;cursor:pointer}.navigator-container .input-search-container .search-clear-wrapper i{font-size:24px;color:#848484}.navigator-container #navigator-search{font-family:Open Sans,sans-serif!important;-webkit-appearance:none;appearance:none;font-size:13px;width:100%;max-width:400px;height:35px;border:none;border-radius:20px;background-color:#e7e7e7;color:#000;padding-left:20px;position:relative;display:inline-block}.navigator-container .search-wrapper{padding:5px;position:relative}.navigator-container #main-menu{height:calc(100vh - var(--size-header-height) - 40px - var(--size-layout-block-cell-spacing) * 2);overflow-x:hidden;overflow-y:auto}.navigator-container ul{padding:0!important}.navigator-container .custom-item:hover{background-color:#eaf1fb}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ItemComponent, selector: "app-item", inputs: ["item", "level"] }, { kind: "component", type: CoreLoadingSurfaceComponent, selector: "core-loading-surface", inputs: ["loading", "height"] }] }); }
|
|
356
358
|
}
|
|
357
359
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: NavigatorComponent, decorators: [{
|
|
358
360
|
type: Component,
|
|
@@ -362,7 +364,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
362
364
|
ItemComponent,
|
|
363
365
|
CoreLoadingSurfaceComponent,
|
|
364
366
|
], template: "<div class=\"navigator-container\">\r\n\r\n <div class=\"input-search-container\" [class.opacity0]=\"!!leftbarReduced\">\r\n <input id=\"navigator-search\" placeholder=\"T\u00ECm ki\u1EBFm ...\" type=\"text\" [(ngModel)]=\"searchFor\"\r\n (ngModelChange)=\"onSearchChange($event)\">\r\n <div class=\"search-clear-wrapper\" *ngIf=\"!!searchFor.length\" (click)=\"clearSearch()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div id=\"nav\">\r\n <core-loading-surface *ngIf=\"loading\"></core-loading-surface>\r\n <ul id=\"main-menu\" #mainMenu [ngStyle]=\"{ padding: 0}\">\r\n <!-- <li id=\"first-menu-item\" class=\"first-menu-iem\"><a title=\"Go to home page\" routerLink=\"/\">\r\n <span id=\"logo-menu\">\r\n <ng-container [ngTemplateOutlet]=\"logoTemplate\"></ng-container>\r\n </span>\r\n </a>\r\n </li> -->\r\n <ng-container *ngIf=\"items?.length\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <app-item [item]=\"item\" [level]=\"1\"></app-item>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <li class=\"parent right-part-item\" *ngIf=\"!!rightIcon\">\r\n <a (click)=\"rightIcon.function()\" class=\"no-vertical-padding\">\r\n <div class=\"right-icon-wrapper\">\r\n <i [class]=\"'right-icon ' + rightIcon.featherClass\"></i>\r\n <div class=\"right-icon-badge\">\r\n {{ rightIcon.badgeCount }}\r\n </div>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>", styles: [".navigator-container{position:relative;display:block}.navigator-container .input-search-container{margin-left:12px;margin-bottom:var(--size-layout-block-cell-spacing);width:calc(var(--size-left-bar-current-width) - var(--size-left-bar-the-second-icon-left) - var(--size-scrollbar-width) - 1px);border-radius:20px;background-color:#e7e7e7}.navigator-container .input-search-container .search-clear-wrapper{display:block;position:absolute;top:5px;right:20px;width:24px;height:24px;cursor:pointer}.navigator-container .input-search-container .search-clear-wrapper i{font-size:24px;color:#848484}.navigator-container #navigator-search{font-family:Open Sans,sans-serif!important;-webkit-appearance:none;appearance:none;font-size:13px;width:100%;max-width:400px;height:35px;border:none;border-radius:20px;background-color:#e7e7e7;color:#000;padding-left:20px;position:relative;display:inline-block}.navigator-container .search-wrapper{padding:5px;position:relative}.navigator-container #main-menu{height:calc(100vh - var(--size-header-height) - 40px - var(--size-layout-block-cell-spacing) * 2);overflow-x:hidden;overflow-y:auto}.navigator-container ul{padding:0!important}.navigator-container .custom-item:hover{background-color:#eaf1fb}\n"] }]
|
|
365
|
-
}], ctorParameters: () => [{ type: i1.NavigatorService }, { type: i2.SysMenuService }, { type: i3.RecursiveService }, { type: i4.Router }, { type: i5.MenuService }, { type: i6.OrganizationService }, { type: i7.LayoutService }, { type: i8.MultiLanguageService }, { type: i9.AuthService }, { type: i10.AlertService }], propDecorators: { mainMenu: [{
|
|
367
|
+
}], ctorParameters: () => [{ type: i1.NavigatorService }, { type: i2.SysMenuService }, { type: i3.RecursiveService }, { type: i4.Router }, { type: i5.MenuService }, { type: i6.OrganizationService }, { type: i7.LayoutService }, { type: i8.MultiLanguageService }, { type: i9.AuthService }, { type: i10.AlertService }, { type: i11.AppConfigService }], propDecorators: { mainMenu: [{
|
|
366
368
|
type: ViewChild,
|
|
367
369
|
args: ["mainMenu"]
|
|
368
370
|
}], logoTemplate: [{
|
|
@@ -372,4 +374,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
372
374
|
}], rightIcon: [{
|
|
373
375
|
type: Input
|
|
374
376
|
}] } });
|
|
375
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL25hdmlnYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLEtBQUssRUFBb0QsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFRckQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDOzs7Ozs7Ozs7Ozs7OztBQW1CN0gsTUFBTSxPQUFPLGtCQUFrQjtJQTBCN0IsWUFDVSxnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLE1BQWMsRUFDZCxXQUF3QixFQUN4QixtQkFBd0MsRUFDeEMsYUFBNEIsRUFDNUIsR0FBeUIsRUFDekIsV0FBd0IsRUFDeEIsWUFBMEI7UUFUMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxt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QUFPO2lCQUNSO2FBQ0Y7WUFBQSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQW9CO1FBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDO2dCQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OEdBdFpVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHVTQ3hDL0IsaXpEQXNDTSwyd0NETkYsWUFBWSx1VkFDWixXQUFXLGtuQkFDWCxhQUFhLGdGQUNiLDJCQUEyQjs7MkZBS2xCLGtCQUFrQjtrQkFaOUIsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3dCQUNiLDJCQUEyQjtxQkFDNUI7dVZBTXNCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFLWixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3lzTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zeXMtbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjdXJzaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY3Vyc2l2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVJpZ2h0SWNvbiB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSVJpZ2h0SWNvbic7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lGb3JtYXRlZFJlc3BvbnNlJztcclxuXHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgSUZsYXROYXZpZ2F0aW9uQ2hlY2sge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgY291bnQ6IG51bWJlcjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlbGliLW5hdmlnYXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEl0ZW1Db21wb25lbnQsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0b3IuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2aWdhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChcIm1haW5NZW51XCIpIG1haW5NZW51ITogRWxlbWVudFJlZjtcclxuICBsaXN0ZW5lckZuITogKCkgPT4gdm9pZDtcclxuXHJcbiAgaXRlbXMhOiBJTmF2aWdhdG9ySXRlbVtdO1xyXG5cclxuICBASW5wdXQoKSBsb2dvVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIHJpZ2h0UGFydEhlYWRlTWVudUl0ZW0hOiBJTmF2aWdhdG9ySXRlbTtcclxuICBASW5wdXQoKSByaWdodEljb24hOiBJUmlnaHRJY29uO1xyXG5cclxuICBsaW5lckl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU5hdmlnYXRvckl0ZW1bXT4oW10pO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBmbGF0TmF2aWdhdGlvbkNoZWNrOiBJRmxhdE5hdmlnYXRpb25DaGVja1tdID0gW107XHJcbiAgaXRlbXNFcnJvcnM6IHN0cmluZ1tdID0gW107XHJcbiAgbGVmdGJhclJlZHVjZWQhOiBib29sZWFuO1xyXG5cclxuICBsb2FkaW5nITogYm9vbGVhbjtcclxuICBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgc2VhcmNoRm9yOiBzdHJpbmcgPSAnJztcclxuICBzZWFyY2hTdHJlYW0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuICBtZW51Q2xpY2tlZEl0ZW0hIDogSU5hdmlnYXRvckl0ZW1cclxuICBjaGVja2VkTG9hZGluZ01lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c01lbnVTZXJ2aWNlOiBTeXNNZW51U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjdXJzaXZlU2VydmljZTogUmVjdXJzaXZlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcclxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uU2VydmljZTogT3JnYW5pemF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLm1lbnVDbGlja2VkSXRlbSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lbnVDdXJyZW50Q2xpY2tlZCcpISlcclxuICAgIGlmKCEhdGhpcy5tZW51Q2xpY2tlZEl0ZW0pe1xyXG4gICAgICB0aGlzLm1lbnVDbGlja2VkSXRlbS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmxpbmVySXRlbXMkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmKCEheCAmJiB4Lmxlbmd0aCA+IDAgJiYgdGhpcy5jaGVja2VkTG9hZGluZ01lbnUgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICBsZXQgYXJyYXkgOiBJTmF2aWdhdG9ySXRlbVtdID0gW107XHJcbiAgICAgICAgICAgIGxldCBhcnJheVBhcnJlbnQgOiBJTmF2aWdhdG9ySXRlbVtdID0gW107XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWVudUNsaWNrZWRJdGVtPy50cmVlJFRpZXIgPT0gMil7XHJcbiAgICAgICAgICAgICAgYXJyYXkgPSB4LmZpbHRlcih5ID0+IHkuaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0uaWQpXHJcbiAgICAgICAgICAgICAgYXJyYXlQYXJyZW50ID0geC5maWx0ZXIoeSA9PiB5LmlkID09IHRoaXMubWVudUNsaWNrZWRJdGVtLnRyZWUkUGFyZW50KVxyXG4gICAgICAgICAgICAgIGFycmF5WzBdLnRyZWUkU2VsZWN0ZWQgPXRydWVcclxuICAgICAgICAgICAgICBpZih0aGlzLm1lbnVDbGlja2VkSXRlbS50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgYXJyYXlbMF0udHJlZSRFeHBhbmRlZCA9IHRydWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYXJyYXlQYXJyZW50WzBdLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGFycmF5UGFycmVudFswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLW1lbnUtJyArIGFycmF5UGFycmVudFswXS5pZClcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1tZW51LScgKyBhcnJheVswXS5pZClcclxuICAgICAgICAgICAgICBpZiAoYXJyYXlQYXJyZW50WzBdLnRyZWUkRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVscyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVscy5pZCA9PSBhcnJheVBhcnJlbnRbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxzLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRDaGlsZHJlbi5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHguaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5UGFycmVudFswXS50cmVlJEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmKGFycmF5WzBdLnRyZWUkRXhwYW5kZWQpe1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudDI/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMubWFwKGVscyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGVscy50cmVlJENoaWxkcmVuLm1hcChlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZWwuaWQgPT0gYXJyYXlbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgZWwudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnJvdXRlci51cmwgPT0gZWwudXJsKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGVsLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QucmVtb3ZlKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMubWVudUNsaWNrZWRJdGVtPy50cmVlJFRpZXIgPT0gMyl7IC8vbuG6v3UgbMOgIDMgY+G6pXBcclxuICAgICAgICAgICAgICBhcnJheSA9IHguZmlsdGVyKHkgPT4geS5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS5pZClcclxuICAgICAgICAgICAgICBhcnJheVBhcnJlbnQgPSB4LmZpbHRlcih5ID0+IHkuaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0udHJlZSRQYXJlbnQpXHJcbiAgICAgICAgICAgICAgbGV0IGFycmF5R3JhbmRQYXJyZW50ID0geC5maWx0ZXIoeiA9PiB6LmlkID09IGFycmF5UGFycmVudFswXS5wYXJlbnQpXHJcbiAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1tZW51LScgKyBhcnJheVBhcnJlbnRbMF0uaWQpXHJcbiAgICAgICAgICAgICAgbGV0IGVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4tbWVudS0nICsgYXJyYXlHcmFuZFBhcnJlbnRbMF0uaWQpXHJcbiAgICAgICAgICAgICAgYXJyYXlbMF0udHJlZSRTZWxlY3RlZCA9dHJ1ZVxyXG4gICAgICAgICAgICAgIGFycmF5UGFycmVudFswXS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBhcnJheVBhcnJlbnRbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYXJyYXlHcmFuZFBhcnJlbnRbMF0udHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYXJyYXlHcmFuZFBhcnJlbnRbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5R3JhbmRQYXJyZW50WzBdLnRyZWUkRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QuYWRkKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChlbHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZihlbHMuaWQgPT0gYXJyYXlHcmFuZFBhcnJlbnRbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYoZWxzLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICBlbHMudHJlZSRDaGlsZHJlbi5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIGlmKHguaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgIHgudHJlZSRTZWxlY3RlZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Mj8uY2xhc3NMaXN0LnJlbW92ZSgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoYXJyYXlHcmFuZFBhcnJlbnRbMF0udHJlZSRBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Mj8uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5UGFycmVudFswXS50cmVlJEV4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChlbHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZihlbHMuaWQgPT0gYXJyYXlHcmFuZFBhcnJlbnRbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxzLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRDaGlsZHJlbi5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHguaWQgPT0gYXJyYXlQYXJyZW50WzBdLmlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB4LnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgudHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoeC50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgudHJlZSRDaGlsZHJlbi5tYXAoeSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih5LmlkID09IGFycmF5WzBdLmlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5UGFycmVudFswXS50cmVlJEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoZWNrZWRMb2FkaW5nTWVudSA9IHRydWVcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9LDIwMDApXHJcbiAgICBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxlZnRiYXJSZWR1Y2VkID0geClcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5tbHMudHJhbnMoJ1VJX0NPTU1PTl9QTEFDRV9IT0xERVJfU0VBUkNIX0hFUkUnKSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5zZWFyY2hTdHJlYW0kXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodGV4dCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzd2l0Y2hNYXAgd29ya3MgPT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRvclNlcnZpY2UuZmluZEl0ZW0odGV4dCwgdGhpcy5pdGVtcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuaXRlbXM/Lm1hcCgoaXRlbTogSU5hdmlnYXRvckl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlTmF2aWdhdGlvbkl0ZW0oaXRlbSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5pdGVtc0Vycm9ycy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zb2xlLmdyb3VwKFwiTmF2aWdhdGlvbiBpdGVtcyBlcnJvclwiKTtcclxuICAgICAgICB0aGlzLml0ZW1zRXJyb3JzPy5tYXAoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiAhIXgpLFxyXG4gICAgICAgICAgbWFwKHggPT4geD8uaWQpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHggPT4gdGhpcy5zeXNNZW51U2VydmljZS5yZWFkUGVybWl0dGVkTWVudSh4ISkpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICBib2R5LmlubmVyQm9keS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIGluIHJlY3Vyc2l2ZSBjb2RlIHdlIHdpbGwgcmVhZCBmcm9tIGJvdHRvbSB0byB0b3BcclxuICAgICAgICAgICAgICBpZiAoYS5vcmRlck51bWJlciA+IGIub3JkZXJOdW1iZXIpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICBpZiAoYS5vcmRlck51bWJlciA9PT0gYi5vcmRlck51bWJlcikgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgaWYgKGEub3JkZXJOdW1iZXIgPCBiLm9yZGVyTnVtYmVyKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5saW5lckl0ZW1zJC5uZXh0KEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYm9keS5pbm5lckJvZHkpKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlLmxpbmVyQXJyYXlUb05lc3RlZEFycmF5KFxyXG4gICAgICAgICAgICAgICAgYm9keS5pbm5lckJvZHksXHJcbiAgICAgICAgICAgICAgICBcImlkXCIsXHJcbiAgICAgICAgICAgICAgICBcImNvZGVcIixcclxuICAgICAgICAgICAgICAgIFwicGFyZW50XCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSxcclxuICAgICAgICAgICAgICAgIFwib3JkZXJOdW1cIlxyXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHIubGlzdDtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UubmF2aWdhdGlvbiQubmV4dChyLmxpc3QpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vaWYgKGlzRGV2TW9kZSgpKVxyXG4gICAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KHgsIG51bGwsIDIpLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiAhIXgpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKHghKTtcclxuICAgICAgICAgIGlmICh4Py50cmVlJENoaWxkcmVuICYmIHg/LnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYoISF0aGlzLml0ZW1zKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbGV0IGl0ZW1BY3RpdmF0ZWQgPSB0aGlzLml0ZW1zLmZpbHRlcih5ID0+IHkgIT09IHggJiYgeS5pZCAhPT0geC50cmVlJFBhcmVudCAmJiB5LnRyZWUkU2VsZWN0ZWQgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICBpdGVtQWN0aXZhdGVkPy5tYXAoeiA9PiB6LnRyZWUkU2VsZWN0ZWQgPSBmYWxzZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBlbHNle1xyXG4gICAgICAgICAgICAvLyAgIGxldCBtZW51ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lbnVJdGVtcycpXHJcbiAgICAgICAgICAgIC8vICAgaWYoISFtZW51KXtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuaXRlbXMgPSBKU09OLnBhcnNlKG1lbnUpXHJcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyh0aGlzLml0ZW1zKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCEheCAmJiAhIXgucGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pdGVtcy5tYXAocGFyZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIHBhcmVudC50cmVlJENoaWxkcmVuLm1hcChjaGlsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC50cmVlJENoaWxkcmVuLmxlbmd0aCA9PSAwICYmIGNoaWxkICE9IHgpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKGNoaWxkLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQudHJlZSRDaGlsZHJlbi5tYXAoayA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZihjaGlsZC5pZCAhPSBrLnBhcmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLnRyZWUkU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoaWxkICE9IHggJiYgeC5wYXJlbnQgIT0gY2hpbGQuaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmKHguaWQgPT0gKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLnRyZWUkU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKHgucGFyZW50ID09IGNoaWxkLmlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBrLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lbnVJdGVtcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuaXRlbXMpKTtcclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5saW5lckl0ZW1zJC5zdWJzY3JpYmUoaXRlbXMgPT4ge1xyXG4gICAgICAgICAgaXRlbXM/Lm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1tZW51LScgKyB4LmlkKVxyXG4gICAgICAgICAgICBpZiAoeC50cmVlJEV4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoeC50cmVlJEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UoZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlYXJjaFN0cmVhbSQubmV4dChlKVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaEZvciA9IFwiXCI7XHJcbiAgICB0aGlzLnNlYXJjaFN0cmVhbSQubmV4dChcIlwiKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlTmF2aWdhdGlvbkl0ZW0oaXRlbTogSU5hdmlnYXRvckl0ZW0pIHtcclxuICAgIGlmICghISFpdGVtLmlkKSB7XHJcbiAgICAgIHRoaXMuaXRlbXNFcnJvcnMucHVzaChgVmFsdWUgb2YgcHJvcGVydHkgXCJpZFwiIG9mIG5hdmlnYXRpb24gaXRlbSBcIiR7aXRlbS5jb2RlfVwiIGlzIG5vdCBzZXRgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZmxhdE5hdmlnYXRpb25DaGVjay5maWx0ZXIoeCA9PiB4LmlkID09PSBpdGVtLmlkKTtcclxuICAgIGlmIChmaWx0ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZmxhdE5hdmlnYXRpb25DaGVjay5wdXNoKHtcclxuICAgICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgICBjb3VudDogMCxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLml0ZW1zRXJyb3JzLnB1c2goYER1cGxpY2F0ZWQgTmF2aWdhdGlvbiBpZCAke2l0ZW0uaWR9YCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKGl0ZW0pKSB7XHJcbiAgICAgIGl0ZW0udHJlZSRDaGlsZHJlbj8ubWFwKGNoaWxkID0+IHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlTmF2aWdhdGlvbkl0ZW0oY2hpbGQpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGhhc0NoaWxkcmVuKGl0ZW06IElOYXZpZ2F0b3JJdGVtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICBPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIGlmIChrZXkgPT09IFwidHJlZSRDaGlsZHJlblwiKSB7XHJcbiAgICAgICAgaWYgKCEhaXRlbVsndHJlZSRDaGlsZHJlbiddPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBpdGVtSGFzQ2hpbGRyZW4oaXRlbTogSU5hdmlnYXRvckl0ZW0pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgaWYgKGtleSA9PT0gJ3RyZWUkQ2hpbGRyZW4nKSB7XHJcbiAgICAgICAgaWYgKCEhaXRlbVsndHJlZSRDaGlsZHJlbiddPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgb25JdGVtQ2xpY2soaXRlbTogSU5hdmlnYXRvckl0ZW0pIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmxpbmVySXRlbXMkLnZhbHVlO1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2Uuc2VmdFRvZ2dsZUV4cGFuZFNpYmxpbmdzQ29sbGFwc2UoY3VycmVudCwgaXRlbS5pZCk7XHJcbiAgICB0aGlzLmxpbmVySXRlbXMkLm5leHQoaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4ge1xyXG4gICAgICBpZiAoeCkgeC51bnN1YnNjcmliZSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm5hdmlnYXRvci1jb250YWluZXJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc2VhcmNoLWNvbnRhaW5lclwiIFtjbGFzcy5vcGFjaXR5MF09XCIhIWxlZnRiYXJSZWR1Y2VkXCI+XHJcbiAgICAgICAgPGlucHV0IGlkPVwibmF2aWdhdG9yLXNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiVMOsbSBraeG6v20gLi4uXCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZvclwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY2xlYXItd3JhcHBlclwiICpuZ0lmPVwiISFzZWFyY2hGb3IubGVuZ3RoXCIgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGlkPVwibmF2XCI+XHJcbiAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlICpuZ0lmPVwibG9hZGluZ1wiPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcbiAgICAgICAgPHVsIGlkPVwibWFpbi1tZW51XCIgI21haW5NZW51IFtuZ1N0eWxlXT1cInsgcGFkZGluZzogMH1cIj5cclxuICAgICAgICAgICAgPCEtLSA8bGkgaWQ9XCJmaXJzdC1tZW51LWl0ZW1cIiBjbGFzcz1cImZpcnN0LW1lbnUtaWVtXCI+PGEgdGl0bGU9XCJHbyB0byBob21lIHBhZ2VcIiByb3V0ZXJMaW5rPVwiL1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwibG9nby1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9nb1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwOzwvYT5cclxuICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbbGV2ZWxdPVwiMVwiPjwvYXBwLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFyZW50IHJpZ2h0LXBhcnQtaXRlbVwiICpuZ0lmPVwiISFyaWdodEljb25cIj5cclxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJyaWdodEljb24uZnVuY3Rpb24oKVwiIGNsYXNzPVwibm8tdmVydGljYWwtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1pY29uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidyaWdodC1pY29uICcgKyByaWdodEljb24uZmVhdGhlckNsYXNzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtaWNvbi1iYWRnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmlnaHRJY29uLmJhZGdlQ291bnQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
377
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL25hdmlnYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsS0FBSyxFQUF5QyxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQVFyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQW9CN0gsTUFBTSxPQUFPLGtCQUFrQjtJQTBCN0IsWUFDVSxnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLE1BQWMsRUFDZCxXQUF3QixFQUN4QixtQkFBd0MsRUFDeEMsYUFBNEIsRUFDNUIsR0FBeUIsRUFDekIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsZ0JBQWtDO1FBVmxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTFCNUMsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFFeEQsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRW5DLHdCQUFtQixHQUEyQixFQUFFLENBQUM7UUFDakQsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFJM0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRWhELHVCQUFrQixHQUFZLEtBQUssQ0FBQztJQWNoQyxDQUFDO0lBRUwsUUFBUTtRQUVOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFFLENBQUMsQ0FBQTtRQUM5RSxJQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQztRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdCLElBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksS0FBSyxFQUFDO29CQUN6RCxJQUFJLEtBQUssR0FBc0IsRUFBRSxDQUFDO29CQUNsQyxJQUFJLFlBQVksR0FBc0IsRUFBRSxDQUFDO29CQUN6QyxJQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxJQUFJLENBQUMsRUFBQzt3QkFDdEMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7d0JBQ3RELFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFBO3dCQUN0RSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFFLElBQUksQ0FBQTt3QkFDNUIsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDOzRCQUMvQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTt5QkFDOUI7d0JBQ0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7d0JBQ3JDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO3dCQUNyQyxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7d0JBQ3hFLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTt3QkFDbEUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFOzRCQUNqQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTs0QkFFbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0NBQ3ZCLElBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDO29DQUM5QixHQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztvQ0FDekIsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0NBQ3pCLElBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO3dDQUM5QixHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTs0Q0FDeEIsSUFBRyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFDO2dEQUNqQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzs2Q0FFeEI7d0NBQ0gsQ0FBQyxDQUFDLENBQUE7cUNBQ0g7aUNBRUY7NEJBQ0gsQ0FBQyxDQUFDLENBQUM7eUJBQ0o7NkJBQU07NEJBQ0wsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7eUJBQ3RDO3dCQUNELElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTs0QkFDL0IsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7eUJBQ2pDOzZCQUFNOzRCQUNMLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO3lCQUNwQzt3QkFFRCxJQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUM7NEJBQ3hCLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBOzRCQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDbkIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7b0NBQ3pCLElBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDO3dDQUN0QixFQUFFLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztxQ0FFekI7b0NBQ0QsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFDO3dDQUMzQixFQUFFLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztxQ0FDekI7Z0NBQ0gsQ0FBQyxDQUFDLENBQUE7NEJBQ0osQ0FBQyxDQUFDLENBQUM7eUJBQ0o7NkJBQUs7NEJBQ0osUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7eUJBQ3ZDO3FCQUNGO3lCQUNJLElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxTQUFTLElBQUksQ0FBQyxFQUFDLEVBQUUsY0FBYzt3QkFDM0QsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7d0JBQ3RELFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFBO3dCQUN0RSxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTt3QkFDckUsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO3dCQUN4RSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTt3QkFDOUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRSxJQUFJLENBQUE7d0JBQzVCLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO3dCQUNyQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzt3QkFDckMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzt3QkFDMUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzt3QkFFMUMsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUU7NEJBQ3RDLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBOzRCQUVuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDdkIsSUFBRyxHQUFHLENBQUMsRUFBRSxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQztvQ0FDbkMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0NBQ3pCLEdBQUcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29DQUN6QixvQ0FBb0M7b0NBQ3BDLGlDQUFpQztvQ0FDakMsMkNBQTJDO29DQUMzQywrQkFBK0I7b0NBQy9CLFFBQVE7b0NBQ1IsT0FBTztvQ0FDUCxJQUFJO2lDQUVMOzRCQUNILENBQUMsQ0FBQyxDQUFDO3lCQUNKOzZCQUFNOzRCQUNMLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO3lCQUN2Qzt3QkFDRCxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTs0QkFDcEMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7eUJBQ2xDOzZCQUFNOzRCQUNMLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO3lCQUNyQzt3QkFFRCxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUU7NEJBQ2pDLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBOzRCQUVsQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDdkIsSUFBRyxHQUFHLENBQUMsRUFBRSxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBQztvQ0FDbkMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0NBQ3pCLEdBQUcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29DQUN6QixJQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQzt3Q0FDOUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7NENBQ3hCLElBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDO2dEQUM1QixDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnREFDdkIsQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7NkNBQ3hCOzRDQUNELElBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO2dEQUM1QixDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvREFDdEIsSUFBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUM7d0RBQ3JCLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO3FEQUN4QjtnREFDSCxDQUFDLENBQUMsQ0FBQTs2Q0FDSDt3Q0FDSCxDQUFDLENBQUMsQ0FBQTtxQ0FDSDtpQ0FFRjs0QkFDSCxDQUFDLENBQUMsQ0FBQzt5QkFDSjs2QkFBTTs0QkFDTCxPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTt5QkFDdEM7d0JBQ0QsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFOzRCQUMvQixPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTt5QkFDakM7NkJBQU07NEJBQ0wsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7eUJBQ3BDO3FCQUdGO2lCQUNGO2dCQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUE7WUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtJQUVULENBQUM7SUFFRCxlQUFlO1FBRWIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUMzRSxDQUFBO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUN2RyxDQUFBO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxhQUFhO2lCQUNmLElBQUksQ0FDSCxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUMsQ0FDSDtpQkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FDTCxDQUFDO1lBRUYsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixDQUFDLENBQUMsQ0FBQTtnQkFDRixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEI7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FFckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFDZixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDMUYsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO29CQUM1QixNQUFNLElBQUksR0FBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUU7d0JBQ3JDLG9EQUFvRDt3QkFDcEQsSUFBSSxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXOzRCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7d0JBQzdDLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsV0FBVzs0QkFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDOUMsSUFBSSxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXOzRCQUFFLE9BQU8sQ0FBQyxDQUFDO3dCQUM1QyxPQUFPLENBQUMsQ0FBQztvQkFDWCxDQUFDLENBQUMsQ0FBQTtvQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBRXJCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FDM0MsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLEVBQ0osTUFBTSxFQUNOLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQ3RDLFVBQVUsQ0FDWCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVDLENBQUMsQ0FBQyxDQUNILENBQUE7aUJBQ0Y7cUJBQU07b0JBQ0wsa0JBQWtCO29CQUNsQixpRkFBaUY7aUJBQ2xGO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDckMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUUsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsRUFBRSxhQUFhLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUVuRCxJQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUNmO3dCQUNFLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsQ0FBQTt3QkFDeEcsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUE7cUJBQ2pEO29CQUNELFFBQVE7b0JBQ1IsaURBQWlEO29CQUNqRCxnQkFBZ0I7b0JBQ2hCLG9DQUFvQztvQkFDcEMsOEJBQThCO29CQUU5QixNQUFNO29CQUNOLElBQUk7aUJBRUw7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO3dCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTs0QkFDdEIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0NBQy9CLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7b0NBQ2pELEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2lDQUM3QjtxQ0FBSyxJQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztvQ0FDdEMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0NBQzFCLElBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFDOzRDQUN0QixLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQzt5Q0FDN0I7NkNBQ0c7NENBQ0YsSUFBRyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBQztnREFDcEMsZUFBZTtnREFDZixLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQzs2Q0FDN0I7aURBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUM7Z0RBQzdCLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dEQUMzQiwwQkFBMEI7NkNBQzNCO3lDQUNGO29DQUNILENBQUMsQ0FBQyxDQUFBO2lDQUNIOzRCQUNILENBQUMsQ0FBQyxDQUFBO3dCQUNKLENBQUMsQ0FBQyxDQUFBO3FCQUNIO2lCQUNGO2dCQUVELGlFQUFpRTtZQUVuRSxDQUFDLENBQUMsQ0FDSCxDQUFBO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNqQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNiLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtvQkFDMUQsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO3dCQUNuQixPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtxQkFDbkM7eUJBQU07d0JBQ0wsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7cUJBQ3RDO29CQUNELElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTt3QkFDakIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7cUJBQ2pDO3lCQUFNO3dCQUNMLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO3FCQUNwQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNILENBQUE7UUFFSCxDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBUztRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFvQjtRQUN6QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLENBQUM7U0FDOUY7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLENBQUM7YUFDVCxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBQUEsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFBO1NBQ0g7SUFFSCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQW9CO1FBQzlCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5QixJQUFJLEdBQUcsS0FBSyxlQUFlLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUU7b0JBQ25DLE1BQU0sR0FBRyxJQUFJLENBQUM7aUJBQ2Y7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFvQjtRQUNsQyxJQUFJLE1BQU0sR0FBWSxLQUFLLENBQUM7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxHQUFHLEtBQUssZUFBZSxFQUFFO2dCQUMzQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFFO29CQUNuQyxNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNkLE9BQU87aUJBQ1I7YUFDRjtZQUFBLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBb0I7UUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdDQUFnQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUM7Z0JBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0F2WlUsa0JBQWtCO2tHQUFsQixrQkFBa0IsdVNDekMvQixpekRBc0NNLDJ3Q0RMRixZQUFZLHVWQUNaLFdBQVcsa25CQUNYLGFBQWEsZ0ZBQ2IsMkJBQTJCOzsyRkFLbEIsa0JBQWtCO2tCQVo5QixTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsMkJBQTJCO3FCQUM1Qjt1WEFNc0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUtaLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFN5c01lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3lzLW1lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlY3Vyc2l2ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWN1cnNpdmUuc2VydmljZSc7XHJcbmltcG9ydCB7IElSaWdodEljb24gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lSaWdodEljb24nO1xyXG5pbXBvcnQgeyBJTmF2aWdhdG9ySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSU5hdmlnYXRvckl0ZW0nO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcblxyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBJRmxhdE5hdmlnYXRpb25DaGVjayB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBjb3VudDogbnVtYmVyO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmVsaWItbmF2aWdhdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgSXRlbUNvbXBvbmVudCxcclxuICAgIENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hdmlnYXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBAVmlld0NoaWxkKFwibWFpbk1lbnVcIikgbWFpbk1lbnUhOiBFbGVtZW50UmVmO1xyXG4gIGxpc3RlbmVyRm4hOiAoKSA9PiB2b2lkO1xyXG5cclxuICBpdGVtcyE6IElOYXZpZ2F0b3JJdGVtW107XHJcblxyXG4gIEBJbnB1dCgpIGxvZ29UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcmlnaHRQYXJ0SGVhZGVNZW51SXRlbSE6IElOYXZpZ2F0b3JJdGVtO1xyXG4gIEBJbnB1dCgpIHJpZ2h0SWNvbiE6IElSaWdodEljb247XHJcblxyXG4gIGxpbmVySXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJTmF2aWdhdG9ySXRlbVtdPihbXSk7XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGZsYXROYXZpZ2F0aW9uQ2hlY2s6IElGbGF0TmF2aWdhdGlvbkNoZWNrW10gPSBbXTtcclxuICBpdGVtc0Vycm9yczogc3RyaW5nW10gPSBbXTtcclxuICBsZWZ0YmFyUmVkdWNlZCE6IGJvb2xlYW47XHJcblxyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuICBzZWFyY2hGb3I6IHN0cmluZyA9ICcnO1xyXG4gIHNlYXJjaFN0cmVhbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG4gIG1lbnVDbGlja2VkSXRlbSEgOiBJTmF2aWdhdG9ySXRlbVxyXG4gIGNoZWNrZWRMb2FkaW5nTWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzTWVudVNlcnZpY2U6IFN5c01lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWN1cnNpdmVTZXJ2aWNlOiBSZWN1cnNpdmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMubWVudUNsaWNrZWRJdGVtID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWVudUN1cnJlbnRDbGlja2VkJykhKVxyXG4gICAgaWYoISF0aGlzLm1lbnVDbGlja2VkSXRlbSl7XHJcbiAgICAgIHRoaXMubWVudUNsaWNrZWRJdGVtLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGluZXJJdGVtcyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYoISF4ICYmIHgubGVuZ3RoID4gMCAmJiB0aGlzLmNoZWNrZWRMb2FkaW5nTWVudSA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgIGxldCBhcnJheSA6IElOYXZpZ2F0b3JJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgbGV0IGFycmF5UGFycmVudCA6IElOYXZpZ2F0b3JJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYodGhpcy5tZW51Q2xpY2tlZEl0ZW0/LnRyZWUkVGllciA9PSAyKXtcclxuICAgICAgICAgICAgICBhcnJheSA9IHguZmlsdGVyKHkgPT4geS5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS5pZClcclxuICAgICAgICAgICAgICBhcnJheVBhcnJlbnQgPSB4LmZpbHRlcih5ID0+IHkuaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0udHJlZSRQYXJlbnQpXHJcbiAgICAgICAgICAgICAgYXJyYXlbMF0udHJlZSRTZWxlY3RlZCA9dHJ1ZVxyXG4gICAgICAgICAgICAgIGlmKHRoaXMubWVudUNsaWNrZWRJdGVtLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICBhcnJheVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBhcnJheVBhcnJlbnRbMF0udHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYXJyYXlQYXJyZW50WzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4tbWVudS0nICsgYXJyYXlQYXJyZW50WzBdLmlkKVxyXG4gICAgICAgICAgICAgIGxldCBlbGVtZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLW1lbnUtJyArIGFycmF5WzBdLmlkKVxyXG4gICAgICAgICAgICAgIGlmIChhcnJheVBhcnJlbnRbMF0udHJlZSRFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goZWxzID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYoZWxzLmlkID09IGFycmF5UGFycmVudFswXS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZihlbHMudHJlZSRDaGlsZHJlbi5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGVscy50cmVlJENoaWxkcmVuLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoeC5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeC50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoYXJyYXlQYXJyZW50WzBdLnRyZWUkQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYoYXJyYXlbMF0udHJlZSRFeHBhbmRlZCl7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Mj8uY2xhc3NMaXN0LmFkZCgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5tYXAoZWxzID0+IHtcclxuICAgICAgICAgICAgICAgICAgZWxzLnRyZWUkQ2hpbGRyZW4ubWFwKGVsID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihlbC5pZCA9PSBhcnJheVswXS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbC50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMucm91dGVyLnVybCA9PSBlbC51cmwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgZWwudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudDI/LmNsYXNzTGlzdC5yZW1vdmUoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5tZW51Q2xpY2tlZEl0ZW0/LnRyZWUkVGllciA9PSAzKXsgLy9u4bq/dSBsw6AgMyBj4bqlcFxyXG4gICAgICAgICAgICAgIGFycmF5ID0geC5maWx0ZXIoeSA9PiB5LmlkID09IHRoaXMubWVudUNsaWNrZWRJdGVtLmlkKVxyXG4gICAgICAgICAgICAgIGFycmF5UGFycmVudCA9IHguZmlsdGVyKHkgPT4geS5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS50cmVlJFBhcmVudClcclxuICAgICAgICAgICAgICBsZXQgYXJyYXlHcmFuZFBhcnJlbnQgPSB4LmZpbHRlcih6ID0+IHouaWQgPT0gYXJyYXlQYXJyZW50WzBdLnBhcmVudClcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLW1lbnUtJyArIGFycmF5UGFycmVudFswXS5pZClcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1tZW51LScgKyBhcnJheUdyYW5kUGFycmVudFswXS5pZClcclxuICAgICAgICAgICAgICBhcnJheVswXS50cmVlJFNlbGVjdGVkID10cnVlXHJcbiAgICAgICAgICAgICAgYXJyYXlQYXJyZW50WzBdLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGFycmF5UGFycmVudFswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBhcnJheUdyYW5kUGFycmVudFswXS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBhcnJheUdyYW5kUGFycmVudFswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoYXJyYXlHcmFuZFBhcnJlbnRbMF0udHJlZSRFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudDI/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVscyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVscy5pZCA9PSBhcnJheUdyYW5kUGFycmVudFswXS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZihlbHMudHJlZSRDaGlsZHJlbi5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgIGVscy50cmVlJENoaWxkcmVuLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgaWYoeC5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgeC50cmVlJFNlbGVjdGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QucmVtb3ZlKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChhcnJheUdyYW5kUGFycmVudFswXS50cmVlJEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudDI/LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoYXJyYXlQYXJyZW50WzBdLnRyZWUkRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVscyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVscy5pZCA9PSBhcnJheUdyYW5kUGFycmVudFswXS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZihlbHMudHJlZSRDaGlsZHJlbi5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGVscy50cmVlJENoaWxkcmVuLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoeC5pZCA9PSBhcnJheVBhcnJlbnRbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeC50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih4LnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeC50cmVlJENoaWxkcmVuLm1hcCh5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHkuaWQgPT0gYXJyYXlbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoYXJyYXlQYXJyZW50WzBdLnRyZWUkQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hlY2tlZExvYWRpbmdNZW51ID0gdHJ1ZVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0sMjAwMClcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLnN1YnNjcmliZSh4ID0+IHRoaXMubGVmdGJhclJlZHVjZWQgPSB4KVxyXG4gICAgICApXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm1scy50cmFucygnVUlfQ09NTU9OX1BMQUNFX0hPTERFUl9TRUFSQ0hfSEVSRScpKVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnNlYXJjaFN0cmVhbSRcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKCh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3N3aXRjaE1hcCB3b3JrcyA9PT09PT09PT09PT09PT09PT09PT09PT09PScpO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdG9yU2VydmljZS5maW5kSXRlbSh0ZXh0LCB0aGlzLml0ZW1zKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5pdGVtcz8ubWFwKChpdGVtOiBJTmF2aWdhdG9ySXRlbSkgPT4ge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVOYXZpZ2F0aW9uSXRlbShpdGVtKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLml0ZW1zRXJyb3JzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoXCJOYXZpZ2F0aW9uIGl0ZW1zIGVycm9yXCIpO1xyXG4gICAgICAgIHRoaXMuaXRlbXNFcnJvcnM/Lm1hcChlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+ICEheCksXHJcbiAgICAgICAgICBtYXAoeCA9PiB4Py5pZCksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoeCA9PiB0aGlzLnN5c01lbnVTZXJ2aWNlLnJlYWRQZXJtaXR0ZWRNZW51KHghLCB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUpKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keTtcclxuICAgICAgICAgICAgYm9keS5pbm5lckJvZHkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAvLyBpbiByZWN1cnNpdmUgY29kZSB3ZSB3aWxsIHJlYWQgZnJvbSBib3R0b20gdG8gdG9wXHJcbiAgICAgICAgICAgICAgaWYgKGEub3JkZXJOdW1iZXIgPiBiLm9yZGVyTnVtYmVyKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgaWYgKGEub3JkZXJOdW1iZXIgPT09IGIub3JkZXJOdW1iZXIpIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgIGlmIChhLm9yZGVyTnVtYmVyIDwgYi5vcmRlck51bWJlcikgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMubGluZXJJdGVtcyQubmV4dChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGJvZHkuaW5uZXJCb2R5KSkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgICAgICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZS5saW5lckFycmF5VG9OZXN0ZWRBcnJheShcclxuICAgICAgICAgICAgICAgIGJvZHkuaW5uZXJCb2R5LFxyXG4gICAgICAgICAgICAgICAgXCJpZFwiLFxyXG4gICAgICAgICAgICAgICAgXCJjb2RlXCIsXHJcbiAgICAgICAgICAgICAgICBcInBhcmVudFwiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUsXHJcbiAgICAgICAgICAgICAgICBcIm9yZGVyTnVtXCJcclxuICAgICAgICAgICAgICApLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSByLmxpc3Q7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLm5hdmlnYXRpb24kLm5leHQoci5saXN0KTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvL2lmIChpc0Rldk1vZGUoKSlcclxuICAgICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4LCBudWxsLCAyKSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKHggPT4gISF4KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgdGhpcy5vbkl0ZW1DbGljayh4ISk7XHJcbiAgICAgICAgICBpZiAoeD8udHJlZSRDaGlsZHJlbiAmJiB4Py50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKCEhdGhpcy5pdGVtcylcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtQWN0aXZhdGVkID0gdGhpcy5pdGVtcy5maWx0ZXIoeSA9PiB5ICE9PSB4ICYmIHkuaWQgIT09IHgudHJlZSRQYXJlbnQgJiYgeS50cmVlJFNlbGVjdGVkID09IHRydWUpXHJcbiAgICAgICAgICAgICAgaXRlbUFjdGl2YXRlZD8ubWFwKHogPT4gei50cmVlJFNlbGVjdGVkID0gZmFsc2UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgICAgLy8gICBsZXQgbWVudSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZW51SXRlbXMnKVxyXG4gICAgICAgICAgICAvLyAgIGlmKCEhbWVudSl7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLml0ZW1zID0gSlNPTi5wYXJzZShtZW51KVxyXG4gICAgICAgICAgICAvLyAgICAgY29uc29sZS5sb2codGhpcy5pdGVtcylcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghIXggJiYgISF4LnBhcmVudCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMubWFwKHBhcmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQudHJlZSRDaGlsZHJlbi5tYXAoY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHJlZSRDaGlsZHJlbi5sZW5ndGggPT0gMCAmJiBjaGlsZCAhPSB4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQudHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB9ZWxzZSBpZihjaGlsZC50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLnRyZWUkQ2hpbGRyZW4ubWFwKGsgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYoY2hpbGQuaWQgIT0gay5wYXJlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihjaGlsZCAhPSB4ICYmIHgucGFyZW50ICE9IGNoaWxkLmlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZih4LmlkID09IClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmICh4LnBhcmVudCA9PSBjaGlsZC5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gay50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtZW51SXRlbXMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLml0ZW1zKSk7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGluZXJJdGVtcyQuc3Vic2NyaWJlKGl0ZW1zID0+IHtcclxuICAgICAgICAgIGl0ZW1zPy5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4tbWVudS0nICsgeC5pZClcclxuICAgICAgICAgICAgaWYgKHgudHJlZSRFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHgudHJlZSRBY3RpdmUpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWFyY2hTdHJlYW0kLm5leHQoZSlcclxuICB9XHJcblxyXG4gIGNsZWFyU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hGb3IgPSBcIlwiO1xyXG4gICAgdGhpcy5zZWFyY2hTdHJlYW0kLm5leHQoXCJcIik7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZU5hdmlnYXRpb25JdGVtKGl0ZW06IElOYXZpZ2F0b3JJdGVtKSB7XHJcbiAgICBpZiAoISEhaXRlbS5pZCkge1xyXG4gICAgICB0aGlzLml0ZW1zRXJyb3JzLnB1c2goYFZhbHVlIG9mIHByb3BlcnR5IFwiaWRcIiBvZiBuYXZpZ2F0aW9uIGl0ZW0gXCIke2l0ZW0uY29kZX1cIiBpcyBub3Qgc2V0YCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZsYXROYXZpZ2F0aW9uQ2hlY2suZmlsdGVyKHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmZsYXROYXZpZ2F0aW9uQ2hlY2sucHVzaCh7XHJcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgY291bnQ6IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pdGVtc0Vycm9ycy5wdXNoKGBEdXBsaWNhdGVkIE5hdmlnYXRpb24gaWQgJHtpdGVtLmlkfWApO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5oYXNDaGlsZHJlbihpdGVtKSkge1xyXG4gICAgICBpdGVtLnRyZWUkQ2hpbGRyZW4/Lm1hcChjaGlsZCA9PiB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZU5hdmlnYXRpb25JdGVtKGNoaWxkKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBoYXNDaGlsZHJlbihpdGVtOiBJTmF2aWdhdG9ySXRlbSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgT2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBpZiAoa2V5ID09PSBcInRyZWUkQ2hpbGRyZW5cIikge1xyXG4gICAgICAgIGlmICghIWl0ZW1bJ3RyZWUkQ2hpbGRyZW4nXT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaXRlbUhhc0NoaWxkcmVuKGl0ZW06IElOYXZpZ2F0b3JJdGVtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIGlmIChrZXkgPT09ICd0cmVlJENoaWxkcmVuJykge1xyXG4gICAgICAgIGlmICghIWl0ZW1bJ3RyZWUkQ2hpbGRyZW4nXT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIG9uSXRlbUNsaWNrKGl0ZW06IElOYXZpZ2F0b3JJdGVtKSB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5saW5lckl0ZW1zJC52YWx1ZTtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLnNlZnRUb2dnbGVFeHBhbmRTaWJsaW5nc0NvbGxhcHNlKGN1cnJlbnQsIGl0ZW0uaWQpO1xyXG4gICAgdGhpcy5saW5lckl0ZW1zJC5uZXh0KGl0ZW1zKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHtcclxuICAgICAgaWYgKHgpIHgudW5zdWJzY3JpYmUoKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxufSIsIjxkaXYgY2xhc3M9XCJuYXZpZ2F0b3ItY29udGFpbmVyXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LXNlYXJjaC1jb250YWluZXJcIiBbY2xhc3Mub3BhY2l0eTBdPVwiISFsZWZ0YmFyUmVkdWNlZFwiPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cIm5hdmlnYXRvci1zZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlTDrG0ga2nhur9tIC4uLlwiIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hGb3JcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNsZWFyLXdyYXBwZXJcIiAqbmdJZj1cIiEhc2VhcmNoRm9yLmxlbmd0aFwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci14XCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBpZD1cIm5hdlwiPlxyXG4gICAgICAgIDxjb3JlLWxvYWRpbmctc3VyZmFjZSAqbmdJZj1cImxvYWRpbmdcIj48L2NvcmUtbG9hZGluZy1zdXJmYWNlPlxyXG4gICAgICAgIDx1bCBpZD1cIm1haW4tbWVudVwiICNtYWluTWVudSBbbmdTdHlsZV09XCJ7IHBhZGRpbmc6IDB9XCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGxpIGlkPVwiZmlyc3QtbWVudS1pdGVtXCIgY2xhc3M9XCJmaXJzdC1tZW51LWllbVwiPjxhIHRpdGxlPVwiR28gdG8gaG9tZSBwYWdlXCIgcm91dGVyTGluaz1cIi9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cImxvZ28tbWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvZ29UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAmbmJzcDs8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtaXRlbSBbaXRlbV09XCJpdGVtXCIgW2xldmVsXT1cIjFcIj48L2FwcC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhcmVudCByaWdodC1wYXJ0LWl0ZW1cIiAqbmdJZj1cIiEhcmlnaHRJY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwicmlnaHRJY29uLmZ1bmN0aW9uKClcIiBjbGFzcz1cIm5vLXZlcnRpY2FsLXBhZGRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtaWNvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCIncmlnaHQtaWNvbiAnICsgcmlnaHRJY29uLmZlYXRoZXJDbGFzc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWljb24tYmFkZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJpZ2h0SWNvbi5iYWRnZUNvdW50IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -6,8 +6,8 @@ export class SysMenuService {
|
|
|
6
6
|
constructor(commonHttpRequestService) {
|
|
7
7
|
this.commonHttpRequestService = commonHttpRequestService;
|
|
8
8
|
}
|
|
9
|
-
readPermittedMenu(userId) {
|
|
10
|
-
const fullUrl = api.SYS_MENU_GET_PERMITTED_LINEAR_LIST + '?userId=' + userId;
|
|
9
|
+
readPermittedMenu(userId, appType) {
|
|
10
|
+
const fullUrl = api.SYS_MENU_GET_PERMITTED_LINEAR_LIST + '?userId=' + userId + "&appType=" + appType;
|
|
11
11
|
return this.commonHttpRequestService.makeGetRequest('readPermittedMenu', fullUrl);
|
|
12
12
|
}
|
|
13
13
|
readAll() {
|
|
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
23
23
|
providedIn: 'root'
|
|
24
24
|
}]
|
|
25
25
|
}], ctorParameters: () => [{ type: i1.CommonHttpRequestService }] });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzLW1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3NlcnZpY2VzL3N5cy1tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUs3QyxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtJQUFJLENBQUM7SUFFM0UsaUJBQWlCLENBQUMsTUFBYyxFQUFFLE9BQWU7UUFDL0MsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLGtDQUFrQyxHQUFHLFVBQVUsR0FBRyxNQUFNLEdBQUcsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUNyRyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsaUJBQWlCLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDOzhHQVpVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25IdHRwUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL2NvbW1vbi1odHRwLXJlcXVlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IGFwaSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTeXNNZW51U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlOiBDb21tb25IdHRwUmVxdWVzdFNlcnZpY2UpIHsgfVxyXG5cclxuICByZWFkUGVybWl0dGVkTWVudSh1c2VySWQ6IHN0cmluZywgYXBwVHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZ1bGxVcmwgPSBhcGkuU1lTX01FTlVfR0VUX1BFUk1JVFRFRF9MSU5FQVJfTElTVCArICc/dXNlcklkPScgKyB1c2VySWQgKyBcIiZhcHBUeXBlPVwiICsgYXBwVHlwZTtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZS5tYWtlR2V0UmVxdWVzdCgncmVhZFBlcm1pdHRlZE1lbnUnLCBmdWxsVXJsKTtcclxuICB9XHJcblxyXG4gIHJlYWRBbGwoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZ1bGxVcmwgPSBhcGkuU1lTX01FTlVfUkVBRF9BTEw7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2UubWFrZUdldFJlcXVlc3QoJ3JlYWRBbGwnLCBmdWxsVXJsKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -4320,8 +4320,8 @@ class SysMenuService {
|
|
|
4320
4320
|
constructor(commonHttpRequestService) {
|
|
4321
4321
|
this.commonHttpRequestService = commonHttpRequestService;
|
|
4322
4322
|
}
|
|
4323
|
-
readPermittedMenu(userId) {
|
|
4324
|
-
const fullUrl = api.SYS_MENU_GET_PERMITTED_LINEAR_LIST + '?userId=' + userId;
|
|
4323
|
+
readPermittedMenu(userId, appType) {
|
|
4324
|
+
const fullUrl = api.SYS_MENU_GET_PERMITTED_LINEAR_LIST + '?userId=' + userId + "&appType=" + appType;
|
|
4325
4325
|
return this.commonHttpRequestService.makeGetRequest('readPermittedMenu', fullUrl);
|
|
4326
4326
|
}
|
|
4327
4327
|
readAll() {
|
|
@@ -24042,7 +24042,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
24042
24042
|
}] } });
|
|
24043
24043
|
|
|
24044
24044
|
class NavigatorComponent {
|
|
24045
|
-
constructor(navigatorService, sysMenuService, recursiveService, router, menuService, organizationService, layoutService, mls, authService, alertService) {
|
|
24045
|
+
constructor(navigatorService, sysMenuService, recursiveService, router, menuService, organizationService, layoutService, mls, authService, alertService, appConfigService) {
|
|
24046
24046
|
this.navigatorService = navigatorService;
|
|
24047
24047
|
this.sysMenuService = sysMenuService;
|
|
24048
24048
|
this.recursiveService = recursiveService;
|
|
@@ -24053,6 +24053,7 @@ class NavigatorComponent {
|
|
|
24053
24053
|
this.mls = mls;
|
|
24054
24054
|
this.authService = authService;
|
|
24055
24055
|
this.alertService = alertService;
|
|
24056
|
+
this.appConfigService = appConfigService;
|
|
24056
24057
|
this.linerItems$ = new BehaviorSubject([]);
|
|
24057
24058
|
this.subscriptions = [];
|
|
24058
24059
|
this.flatNavigationCheck = [];
|
|
@@ -24223,7 +24224,7 @@ class NavigatorComponent {
|
|
|
24223
24224
|
});
|
|
24224
24225
|
console.groupEnd();
|
|
24225
24226
|
}
|
|
24226
|
-
this.subscriptions.push(this.authService.data$.pipe(filter$1(x => !!x), map(x => x?.id), switchMap$1(x => this.sysMenuService.readPermittedMenu(x))).subscribe(x => {
|
|
24227
|
+
this.subscriptions.push(this.authService.data$.pipe(filter$1(x => !!x), map(x => x?.id), switchMap$1(x => this.sysMenuService.readPermittedMenu(x, this.appConfigService.APP_TYPE))).subscribe(x => {
|
|
24227
24228
|
if (x.ok && x.status === 200) {
|
|
24228
24229
|
const body = x.body;
|
|
24229
24230
|
body.innerBody.sort((a, b) => {
|
|
@@ -24374,7 +24375,7 @@ class NavigatorComponent {
|
|
|
24374
24375
|
x.unsubscribe();
|
|
24375
24376
|
});
|
|
24376
24377
|
}
|
|
24377
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: NavigatorComponent, deps: [{ token: NavigatorService }, { token: SysMenuService }, { token: RecursiveService }, { token: i1$1.Router }, { token: MenuService }, { token: OrganizationService }, { token: LayoutService }, { token: MultiLanguageService }, { token: AuthService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24378
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: NavigatorComponent, deps: [{ token: NavigatorService }, { token: SysMenuService }, { token: RecursiveService }, { token: i1$1.Router }, { token: MenuService }, { token: OrganizationService }, { token: LayoutService }, { token: MultiLanguageService }, { token: AuthService }, { token: AlertService }, { token: AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24378
24379
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: NavigatorComponent, isStandalone: true, selector: "corelib-navigator", inputs: { logoTemplate: "logoTemplate", rightPartHeadeMenuItem: "rightPartHeadeMenuItem", rightIcon: "rightIcon" }, viewQueries: [{ propertyName: "mainMenu", first: true, predicate: ["mainMenu"], descendants: true }], ngImport: i0, template: "<div class=\"navigator-container\">\r\n\r\n <div class=\"input-search-container\" [class.opacity0]=\"!!leftbarReduced\">\r\n <input id=\"navigator-search\" placeholder=\"T\u00ECm ki\u1EBFm ...\" type=\"text\" [(ngModel)]=\"searchFor\"\r\n (ngModelChange)=\"onSearchChange($event)\">\r\n <div class=\"search-clear-wrapper\" *ngIf=\"!!searchFor.length\" (click)=\"clearSearch()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div id=\"nav\">\r\n <core-loading-surface *ngIf=\"loading\"></core-loading-surface>\r\n <ul id=\"main-menu\" #mainMenu [ngStyle]=\"{ padding: 0}\">\r\n <!-- <li id=\"first-menu-item\" class=\"first-menu-iem\"><a title=\"Go to home page\" routerLink=\"/\">\r\n <span id=\"logo-menu\">\r\n <ng-container [ngTemplateOutlet]=\"logoTemplate\"></ng-container>\r\n </span>\r\n </a>\r\n </li> -->\r\n <ng-container *ngIf=\"items?.length\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <app-item [item]=\"item\" [level]=\"1\"></app-item>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <li class=\"parent right-part-item\" *ngIf=\"!!rightIcon\">\r\n <a (click)=\"rightIcon.function()\" class=\"no-vertical-padding\">\r\n <div class=\"right-icon-wrapper\">\r\n <i [class]=\"'right-icon ' + rightIcon.featherClass\"></i>\r\n <div class=\"right-icon-badge\">\r\n {{ rightIcon.badgeCount }}\r\n </div>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>", styles: [".navigator-container{position:relative;display:block}.navigator-container .input-search-container{margin-left:12px;margin-bottom:var(--size-layout-block-cell-spacing);width:calc(var(--size-left-bar-current-width) - var(--size-left-bar-the-second-icon-left) - var(--size-scrollbar-width) - 1px);border-radius:20px;background-color:#e7e7e7}.navigator-container .input-search-container .search-clear-wrapper{display:block;position:absolute;top:5px;right:20px;width:24px;height:24px;cursor:pointer}.navigator-container .input-search-container .search-clear-wrapper i{font-size:24px;color:#848484}.navigator-container #navigator-search{font-family:Open Sans,sans-serif!important;-webkit-appearance:none;appearance:none;font-size:13px;width:100%;max-width:400px;height:35px;border:none;border-radius:20px;background-color:#e7e7e7;color:#000;padding-left:20px;position:relative;display:inline-block}.navigator-container .search-wrapper{padding:5px;position:relative}.navigator-container #main-menu{height:calc(100vh - var(--size-header-height) - 40px - var(--size-layout-block-cell-spacing) * 2);overflow-x:hidden;overflow-y:auto}.navigator-container ul{padding:0!important}.navigator-container .custom-item:hover{background-color:#eaf1fb}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ItemComponent, selector: "app-item", inputs: ["item", "level"] }, { kind: "component", type: CoreLoadingSurfaceComponent, selector: "core-loading-surface", inputs: ["loading", "height"] }] }); }
|
|
24379
24380
|
}
|
|
24380
24381
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: NavigatorComponent, decorators: [{
|
|
@@ -24385,7 +24386,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
24385
24386
|
ItemComponent,
|
|
24386
24387
|
CoreLoadingSurfaceComponent,
|
|
24387
24388
|
], template: "<div class=\"navigator-container\">\r\n\r\n <div class=\"input-search-container\" [class.opacity0]=\"!!leftbarReduced\">\r\n <input id=\"navigator-search\" placeholder=\"T\u00ECm ki\u1EBFm ...\" type=\"text\" [(ngModel)]=\"searchFor\"\r\n (ngModelChange)=\"onSearchChange($event)\">\r\n <div class=\"search-clear-wrapper\" *ngIf=\"!!searchFor.length\" (click)=\"clearSearch()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div id=\"nav\">\r\n <core-loading-surface *ngIf=\"loading\"></core-loading-surface>\r\n <ul id=\"main-menu\" #mainMenu [ngStyle]=\"{ padding: 0}\">\r\n <!-- <li id=\"first-menu-item\" class=\"first-menu-iem\"><a title=\"Go to home page\" routerLink=\"/\">\r\n <span id=\"logo-menu\">\r\n <ng-container [ngTemplateOutlet]=\"logoTemplate\"></ng-container>\r\n </span>\r\n </a>\r\n </li> -->\r\n <ng-container *ngIf=\"items?.length\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <app-item [item]=\"item\" [level]=\"1\"></app-item>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <li class=\"parent right-part-item\" *ngIf=\"!!rightIcon\">\r\n <a (click)=\"rightIcon.function()\" class=\"no-vertical-padding\">\r\n <div class=\"right-icon-wrapper\">\r\n <i [class]=\"'right-icon ' + rightIcon.featherClass\"></i>\r\n <div class=\"right-icon-badge\">\r\n {{ rightIcon.badgeCount }}\r\n </div>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>", styles: [".navigator-container{position:relative;display:block}.navigator-container .input-search-container{margin-left:12px;margin-bottom:var(--size-layout-block-cell-spacing);width:calc(var(--size-left-bar-current-width) - var(--size-left-bar-the-second-icon-left) - var(--size-scrollbar-width) - 1px);border-radius:20px;background-color:#e7e7e7}.navigator-container .input-search-container .search-clear-wrapper{display:block;position:absolute;top:5px;right:20px;width:24px;height:24px;cursor:pointer}.navigator-container .input-search-container .search-clear-wrapper i{font-size:24px;color:#848484}.navigator-container #navigator-search{font-family:Open Sans,sans-serif!important;-webkit-appearance:none;appearance:none;font-size:13px;width:100%;max-width:400px;height:35px;border:none;border-radius:20px;background-color:#e7e7e7;color:#000;padding-left:20px;position:relative;display:inline-block}.navigator-container .search-wrapper{padding:5px;position:relative}.navigator-container #main-menu{height:calc(100vh - var(--size-header-height) - 40px - var(--size-layout-block-cell-spacing) * 2);overflow-x:hidden;overflow-y:auto}.navigator-container ul{padding:0!important}.navigator-container .custom-item:hover{background-color:#eaf1fb}\n"] }]
|
|
24388
|
-
}], ctorParameters: () => [{ type: NavigatorService }, { type: SysMenuService }, { type: RecursiveService }, { type: i1$1.Router }, { type: MenuService }, { type: OrganizationService }, { type: LayoutService }, { type: MultiLanguageService }, { type: AuthService }, { type: AlertService }], propDecorators: { mainMenu: [{
|
|
24389
|
+
}], ctorParameters: () => [{ type: NavigatorService }, { type: SysMenuService }, { type: RecursiveService }, { type: i1$1.Router }, { type: MenuService }, { type: OrganizationService }, { type: LayoutService }, { type: MultiLanguageService }, { type: AuthService }, { type: AlertService }, { type: AppConfigService }], propDecorators: { mainMenu: [{
|
|
24389
24390
|
type: ViewChild,
|
|
24390
24391
|
args: ["mainMenu"]
|
|
24391
24392
|
}], logoTemplate: [{
|