tnx-shared 5.0.61 → 5.0.63
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/bundles/tnx-shared.umd.js +56 -7
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/components/common-app-component/common-app-component.d.ts +4 -1
- package/components/common-app-component/common-app-component.d.ts.map +1 -1
- package/configs/component-context.constant.d.ts +1 -0
- package/configs/component-context.constant.d.ts.map +1 -1
- package/esm2015/components/common-app-component/app.menu.component.js +2 -2
- package/esm2015/components/common-app-component/common-app-component.js +26 -3
- package/esm2015/configs/component-context.constant.js +3 -2
- package/esm2015/services/menu.service.js +6 -3
- package/esm2015/services/permission.service.js +9 -2
- package/esm2015/services/user.service.js +8 -2
- package/fesm2015/tnx-shared.js +47 -8
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/services/menu.service.d.ts +1 -1
- package/services/menu.service.d.ts.map +1 -1
- package/services/permission.service.d.ts +1 -0
- package/services/permission.service.d.ts.map +1 -1
- package/services/user.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -17,6 +17,7 @@ import { GlobalService } from '../../services/global.service';
|
|
|
17
17
|
import { MenuService } from '../../services/menu.service';
|
|
18
18
|
import { ModuleConfigService } from '../../services/module-config.service';
|
|
19
19
|
import { NotifierService } from '../../services/notifier.service';
|
|
20
|
+
import { PermissionService } from '../../services/permission.service';
|
|
20
21
|
import { SignalRService } from '../../services/signalr.service';
|
|
21
22
|
import { StorageUpdatedService } from '../../services/storage-updated.service';
|
|
22
23
|
import { StorageService } from '../../services/storage.service';
|
|
@@ -53,6 +54,7 @@ export declare class CommonAppComponentComponent implements OnInit, AfterViewIni
|
|
|
53
54
|
private _menuService;
|
|
54
55
|
private _primengConfig;
|
|
55
56
|
private _storageService;
|
|
57
|
+
private _permissionService;
|
|
56
58
|
okButton: ElementRef;
|
|
57
59
|
cancelButton: ElementRef;
|
|
58
60
|
quickNoteBt: ElementRef;
|
|
@@ -91,7 +93,7 @@ export declare class CommonAppComponentComponent implements OnInit, AfterViewIni
|
|
|
91
93
|
readonly keyPressPermissionUtils = "ppppppppp";
|
|
92
94
|
currentKeyPressIndex: number;
|
|
93
95
|
rootData: any;
|
|
94
|
-
constructor(_globalService: GlobalService, _commonService: CommonService, renderer: Renderer2, translate: TranslateService, _oauthService: OAuthService, _authenService: AuthenService, _userService: UserService, _router: Router, _title: Title, _signalRService: SignalRService, _storageUpdatedService: StorageUpdatedService, _customRouteService: CustomRouterService, _applicationContext: ApplicationContextService, _componentContextService: ComponentContextService, _activatedRoute: ActivatedRoute, _deviceDetectorService: DeviceDetectorService, _cd: ChangeDetectorRef, _tnClientService: TnClientService, _coreConfigService: CoreConfigService, _notifierService: NotifierService, _entityMetadataService: EntityMetadataService, _moduleConfigService: ModuleConfigService, _translateService: TranslateService, _messageService: MessageService, _confirmService: ConfirmationService, _menuService: MenuService, _primengConfig: PrimeNGConfig, _storageService: StorageService);
|
|
96
|
+
constructor(_globalService: GlobalService, _commonService: CommonService, renderer: Renderer2, translate: TranslateService, _oauthService: OAuthService, _authenService: AuthenService, _userService: UserService, _router: Router, _title: Title, _signalRService: SignalRService, _storageUpdatedService: StorageUpdatedService, _customRouteService: CustomRouterService, _applicationContext: ApplicationContextService, _componentContextService: ComponentContextService, _activatedRoute: ActivatedRoute, _deviceDetectorService: DeviceDetectorService, _cd: ChangeDetectorRef, _tnClientService: TnClientService, _coreConfigService: CoreConfigService, _notifierService: NotifierService, _entityMetadataService: EntityMetadataService, _moduleConfigService: ModuleConfigService, _translateService: TranslateService, _messageService: MessageService, _confirmService: ConfirmationService, _menuService: MenuService, _primengConfig: PrimeNGConfig, _storageService: StorageService, _permissionService: PermissionService);
|
|
95
97
|
ngOnInit(): void;
|
|
96
98
|
ngAfterViewInit(): void;
|
|
97
99
|
defaultRedirect(): void;
|
|
@@ -130,5 +132,6 @@ export declare class CommonAppComponentComponent implements OnInit, AfterViewIni
|
|
|
130
132
|
onFocusSearchMenuInput(event: any): void;
|
|
131
133
|
handleShowPopupPermissionUtils(event: KeyboardEvent): void;
|
|
132
134
|
private addGuard;
|
|
135
|
+
private clearPermissionCacheByModule;
|
|
133
136
|
}
|
|
134
137
|
//# sourceMappingURL=common-app-component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-app-component.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["components/common-app-component/common-app-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAa,UAAU,EAAuB,SAAS,EAAE,MAAM,EAAE,SAAS,EAAa,MAAM,eAAe,CAAC;AACtJ,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,cAAc,EAA0B,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAc,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAW,YAAY,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAG/E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAGlG,qBAMa,2BAA4B,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS;IAiDrE,cAAc,EAAE,aAAa;IAC7B,cAAc,EAAE,aAAa;IAC7B,QAAQ,EAAE,SAAS;IAC1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,mBAAmB;IACpB,wBAAwB,EAAE,uBAAuB;IACxD,OAAO,CAAC,eAAe;IAChB,sBAAsB,EAAE,qBAAqB;IACpD,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,kBAAkB;IAC1B,SAAS,CAAC,gBAAgB,EAAE,eAAe;IAC3C,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"common-app-component.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["components/common-app-component/common-app-component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-context.constant.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["configs/component-context.constant.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAExB,MAAM,CAAC,IAAI
|
|
1
|
+
{"version":3,"file":"component-context.constant.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["configs/component-context.constant.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAExB,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwDT;IAEF,MAAM,CAAC,WAAW;;;;MAIhB;IAEF,MAAM,CAAC,gBAAgB;;;;;;MAMtB;IAED,MAAM,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoEX;IAEF,MAAM,CAAC,YAAY;;;MAGlB;IAED,MAAM,CAAC,wBAAwB;;;MAG9B;IAED,MAAM,CAAC,qBAAqB;;MAE3B;IAED,MAAM,CAAC,kBAAkB;;;;;MAKxB;IAED,MAAM,CAAC,iBAAiB;;;;;;;;;;;;;;;;;;;MAmBvB;CACJ"}
|
|
@@ -151,7 +151,7 @@ export class AppMenuComponent {
|
|
|
151
151
|
// Nếu là môi trường triển khai thì cộng thêm tiền tố phân hệ vào router link để có thể chuột phải mở tab mới
|
|
152
152
|
funcSetNewTabLink = link => `/${appCodeLowerCase}${link}`;
|
|
153
153
|
}
|
|
154
|
-
this._menuService.renderMenuByAppCode(appCode);
|
|
154
|
+
this._menuService.renderMenuByAppCode(this.environment.scopeName, appCode);
|
|
155
155
|
this.model = this._menuService.getMenuItems();
|
|
156
156
|
this._router.events.pipe(filter(event => event instanceof NavigationEnd))
|
|
157
157
|
.subscribe(event => {
|
|
@@ -282,4 +282,4 @@ AppMenuComponent.ctorParameters = () => [
|
|
|
282
282
|
AppMenuComponent.propDecorators = {
|
|
283
283
|
reset: [{ type: Input }]
|
|
284
284
|
};
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29tbW9uLWFwcC1jb21wb25lbnQvYXBwLm1lbnUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQWdEbEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7SUFRbEQ7SUFDSSw0QkFBNEI7SUFDcEIsT0FBZSxFQUNoQixjQUE2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QUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWU7UUFDekIsTUFBTSxTQUFTLEdBQXFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekYsTUFBTSxVQUFVLEdBQXFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFM0YsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLFNBQVMsQ0FBQyxJQUFJLEdBQUcscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDN0QsVUFBVSxDQUFDLElBQUksR0FBRywyQkFBMkIsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN4RTthQUNJO1lBQ0QsU0FBUyxDQUFDLElBQUksR0FBRyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDckUsVUFBVSxDQUFDLElBQUksR0FBRywyQkFBMkIsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDN0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDeEI7SUFFTCxDQUFDOzs7WUE3SkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixRQUFRLEVBQUU7O0tBRVQ7eUJBQ1E7O0tBRVI7YUFFSjs7O1lBeElRLFdBQVc7WUFOWCxnQkFBZ0I7WUFERCxNQUFNO1lBUXJCLHlCQUF5QjtZQUh6QixhQUFhO1lBSWIsbUJBQW1CO1lBQ25CLEtBQUs7OztvQkF3SVQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VzdG9tUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2N1c3RvbS1yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2FwcGxpY2F0aW9uLWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ1thcHAtc3VibWVudV0nLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNoaWxkIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCIocm9vdCA/IGl0ZW0gOiBpdGVtLml0ZW1zKVwiPlxyXG4gICAgICAgIDxsaSAqbmdJZj1cImNoaWxkLnZpc2libGUgIT09IGZhbHNlXCIgW25nQ2xhc3NdPVwieydhY3RpdmUtbWVudWl0ZW0nOiBjaGlsZC5hY3RpdmF0ZWQsICdhY3RpdmUtbWVudWl0ZW0tMic6ICFyb290fVwiPlxyXG4gICAgICAgICAgICA8YSBbaHJlZl09XCJjaGlsZC5ocmVmXCIgY2xhc3M9XCJyaXBwbGVsaW5rXCIgW2F0dHIudGFiaW5kZXhdPVwiIXZpc2libGUgPyAnLTEnIDogbnVsbFwiIFthdHRyLmxldmVsXT1cImNoaWxkLmxldmVsXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLW1lbnVpdGVtLXJvdXRlcmxpbmsnOiBjaGlsZC5hY3RpdmF0ZWR9XCIgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQsY2hpbGQpXCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKGNoaWxkKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibGV2ZWwgPT0gMFwiIFtuZ0NsYXNzXT1cIidwaSBwaS10aC1sYXJnZSdcIiBbYXR0ci5sZXZlbF09XCJsZXZlbFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibGV2ZWwgPT0gMVwiIFtuZ0NsYXNzXT1cIidwaSBwaS1zdGFyLW8nXCIgW2F0dHIubGV2ZWxdPVwibGV2ZWxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImxldmVsID4gMVwiIFtuZ0NsYXNzXT1cIidwaSBwaS1jaXJjbGUtb24nXCIgW2F0dHIubGV2ZWxdPVwibGV2ZWxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2NoaWxkLmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICA8YiAqbmdJZj1cImNoaWxkLmNvdW50XCIgY2xhc3M9XCJjb3VudC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjaGlsZC5jb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY2hpbGQuaXRlbXNcIiBjbGFzcz1cInBpIHBpLWFuZ2xlLWRvd24gbWVudWl0ZW0tdG9nZ2xlLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPHVsICpuZ0lmPVwiY2hpbGQuaXRlbXNcIiBhcHAtc3VibWVudSBbaXRlbV09XCJjaGlsZFwiIFtsZXZlbF09XCJsZXZlbCArIDFcIiBbdmlzaWJsZV09XCJjaGlsZC5hY3RpdmF0ZWRcIlxyXG4gICAgICAgICAgICBbQGNoaWxkcmVuXT1cIigoX2NvbW1vblNlcnZpY2UuaXNTbGltKCl8fF9jb21tb25TZXJ2aWNlLmlzSG9yaXpvbnRhbCgpKSAmJiByb290ID8gKGNoaWxkLmFjdGl2YXRlZCA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKSA6IGNoaWxkLmFjdGl2YXRlZCkgPyAndmlzaWJsZUFuaW1hdGVkJyA6ICdoaWRkZW5BbmltYXRlZCdcIj5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIGAsXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcignY2hpbGRyZW4nLCBbXHJcbiAgICAgICAgICAgIHN0YXRlKCdoaWRkZW5BbmltYXRlZCcsIHN0eWxlKHtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzBweCdcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZUFuaW1hdGVkJywgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnKidcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaydcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZSgnaGlkZGVuJywgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ25vbmUnXHJcbiAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZUFuaW1hdGVkID0+IGhpZGRlbkFuaW1hdGVkJywgYW5pbWF0ZSgnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJykpLFxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdoaWRkZW5BbmltYXRlZCA9PiB2aXNpYmxlQW5pbWF0ZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSlcclxuICAgICAgICBdKVxyXG4gICAgXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFwcFN1Yk1lbnVDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHtcclxuICAgIEBJbnB1dCgpIGl0ZW06IGFueTtcclxuICAgIEBJbnB1dCgpIHJvb3Q6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbGV2ZWw6IG51bWJlcjtcclxuXHJcbiAgICBhY3RpdmVJbmRleDogbnVtYmVyID0gLTI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy8gcHVibGljIGFwcDogQXBwQ29tcG9uZW50LFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHB1YmxpYyBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfY3VzdG9tUm91dGVyU2VydmljZTogQ3VzdG9tUm91dGVyU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZW1DbGljayhldmVudDogRXZlbnQsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmUgPSAhdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhdm9pZCBwcm9jZXNzaW5nIGRpc2FibGVkIGl0ZW1zXHJcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhY3RpdmF0ZSBjdXJyZW50IGl0ZW0gYW5kIGRlYWN0aXZhdGUgYWN0aXZlIHNpYmxpbmcgaWYgYW55XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uYWN0aXZhdGVkID0gIWl0ZW0uYWN0aXZhdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbS5hY3RpdmF0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZXhlY3V0ZSBjb21tYW5kXHJcbiAgICAgICAgaWYgKGl0ZW0uY29tbWFuZCkge1xyXG4gICAgICAgICAgICBpdGVtLmNvbW1hbmQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgaXRlbTogaXRlbSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGhpZGUgbWVudVxyXG4gICAgICAgIGlmICghaXRlbS5pdGVtcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY29tbW9uU2VydmljZS5pc0hvcml6b250YWwoKSB8fCB0aGlzLl9jb21tb25TZXJ2aWNlLmlzU2xpbSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLnJlc2V0TWVudSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLnJlc2V0TWVudSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLnJvdGF0ZU1lbnVCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5vdmVybGF5TWVudUFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmUgPSAhdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKGl0ZW0ucm91dGVyTGluayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZUVudGVyKGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3QgJiYgdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmUgJiYgKHRoaXMuX2NvbW1vblNlcnZpY2UuaXNIb3Jpem9udGFsKCkgfHwgdGhpcy5fY29tbW9uU2VydmljZS5pc1NsaW0oKSlcclxuICAgICAgICAgICAgJiYgIXRoaXMuX2NvbW1vblNlcnZpY2UuaXNNb2JpbGUoKSAmJiAhdGhpcy5fY29tbW9uU2VydmljZS5pc1RhYmxldCgpKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5hY3RpdmF0ZWQgPSAhaXRlbS5hY3RpdmF0ZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmFjdGl2YXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtbWVudScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDx1bCBhcHAtc3VibWVudSBbaXRlbV09XCJtb2RlbFwiIFtsZXZlbF09XCIwXCIgW3Jvb3RdPVwidHJ1ZVwiIGNsYXNzPVwibGF5b3V0LW1lbnUgbGF5b3V0LW1haW4tbWVudSBjbGVhcmZpeFwiIHZpc2libGU9XCJ0cnVlXCI+PC91bD5cclxuICAgIGAsXHJcbiAgICBzdHlsZXM6IFtgXHJcblxyXG4gICAgYF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSByZXNldDogYm9vbGVhbjtcclxuXHJcbiAgICBtb2RlbDogYW55W10gPSBbXTtcclxuXHJcbiAgICB0aGVtZSA9ICdibHVlJztcclxuICAgIGxheW91dCA9ICdibHVlJztcclxuICAgIHZlcnNpb24gPSAndjMnO1xyXG4gICAgZW52aXJvbm1lbnQ6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9tZW51U2VydmljZTogTWVudVNlcnZpY2UsIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBfYXBwbGljYXRpb25Db250ZXh0OiBBcHBsaWNhdGlvbkNvbnRleHRTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RpdGxlOiBUaXRsZSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgICAgIGNvbnN0IGFwcENvZGUgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBDb2RlO1xyXG4gICAgICAgIGNvbnN0IGFwcENvZGVMb3dlckNhc2UgPSBhcHBDb2RlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgbGV0IGZ1bmNTZXROZXdUYWJMaW5rID0gbGluayA9PiBsaW5rO1xyXG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LmVuYWJsZUJhc2VIcmVmKSB7XHJcbiAgICAgICAgICAgIC8vIE7hur91IGzDoCBtw7RpIHRyxrDhu51uZyB0cmnhu4NuIGtoYWkgdGjDrCBj4buZbmcgdGjDqm0gdGnhu4FuIHThu5EgcGjDom4gaOG7hyB2w6BvIHJvdXRlciBsaW5rIMSR4buDIGPDsyB0aOG7gyBjaHXhu5l0IHBo4bqjaSBt4bufIHRhYiBt4bubaVxyXG4gICAgICAgICAgICBmdW5jU2V0TmV3VGFiTGluayA9IGxpbmsgPT4gYC8ke2FwcENvZGVMb3dlckNhc2V9JHtsaW5rfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX21lbnVTZXJ2aWNlLnJlbmRlck1lbnVCeUFwcENvZGUoYXBwQ29kZSk7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuX21lbnVTZXJ2aWNlLmdldE1lbnVJdGVtcygpO1xyXG5cclxuICAgICAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIGluIHRoaXMubW9kZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5tb2RlbFtpXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9tZW51U2VydmljZS5tZW51Q2hhbmdlZC5zdWJzY3JpYmUocmF3TWVudXMgPT4ge1xyXG4gICAgICAgICAgICAvLyByZWZvcm1hdCBs4bqhaSB0b8OgbiBi4buZIG1lbnVcclxuICAgICAgICAgICAgdGhpcy5kZVF1eVNldE5ld1RhYkxpbmsodGhpcy5tb2RlbCwgZnVuY1NldE5ld1RhYkxpbmssIDEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlUXV5U2V0TmV3VGFiTGluayhtZW51cywgZnVuYywgbGV2ZWwpIHtcclxuICAgICAgICBpZiAoIW1lbnVzIHx8IG1lbnVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWVudXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLmlzUm9vdE1lbnUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnJvdXRlckxpbmspIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm5ld1RhYkxpbmsgPSBmdW5jKGl0ZW0ucm91dGVyTGluayk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5ocmVmID0gaXRlbS5uZXdUYWJMaW5rO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5ocmVmID0gJyMnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaXRlbS5sZXZlbCA9IGxldmVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGVRdXlTZXROZXdUYWJMaW5rKGl0ZW0uaXRlbXMsIGZ1bmMsIGxldmVsICsgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgYWN0aXZlSXRlbShpdGVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaXRlbS5hY3RpdmF0ZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBpbiBpdGVtLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVJdGVtKGl0ZW0uaXRlbXNbaV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5hY3RpdmF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmFjdGl2YXRlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmFjdGl2YXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy50cmltTGluayh0aGlzLl9yb3V0ZXIudXJsKTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFJvdXRlckxpbmsgPSB0aGlzLnRyaW1MaW5rKGl0ZW0ucm91dGVyTGluayk7XHJcblxyXG4gICAgICAgICAgICBpZiAoY3VycmVudFVybCA9PT0gY3VycmVudFJvdXRlckxpbmsgfHwgdGhpcy5fbWVudVNlcnZpY2UuY2hlY2tNYXBwaW5nUm91dGVyTGluayhjdXJyZW50Um91dGVyTGluaywgY3VycmVudFVybCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RpdGxlLnNldFRpdGxlKGAke2l0ZW0ubGFiZWx9IC0gJHt0aGlzLmVudmlyb25tZW50LmFwcE1ldGFkYXRhLm1haW4udGl0bGV9YCk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmFjdGl2YXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpdGVtLmFjdGl2YXRlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbS5hY3RpdmF0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdHJpbUxpbmsob2xkVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghb2xkVXJsKSByZXR1cm4gb2xkVXJsO1xyXG4gICAgICAgIGxldCB1cmwgPSBvbGRVcmw7XHJcbiAgICAgICAgbGV0IGkgPSB1cmwuaW5kZXhPZignIycpO1xyXG4gICAgICAgIGlmIChpID4gMCkgdXJsID0gdXJsLnN1YnN0cmluZygwLCBpKTtcclxuICAgICAgICBpID0gdXJsLmluZGV4T2YoJz8nKTtcclxuICAgICAgICBpZiAoaSA+IDApIHVybCA9IHVybC5zdWJzdHJpbmcoMCwgaSk7XHJcbiAgICAgICAgcmV0dXJuIHVybC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVRoZW1lKHRoZW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCB0aGVtZUxpbms6IEhUTUxMaW5rRWxlbWVudCA9IDxIVE1MTGlua0VsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZW1lLWNzcycpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy52ZXJzaW9uID09PSAndjMnKSB7XHJcbiAgICAgICAgICAgIHRoZW1lTGluay5ocmVmID0gJ2Fzc2V0cy90aGVtZS90aGVtZS0nICsgdGhlbWUgKyAnLmNzcyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGVtZUxpbmsuaHJlZiA9ICdhc3NldHMvdGhlbWUvdGhlbWUtJyArIHRoZW1lICsgJy12NCcgKyAnLmNzcyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnRoZW1lID0gdGhlbWU7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZUxheW91dChsYXlvdXQ6IHN0cmluZywgc3BlY2lhbD86IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCBsYXlvdXRMaW5rOiBIVE1MTGlua0VsZW1lbnQgPSA8SFRNTExpbmtFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXlvdXQtY3NzJyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnZlcnNpb24gPT09ICd2MycpIHtcclxuICAgICAgICAgICAgbGF5b3V0TGluay5ocmVmID0gJ2Fzc2V0cy9sYXlvdXQvY3NzL2xheW91dC0nICsgbGF5b3V0ICsgJy5jc3MnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGF5b3V0TGluay5ocmVmID0gJ2Fzc2V0cy9sYXlvdXQvY3NzL2xheW91dC0nICsgbGF5b3V0ICsgJy12NCcgKyAnLmNzcyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dDtcclxuXHJcbiAgICAgICAgaWYgKHNwZWNpYWwpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5kYXJrTWVudSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdGhlbWVMaW5rOiBIVE1MTGlua0VsZW1lbnQgPSA8SFRNTExpbmtFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVtZS1jc3MnKTtcclxuICAgICAgICBjb25zdCBsYXlvdXRMaW5rOiBIVE1MTGlua0VsZW1lbnQgPSA8SFRNTExpbmtFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXlvdXQtY3NzJyk7XHJcblxyXG4gICAgICAgIGlmICh2ZXJzaW9uID09PSAndjMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmVyc2lvbiA9ICd2Myc7XHJcbiAgICAgICAgICAgIHRoZW1lTGluay5ocmVmID0gJ2Fzc2V0cy90aGVtZS90aGVtZS0nICsgdGhpcy50aGVtZSArICcuY3NzJztcclxuICAgICAgICAgICAgbGF5b3V0TGluay5ocmVmID0gJ2Fzc2V0cy9sYXlvdXQvY3NzL2xheW91dC0nICsgdGhpcy5sYXlvdXQgKyAnLmNzcyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGVtZUxpbmsuaHJlZiA9ICdhc3NldHMvdGhlbWUvdGhlbWUtJyArIHRoaXMudGhlbWUgKyAnLXY0JyArICcuY3NzJztcclxuICAgICAgICAgICAgbGF5b3V0TGluay5ocmVmID0gJ2Fzc2V0cy9sYXlvdXQvY3NzL2xheW91dC0nICsgdGhpcy5sYXlvdXQgKyAnLXY0JyArICcuY3NzJztcclxuICAgICAgICAgICAgdGhpcy52ZXJzaW9uID0gJy12NCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvY29tbW9uLWFwcC1jb21wb25lbnQvYXBwLm1lbnUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQWdEbEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7SUFRbEQ7SUFDSSw0QkFBNEI7SUFDcEIsT0FBZSxFQUNoQixjQUE2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ciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VzdG9tUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2N1c3RvbS1yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2FwcGxpY2F0aW9uLWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ1thcHAtc3VibWVudV0nLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNoaWxkIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCIocm9vdCA/IGl0ZW0gOiBpdGVtLml0ZW1zKVwiPlxyXG4gICAgICAgIDxsaSAqbmdJZj1cImNoaWxkLnZpc2libGUgIT09IGZhbHNlXCIgW25nQ2xhc3NdPVwieydhY3RpdmUtbWVudWl0ZW0nOiBjaGlsZC5hY3RpdmF0ZWQsICdhY3RpdmUtbWVudWl0ZW0tMic6ICFyb290fVwiPlxyXG4gICAgICAgICAgICA8YSBbaHJlZl09XCJjaGlsZC5ocmVmXCIgY2xhc3M9XCJyaXBwbGVsaW5rXCIgW2F0dHIudGFiaW5kZXhdPVwiIXZpc2libGUgPyAnLTEnIDogbnVsbFwiIFthdHRyLmxldmVsXT1cImNoaWxkLmxldmVsXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLW1lbnVpdGVtLXJvdXRlcmxpbmsnOiBjaGlsZC5hY3RpdmF0ZWR9XCIgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQsY2hpbGQpXCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKGNoaWxkKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibGV2ZWwgPT0gMFwiIFtuZ0NsYXNzXT1cIidwaSBwaS10aC1sYXJnZSdcIiBbYXR0ci5sZXZlbF09XCJsZXZlbFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibGV2ZWwgPT0gMVwiIFtuZ0NsYXNzXT1cIidwaSBwaS1zdGFyLW8nXCIgW2F0dHIubGV2ZWxdPVwibGV2ZWxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImxldmVsID4gMVwiIFtuZ0NsYXNzXT1cIidwaSBwaS1jaXJjbGUtb24nXCIgW2F0dHIubGV2ZWxdPVwibGV2ZWxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2NoaWxkLmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICA8YiAqbmdJZj1cImNoaWxkLmNvdW50XCIgY2xhc3M9XCJjb3VudC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjaGlsZC5jb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY2hpbGQuaXRlbXNcIiBjbGFzcz1cInBpIHBpLWFuZ2xlLWRvd24gbWVudWl0ZW0tdG9nZ2xlLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPHVsICpuZ0lmPVwiY2hpbGQuaXRlbXNcIiBhcHAtc3VibWVudSBbaXRlbV09XCJjaGlsZFwiIFtsZXZlbF09XCJsZXZlbCArIDFcIiBbdmlzaWJsZV09XCJjaGlsZC5hY3RpdmF0ZWRcIlxyXG4gICAgICAgICAgICBbQGNoaWxkcmVuXT1cIigoX2NvbW1vblNlcnZpY2UuaXNTbGltKCl8fF9jb21tb25TZXJ2aWNlLmlzSG9yaXpvbnRhbCgpKSAmJiByb290ID8gKGNoaWxkLmFjdGl2YXRlZCA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKSA6IGNoaWxkLmFjdGl2YXRlZCkgPyAndmlzaWJsZUFuaW1hdGVkJyA6ICdoaWRkZW5BbmltYXRlZCdcIj5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIGAsXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcignY2hpbGRyZW4nLCBbXHJcbiAgICAgICAgICAgIHN0YXRlKCdoaWRkZW5BbmltYXRlZCcsIHN0eWxlKHtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzBweCdcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZUFuaW1hdGVkJywgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnKidcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaydcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZSgnaGlkZGVuJywgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ25vbmUnXHJcbiAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZUFuaW1hdGVkID0+IGhpZGRlbkFuaW1hdGVkJywgYW5pbWF0ZSgnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJykpLFxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdoaWRkZW5BbmltYXRlZCA9PiB2aXNpYmxlQW5pbWF0ZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSlcclxuICAgICAgICBdKVxyXG4gICAgXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFwcFN1Yk1lbnVDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHtcclxuICAgIEBJbnB1dCgpIGl0ZW06IGFueTtcclxuICAgIEBJbnB1dCgpIHJvb3Q6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbGV2ZWw6IG51bWJlcjtcclxuXHJcbiAgICBhY3RpdmVJbmRleDogbnVtYmVyID0gLTI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy8gcHVibGljIGFwcDogQXBwQ29tcG9uZW50LFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHB1YmxpYyBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfY3VzdG9tUm91dGVyU2VydmljZTogQ3VzdG9tUm91dGVyU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZW1DbGljayhldmVudDogRXZlbnQsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmUgPSAhdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhdm9pZCBwcm9jZXNzaW5nIGRpc2FibGVkIGl0ZW1zXHJcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhY3RpdmF0ZSBjdXJyZW50IGl0ZW0gYW5kIGRlYWN0aXZhdGUgYWN0aXZlIHNpYmxpbmcgaWYgYW55XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uYWN0aXZhdGVkID0gIWl0ZW0uYWN0aXZhdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbS5hY3RpdmF0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZXhlY3V0ZSBjb21tYW5kXHJcbiAgICAgICAgaWYgKGl0ZW0uY29tbWFuZCkge1xyXG4gICAgICAgICAgICBpdGVtLmNvbW1hbmQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgaXRlbTogaXRlbSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGhpZGUgbWVudVxyXG4gICAgICAgIGlmICghaXRlbS5pdGVtcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY29tbW9uU2VydmljZS5pc0hvcml6b250YWwoKSB8fCB0aGlzLl9jb21tb25TZXJ2aWNlLmlzU2xpbSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLnJlc2V0TWVudSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLnJlc2V0TWVudSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLnJvdGF0ZU1lbnVCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5vdmVybGF5TWVudUFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmUgPSAhdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKGl0ZW0ucm91dGVyTGluayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZUVudGVyKGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3QgJiYgdGhpcy5fY29tbW9uU2VydmljZS5tZW51SG92ZXJBY3RpdmUgJiYgKHRoaXMuX2NvbW1vblNlcnZpY2UuaXNIb3Jpem9udGFsKCkgfHwgdGhpcy5fY29tbW9uU2VydmljZS5pc1NsaW0oKSlcclxuICAgICAgICAgICAgJiYgIXRoaXMuX2NvbW1vblNlcnZpY2UuaXNNb2JpbGUoKSAmJiAhdGhpcy5fY29tbW9uU2VydmljZS5pc1RhYmxldCgpKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5hY3RpdmF0ZWQgPSAhaXRlbS5hY3RpdmF0ZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmFjdGl2YXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtbWVudScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDx1bCBhcHAtc3VibWVudSBbaXRlbV09XCJtb2RlbFwiIFtsZXZlbF09XCIwXCIgW3Jvb3RdPVwidHJ1ZVwiIGNsYXNzPVwibGF5b3V0LW1lbnUgbGF5b3V0LW1haW4tbWVudSBjbGVhcmZpeFwiIHZpc2libGU9XCJ0cnVlXCI+PC91bD5cclxuICAgIGAsXHJcbiAgICBzdHlsZXM6IFtgXHJcblxyXG4gICAgYF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSByZXNldDogYm9vbGVhbjtcclxuXHJcbiAgICBtb2RlbDogYW55W10gPSBbXTtcclxuXHJcbiAgICB0aGVtZSA9ICdibHVlJztcclxuICAgIGxheW91dCA9ICdibHVlJztcclxuICAgIHZlcnNpb24gPSAndjMnO1xyXG4gICAgZW52aXJvbm1lbnQ6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9tZW51U2VydmljZTogTWVudVNlcnZpY2UsIHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBfYXBwbGljYXRpb25Db250ZXh0OiBBcHBsaWNhdGlvbkNvbnRleHRTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RpdGxlOiBUaXRsZSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgICAgIGNvbnN0IGFwcENvZGUgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBDb2RlO1xyXG4gICAgICAgIGNvbnN0IGFwcENvZGVMb3dlckNhc2UgPSBhcHBDb2RlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgbGV0IGZ1bmNTZXROZXdUYWJMaW5rID0gbGluayA9PiBsaW5rO1xyXG4gICAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LmVuYWJsZUJhc2VIcmVmKSB7XHJcbiAgICAgICAgICAgIC8vIE7hur91IGzDoCBtw7RpIHRyxrDhu51uZyB0cmnhu4NuIGtoYWkgdGjDrCBj4buZbmcgdGjDqm0gdGnhu4FuIHThu5EgcGjDom4gaOG7hyB2w6BvIHJvdXRlciBsaW5rIMSR4buDIGPDsyB0aOG7gyBjaHXhu5l0IHBo4bqjaSBt4bufIHRhYiBt4bubaVxyXG4gICAgICAgICAgICBmdW5jU2V0TmV3VGFiTGluayA9IGxpbmsgPT4gYC8ke2FwcENvZGVMb3dlckNhc2V9JHtsaW5rfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX21lbnVTZXJ2aWNlLnJlbmRlck1lbnVCeUFwcENvZGUodGhpcy5lbnZpcm9ubWVudC5zY29wZU5hbWUsIGFwcENvZGUpO1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSB0aGlzLl9tZW51U2VydmljZS5nZXRNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLm1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMubW9kZWxbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fbWVudVNlcnZpY2UubWVudUNoYW5nZWQuc3Vic2NyaWJlKHJhd01lbnVzID0+IHtcclxuICAgICAgICAgICAgLy8gcmVmb3JtYXQgbOG6oWkgdG/DoG4gYuG7mSBtZW51XHJcbiAgICAgICAgICAgIHRoaXMuZGVRdXlTZXROZXdUYWJMaW5rKHRoaXMubW9kZWwsIGZ1bmNTZXROZXdUYWJMaW5rLCAxKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZVF1eVNldE5ld1RhYkxpbmsobWVudXMsIGZ1bmMsIGxldmVsKSB7XHJcbiAgICAgICAgaWYgKCFtZW51cyB8fCBtZW51cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lbnVzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5pc1Jvb3RNZW51KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5uZXdUYWJMaW5rID0gZnVuYyhpdGVtLnJvdXRlckxpbmspO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaHJlZiA9IGl0ZW0ubmV3VGFiTGluaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaHJlZiA9ICcjJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGl0ZW0ubGV2ZWwgPSBsZXZlbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRlUXV5U2V0TmV3VGFiTGluayhpdGVtLml0ZW1zLCBmdW5jLCBsZXZlbCArIDEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgfVxyXG5cclxuICAgIGFjdGl2ZUl0ZW0oaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uYWN0aXZhdGVkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgaW4gaXRlbS5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlSXRlbShpdGVtLml0ZW1zW2ldKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uYWN0aXZhdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXRlbS5hY3RpdmF0ZWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5hY3RpdmF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMudHJpbUxpbmsodGhpcy5fcm91dGVyLnVybCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRSb3V0ZXJMaW5rID0gdGhpcy50cmltTGluayhpdGVtLnJvdXRlckxpbmspO1xyXG5cclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRVcmwgPT09IGN1cnJlbnRSb3V0ZXJMaW5rIHx8IHRoaXMuX21lbnVTZXJ2aWNlLmNoZWNrTWFwcGluZ1JvdXRlckxpbmsoY3VycmVudFJvdXRlckxpbmssIGN1cnJlbnRVcmwpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90aXRsZS5zZXRUaXRsZShgJHtpdGVtLmxhYmVsfSAtICR7dGhpcy5lbnZpcm9ubWVudC5hcHBNZXRhZGF0YS5tYWluLnRpdGxlfWApO1xyXG4gICAgICAgICAgICAgICAgaXRlbS5hY3RpdmF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaXRlbS5hY3RpdmF0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uYWN0aXZhdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRyaW1MaW5rKG9sZFVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIW9sZFVybCkgcmV0dXJuIG9sZFVybDtcclxuICAgICAgICBsZXQgdXJsID0gb2xkVXJsO1xyXG4gICAgICAgIGxldCBpID0gdXJsLmluZGV4T2YoJyMnKTtcclxuICAgICAgICBpZiAoaSA+IDApIHVybCA9IHVybC5zdWJzdHJpbmcoMCwgaSk7XHJcbiAgICAgICAgaSA9IHVybC5pbmRleE9mKCc/Jyk7XHJcbiAgICAgICAgaWYgKGkgPiAwKSB1cmwgPSB1cmwuc3Vic3RyaW5nKDAsIGkpO1xyXG4gICAgICAgIHJldHVybiB1cmwudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VUaGVtZSh0aGVtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdGhlbWVMaW5rOiBIVE1MTGlua0VsZW1lbnQgPSA8SFRNTExpbmtFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVtZS1jc3MnKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gJ3YzJykge1xyXG4gICAgICAgICAgICB0aGVtZUxpbmsuaHJlZiA9ICdhc3NldHMvdGhlbWUvdGhlbWUtJyArIHRoZW1lICsgJy5jc3MnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhlbWVMaW5rLmhyZWYgPSAnYXNzZXRzL3RoZW1lL3RoZW1lLScgKyB0aGVtZSArICctdjQnICsgJy5jc3MnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy50aGVtZSA9IHRoZW1lO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VMYXlvdXQobGF5b3V0OiBzdHJpbmcsIHNwZWNpYWw/OiBib29sZWFuKSB7XHJcbiAgICAgICAgY29uc3QgbGF5b3V0TGluazogSFRNTExpbmtFbGVtZW50ID0gPEhUTUxMaW5rRWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5b3V0LWNzcycpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy52ZXJzaW9uID09PSAndjMnKSB7XHJcbiAgICAgICAgICAgIGxheW91dExpbmsuaHJlZiA9ICdhc3NldHMvbGF5b3V0L2Nzcy9sYXlvdXQtJyArIGxheW91dCArICcuY3NzJztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxheW91dExpbmsuaHJlZiA9ICdhc3NldHMvbGF5b3V0L2Nzcy9sYXlvdXQtJyArIGxheW91dCArICctdjQnICsgJy5jc3MnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XHJcblxyXG4gICAgICAgIGlmIChzcGVjaWFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbW1vblNlcnZpY2UuZGFya01lbnUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHRoZW1lTGluazogSFRNTExpbmtFbGVtZW50ID0gPEhUTUxMaW5rRWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlbWUtY3NzJyk7XHJcbiAgICAgICAgY29uc3QgbGF5b3V0TGluazogSFRNTExpbmtFbGVtZW50ID0gPEhUTUxMaW5rRWxlbWVudD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5b3V0LWNzcycpO1xyXG5cclxuICAgICAgICBpZiAodmVyc2lvbiA9PT0gJ3YzJykge1xyXG4gICAgICAgICAgICB0aGlzLnZlcnNpb24gPSAndjMnO1xyXG4gICAgICAgICAgICB0aGVtZUxpbmsuaHJlZiA9ICdhc3NldHMvdGhlbWUvdGhlbWUtJyArIHRoaXMudGhlbWUgKyAnLmNzcyc7XHJcbiAgICAgICAgICAgIGxheW91dExpbmsuaHJlZiA9ICdhc3NldHMvbGF5b3V0L2Nzcy9sYXlvdXQtJyArIHRoaXMubGF5b3V0ICsgJy5jc3MnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhlbWVMaW5rLmhyZWYgPSAnYXNzZXRzL3RoZW1lL3RoZW1lLScgKyB0aGlzLnRoZW1lICsgJy12NCcgKyAnLmNzcyc7XHJcbiAgICAgICAgICAgIGxheW91dExpbmsuaHJlZiA9ICdhc3NldHMvbGF5b3V0L2Nzcy9sYXlvdXQtJyArIHRoaXMubGF5b3V0ICsgJy12NCcgKyAnLmNzcyc7XHJcbiAgICAgICAgICAgIHRoaXMudmVyc2lvbiA9ICctdjQnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbn1cclxuIl19
|