ngx-histaff-alpha 2.0.2 → 2.0.3
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.
|
@@ -101,6 +101,10 @@ export class CoreOrgTreeComponent extends CoreFormControlBaseComponent {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
ngOnInit() {
|
|
104
|
+
const appMenu = document.getElementById("mkf-menu-state");
|
|
105
|
+
if (appMenu !== null && appMenu !== undefined) {
|
|
106
|
+
appMenu.checked = false;
|
|
107
|
+
}
|
|
104
108
|
this.instanceNumber = new Date().getTime();
|
|
105
109
|
const newInstance = {
|
|
106
110
|
instanceNumber: this.instanceNumber,
|
|
@@ -450,4 +454,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
450
454
|
type: ViewChild,
|
|
451
455
|
args: ['reducedIconWrapper']
|
|
452
456
|
}] } });
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmctdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLEtBQUssRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBOEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZMLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQztBQVF0SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFN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QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNPLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNNLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBJbnB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc3dpdGNoTWFwLCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUmVjdXJzaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY3Vyc2l2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZU9yZ1RyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1vcmctdHJlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBJT3JnVHJlZUl0ZW0sIElPcmdUcmVlTGluZXJJdGVtIH0gZnJvbSAnLi9JT3JnVHJlZUl0ZW0nO1xyXG5cclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQ29yZU9yZ1RyZWVJbnN0YW5jZSwgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZ2FuaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IGxpbmVyX3RvX25lc3RlZF9hcnJheV9zY3JpcHQgfSBmcm9tICcuLi8uLi8uLi8uLi9hc3NldHMvanMvcmVzY3VzaXZlX3drJ1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgQ29yZUxvYWRpbmdTdXJmYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVJlZHVjZXJJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1yZWR1Y2VyLWljb24vY29yZS1yZWR1Y2VyLWljb24vY29yZS1yZWR1Y2VyLWljb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0IGVudW0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB7XHJcbiAgQUNUSVZBVEVEX1NJTkdMRSA9ICdBQ1RJVkFURURfU0lOR0xFJyxcclxuICBBQ1RJVkFURURfSU5IRVJJVEFOQ0UgPSAnQUNUSVZBVEVEX0lOSEVSSVRBTkNFJyxcclxuICBDSEVDS0VEID0gJ0NIRUNLRUQnLFxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtb3JnLXRyZWUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBDb3JlUmVkdWNlckljb25Db21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVPcmdUcmVlQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZU9yZ1RyZWVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIGxpbmVDb2xvcjogc3RyaW5nID0gJ3RyYW5zcGFyZW50JztcclxuICBASW5wdXQoKSBmdWxsV2lkdGhNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhY2Nlc3Nvck1vZGUhOiBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlO1xyXG4gIEBJbnB1dCgpIGZ1bGxSZW5kZXJpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjsgLy8gQ2hp4buBdSBjYW8gY+G7p2EgQ29yZU9yZ1RyZWUgY+G6p24gxJHGsOG7o2MgdHJ1eeG7gW4gdsOgbyFcclxuICBASW5wdXQoKSBkaXNhYmxlZExvb3BFeHBhbmQhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0luaGVyaXRhbmNlITogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIGl0ZW1Eb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2Rpc3BsYXlDb250ZW50JykgZGlzcGxheUNvbnRlbnQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3JlZHVjZWRJY29uV3JhcHBlcicpIHJlZHVjZWRJY29uV3JhcHBlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG92ZXJyaWRlIHZhbHVlITogbnVtYmVyW107XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG9iajtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuYWNjZXNzb3JNb2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEOlxyXG4gICAgICAgIGlmICghIW9iaikge1xyXG4gICAgICAgICAgY29uc3QgY2hlY2tlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICB0aGlzLmNoZWNrZWRJZHMgPSBvYmo7IC8vIDw9PT0gMjQvMTAvMjAyM1xyXG4gICAgICAgICAgb2JqLm1hcCh4ID0+IGNoZWNrZWRLZXlzLnB1c2goeC50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlLndyaXRlVmFsdWVDaGVja2VkKGNoZWNrZWRLZXlzLCB0aGlzLmRhdGEsIHRoaXMuZGlzYWJsZWRMb29wRXhwYW5kKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX1NJTkdMRTpcclxuICAgICAgY2FzZSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9JTkhFUklUQU5DRTpcclxuICAgICAgICBpZiAoISFvYmopIHtcclxuICAgICAgICAgIGNvbnN0IGFjdGl2YXRlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICBvYmoubWFwKHggPT4gYWN0aXZhdGVkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZS53cml0ZVZhbHVlQWN0aXZhdGVkKGFjdGl2YXRlZEtleXMsIHRoaXMuZGF0YSwgdGhpcy5kaXNhYmxlZExvb3BFeHBhbmQpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGF0YSAmJiAhIXRoaXMuZGF0YT8ubGVuZ3RoKSB0aGlzLmRhdGFbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSB7XHJcblxyXG4gICAgfSBlbHNlIC8qIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX1NJTkdMRSBvciBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9JTkhFUklUQU5DRSAqLyB7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBjaGVja2VkSWRzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAvLyBmb3IgZGVidWdnaW5nXHJcbiAgLy8gYWN0aXZlSWRzU3RyaW5nITogc3RyaW5nOyAgXHJcbiAgZGF0YSE6IElPcmdUcmVlSXRlbVtdO1xyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgbGlubmVyT3JnQXJyYXkhOiBJT3JnVHJlZUxpbmVySXRlbVtdO1xyXG4gIHNlYXJjaCE6IHN0cmluZztcclxuICBzZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fUExBQ0VfSE9MREVSX1NFQVJDSF9PUkc7XHJcblxyXG4gIGluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgY2hlY2tJbmhlcml0YW5jZTogYm9vbGVhbiA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWUgaXMgdHJ1ZVxyXG4gIHNob3dEaXNzb2x2ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZVxyXG4gIHNlbGVjdGVkS2V5ITogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHNlbGVjdGVkSXRlbSE6IElPcmdUcmVlTGluZXJJdGVtO1xyXG4gIGxhbmchOiBzdHJpbmc7XHJcbiAgLy9yZWR1Y2VkJCE6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuXHJcbiAgaW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgc2Nyb2xsQ29udGFpbmVySGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vcHVibGljIG92ZXJyaWRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWN1cnNpdmVTZXJ2aWNlOiBSZWN1cnNpdmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVPcmdUcmVlU2VydmljZTogQ29yZU9yZ1RyZWVTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSBjb3JlT3JnVHJlZVN0YXRlOiBDb3JlT3JnVHJlZVN0YXRlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHB1YmxpYyBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoLyppbmplY3RvciovKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyB0aGlzLnJlZHVjZWQkID0gdGhpcy5jb3JlT3JnVHJlZVN0YXRlLmNvcmVPcmdUcmVlUmVkdWNlZCQ7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXppbmcgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snaGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5yZXNpemVIZWlnaHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuaW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IG5ld0luc3RhbmNlOiBJQ29yZU9yZ1RyZWVJbnN0YW5jZSA9IHtcclxuICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuaW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgIHNlbGVjdGVkS2V5JDogbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCksXHJcbiAgICAgIGFjdGl2ZUtleXMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSksXHJcbiAgICAgIGNoZWNrZWRLZXlzJDogbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pLFxyXG4gICAgICBleHBhbmRlZEtleXMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSksXHJcbiAgICAgIGNoZWNrSW5oZXJpdGFuY2UkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpXHJcbiAgICB9XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzLnB1c2gobmV3SW5zdGFuY2UpXHJcblxyXG4gICAgLy8gQ2hlY2sgeGVtIGNoaeG7gXUgY2FvIGhlaWdodCBjw7MgxJHGsOG7o2MgdHJ1eeG7gW4gdsOgbyBoYXkga2jDtG5nXHJcbiAgICBpZiAodGhpcy5oZWlnaHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuKFwiQ29yZU9yZ1RyZWUga2jDtG5nIG5o4bqtbiDEkcaw4bujYyBjaGnhu4F1IGNhbyAoaGVpZ2h0KSB0cnV54buBbiB2w6BvIHThu6sgbOG7m3Agbmdvw6BpLiBDaGnhu4F1IGNhbyBt4bq3YyDEkeG7i25oIHPhur0gxJHGsOG7o2MgdMOtbmggdG/DoW4gZOG7sWEgdsOgbyBi4buRIGPhu6VjIGNow61uaC5cIiwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UuY29udGVudENvbnRhaW5lckhlaWdodCQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgLy8gYmFzaWNTcGFjaW5nIGzDoCBwYWRkaW5nQm90dG9tIGPhu6dhIGzhu5twIGNvbnRlbnQtY29udGFpbmVyXHJcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IHggLSB0aGlzLmxheW91dFNlcnZpY2UuY29yZVBhZ2VIZWFkZXJIZWlnaHQgLSB0aGlzLmxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmxpbmVyRGF0YSQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5saW5uZXJPcmdBcnJheSA9IHg7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5zdWJzY3JpYmUoKHgpID0+IHtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJCBjaGFuZ2VzXCIsIHgpXHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0FjdGl2ZUlkczogbnVtYmVyW10gPSBbXTtcclxuICAgICAgICB4LmFjdGl2ZUtleXMubWFwKChrKSA9PiB7XHJcbiAgICAgICAgICBuZXdBY3RpdmVJZHMucHVzaChOdW1iZXIoaykpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlSWRzID0gbmV3QWN0aXZlSWRzO1xyXG4gICAgICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSAhPT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5hY3RpdmVJZHM7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuYWN0aXZlSWRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEtleSA9IHguc2VsZWN0ZWRLZXk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnNlYXJjaCRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcigoeCkgPT4geCAhPT0gbnVsbCksXHJcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHRleHQpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3N3aXRjaE1hcCB3b3JrcycpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWN1cnNpdmVTZXJ2aWNlLmZpbmRJdGVtKHRleHQsIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJFxyXG4gICAgICAgIC5waXBlKGZpbHRlcigodmFsdWUpID0+ICEhIXRoaXMuaW5pdGlhbGl6aW5nICYmICEhdmFsdWUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY29yZU9yZ1RyZWVTdGF0dXMnLCBKU09OLnN0cmluZ2lmeSh4KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoKHgpID0+ICh0aGlzLmxhbmcgPSB4KSkpO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplSGVpZ2h0KCk6IHZvaWQge1xyXG5cclxuICAgIC8vIGhlaWdodCBpcyBub3QgZ2l2ZW4gYW5kIHRoZSB0cmVlIHJlc2l6ZSBhcyBzdGFuZGFyZFxyXG4gICAgaWYgKCEhIXRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgIGNvbnN0IHNpemVIZWFkZXJIZWlnaHQgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHNpemVDb3JlUGFnZUhlYWRlckhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtY29yZS1wYWdlLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBzaXplSGVhZGVySGVpZ2h0IC0gc2l6ZUNvcmVQYWdlSGVhZGVySGVpZ2h0O1xyXG5cclxuICAgICAgY29uc3QgcGFnZUhlYWRlckhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtY29yZS1wYWdlLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBwYWdpbmF0aW9uSGVpZ2h0ID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1jb3JlLXBhZ2luYXRpb24taGVpZ2h0JylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBzaXplTWFyZ2luQ29yZVBhZ2luYXRpb25GdWxsID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1tYXJnaW4tY29yZS1wYWdpbmF0aW9uJylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG5cclxuXHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lckhlaWdodCAtIHBhZ2VIZWFkZXJIZWlnaHQgLSBwYWdpbmF0aW9uSGVpZ2h0ICsgc2l6ZU1hcmdpbkNvcmVQYWdpbmF0aW9uRnVsbDtcclxuICAgICAgY29uc29sZS5sb2coaGVpZ2h0KTtcclxuXHJcbiAgICAgIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICctLWhlaWdodCcsIGhlaWdodCArICdweCdcclxuICAgICAgKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCdcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uub3JnVHJlZURhdGEkLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0geDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwibmV3IERhdGEgY29taW5nXCIsIHRoaXMuZGF0YSwgbmV3IERhdGUoKS5nZXRUaW1lKCkpXHJcbiAgICAgICAgICBpZiAoISF0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhLmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25JdGVtQ2xpY2tMb2NhbChlOiBJT3JnVHJlZUl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMubGlubmVyT3JnQXJyYXkubWFwKCh4KSA9PiAoeC5hY3RpdmUgPSBmYWxzZSkpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmJ1aWxkVHJlZURhdGEoKSk7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZUl0ZW0oZTogSU9yZ1RyZWVJdGVtKSB7XHJcbiAgICBjb25zdCBjbG9uZUNvcHk6IElPcmdUcmVlTGluZXJJdGVtW10gPSBKU09OLnBhcnNlKFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmxpbm5lck9yZ0FycmF5KVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZpbHRlciA9IGNsb25lQ29weS5maWx0ZXIoKHgpID0+IHguaWQgPT09IGUuaWQpO1xyXG5cclxuICAgIGlmIChmaWx0ZXIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGZpbHRlclswXS5leHBhbmQgPSAhISFlLmV4cGFuZDtcclxuICAgIH1cclxuICAgIHRoaXMubGlubmVyT3JnQXJyYXkgPSBjbG9uZUNvcHk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYnVpbGRUcmVlRGF0YSgpKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkVHJlZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGNsb25lQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5saW5uZXJPcmdBcnJheSkpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAvLyBDcmVhdGUgYSBuZXdcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwi8J+fovCfn6IgV29ya2VyIHdvcmtzXCIpO1xyXG5cclxuICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihsaW5lcl90b19uZXN0ZWRfYXJyYXlfc2NyaXB0KTtcclxuICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhLmxpc3Q7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5kYXRhICYmICEhdGhpcy5kYXRhPy5sZW5ndGgpIHRoaXMuZGF0YVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgIGxpc3Q6IGNsb25lQ29weSxcclxuICAgICAgICBrZXlGaWVsZDogJ2lkJyxcclxuICAgICAgICB0aXRsZUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgcGFyZW50RmllbGQ6ICdwYXJlbnRJZCcsXHJcbiAgICAgICAgYWN0aXZlRmllbGQ6ICdhY3RpdmUnLFxyXG4gICAgICAgIC8vaW5oZXJpdGFudEFjdGl2ZUZpZWxkOiAnaW5oZXJpdGFudEFjdGl2ZScsXHJcbiAgICAgICAgY2hlY2tlZEZpZWxkOiAnY2hlY2tlZCcsXHJcbiAgICAgICAgZXhwYW5kZWRGaWVsZDogJ2V4cGFuZCcsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gV2ViIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudC5cclxuICAgICAgLy8gWW91IHNob3VsZCBhZGQgYSBmYWxsYmFjayBzbyB0aGF0IHlvdXIgcHJvZ3JhbSBzdGlsbCBleGVjdXRlcyBjb3JyZWN0bHkuXHJcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2VcclxuICAgICAgICAgIC5saW5lckFycmF5VG9OZXN0ZWRBcnJheShcclxuICAgICAgICAgICAgY2xvbmVDb3B5LFxyXG4gICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAnbmFtZScsXHJcbiAgICAgICAgICAgICdwYXJlbnRJZCcsXHJcbiAgICAgICAgICAgICdhY3RpdmUnLFxyXG4gICAgICAgICAgICAnY2hlY2tlZCcsXHJcbiAgICAgICAgICAgICdleHBhbmQnLFxyXG4gICAgICAgICAgICAvL3N0YXR1c1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgob2JqKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IG9iai5saXN0O1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkV4cGFuZFRvZ2dsZXJDbGljayhlOiBJT3JnVHJlZUl0ZW0sIGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICFlLnRyZWUkRXhwYW5kZWQ7XHJcbiAgICBlLnRyZWUkRXhwYW5kZWQgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICAvLyB1cGRhdGluZyBzdGF0dXMgd2l0aCBuZXdWYWx1ZVxyXG4gICAgY29uc3QgY3VycmVudEV4cGFuZGVkSWRzID1cclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWU/LmV4cGFuZGVkS2V5cztcclxuICAgIGxldCBuZXdFeHBhbmRlZElkcyA9IGN1cnJlbnRFeHBhbmRlZElkcz8uZmlsdGVyKFxyXG4gICAgICAoXykgPT4gISEhY3VycmVudEV4cGFuZGVkSWRzLmluY2x1ZGVzKGUuaWQudG9TdHJpbmcoKSlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKG5ld1ZhbHVlKSB7XHJcbiAgICAgIG5ld0V4cGFuZGVkSWRzPy5wdXNoKGUuaWQudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3RXhwYW5kZWRJZHM/LnNvcnQoKTtcclxuXHJcbiAgICBjb25zdCBuZXdFeHBhbmRlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBuZXdFeHBhbmRlZElkcy5tYXAoKHgpID0+IG5ld0V4cGFuZGVkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG5cclxuICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgIGV4cGFuZGVkS2V5czogbmV3RXhwYW5kZWRLZXlzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DaGVjayhlOiBJT3JnVHJlZUl0ZW0sIG5ld1ZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1DbGljaz8uZW1pdChlKTtcclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSAhPT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSByZXR1cm47XHJcblxyXG4gICAgLy8gV2UgaGF2ZSB0aGlzIHZhciB0byBob2xkIG5vZGVzIHRoYXQgYXJlIGJlaW5nIGNoYW5nZWRcclxuICAgIGxldCB0b2dnbGVkSWRzOiBudW1iZXJbXTtcclxuICAgIC8vIFdlIHNob3VsZCBjYWxjdWxhdGUgYSBuZXcgc3RhdGUgaW50byB0aGlzIHZhcjogXHJcbiAgICBjb25zdCBuZXdDaGVja2VkSWRzOiBudW1iZXJbXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGVja2VkSWRzKSk7XHJcblxyXG4gICAgLy8gV2Ugd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgdG9nZ2xlZElkcyBjaGFuZ2VkXHJcbiAgICBjb25zdCBjaGFuZ2VWYWx1ZSA9ICgpID0+IHtcclxuXHJcbiAgICAgIC8vIElmIG5ld1ZhbHVlID09PSB0cnVlLCB3ZSB3aWxsIGRpc2N0aW50bHkgcHVzaCBjaGFuZ2VkIGlkcyB0byB0aGUgc3RhdGVcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHdpbGwgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgc3RhdGVcclxuICAgICAgaWYgKCEhbmV3VmFsdWUpIHtcclxuICAgICAgICB0b2dnbGVkSWRzLm1hcCh4ID0+IHtcclxuICAgICAgICAgIGlmICghISFuZXdDaGVja2VkSWRzLmluY2x1ZGVzKHgpKSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNrZWRJZHMucHVzaCh4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC8vIFRoZW4gYXNpZ24gdGhlIHN0YXRlIHRvIHRoZSBuZXdDaGVja2VkSWRzXHJcbiAgICAgICAgdGhpcy5jaGVja2VkSWRzID0gbmV3Q2hlY2tlZElkcztcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3Q2hlY2tlZElkcy5maWx0ZXIoeCA9PiAhISF0b2dnbGVkSWRzLmluY2x1ZGVzKHgpKVxyXG4gICAgICAgIC8vIFRoZW4gYXNpZ24gdGhlIHN0YXRlIHRvIHRoZSBmaWx0ZXJcclxuICAgICAgICB0aGlzLmNoZWNrZWRJZHMgPSBmaWx0ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFmdGVyIHRoZSBjYXNlcyBvZiBpZi9lbHNlLCBtYWtlIHRoZSBjb250cm9sIGNoYW5nZSB3aXRoIG9uQ2hhbmdlXHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNoZWNrZWRJZHM7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5jaGVja2VkSWRzKTtcclxuICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyogc3RhcnQ6IFRISVMgQ09ERSBTQ09QRSBjYWxjdWxhdGVzIHRvZ2dsZWRJZHMgKi9cclxuICAgIGlmICh0aGlzLmNoZWNrSW5oZXJpdGFuY2UpIHtcclxuICAgICAgLy8gSWYgdHJ1ZSwgYWxsIHRoZSBuZXN0ZWQgaXRlbXMgd2lsbCBiZSBjaGVja2VkL3VuY2hlY2tlZFxyXG4gICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2VcclxuICAgICAgICAubmVzdGVkVG9nZ2xlQ2hlY2soZSwgbmV3VmFsdWUpXHJcbiAgICAgICAgLnRoZW4oKHgpID0+IHtcclxuXHJcbiAgICAgICAgICAvLyBUaGUgaWRzIGhhdmUgYmVlbiBjaGFuZ2VkXHJcbiAgICAgICAgICB0b2dnbGVkSWRzID0geDtcclxuXHJcbiAgICAgICAgICAvLyBOb3cgdG9nZ2xlZElkcyB3ZXJlIHNldC4gV2UgY2FsbCB0aGUgZnVuY3Rpb24gd2UgZGVjbGFyZWRcclxuICAgICAgICAgIGNoYW5nZVZhbHVlKCk7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKCh4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoeCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBPdGhlcndpc2Ugd2Ugc2ltcGx5IHRvZ2dsZSBjaGVjayBmb3IgY3VycmVudCBpdGVtIG9ubHlcclxuICAgICAgdG9nZ2xlZElkcyA9IFtlLmlkXTtcclxuXHJcbiAgICAgIC8vIE5vdyB0b2dnbGVkSWRzIHdlcmUgc2V0LiBXZSBjYWxsIHRoZSBmdW5jdGlvbiB3ZSBkZWNsYXJlZFxyXG4gICAgICBjaGFuZ2VWYWx1ZSgpO1xyXG5cclxuICAgIH1cclxuICAgIC8qIGVuZDogVEhJUyBDT0RFIFNDT1BFIGNhbGN1bGF0ZXMgdG9nZ2xlZElkcyAqL1xyXG5cclxuICAgIC8vIFRoYXQgaXMuIEhhcHB5IGRlYnVnZ2luZyFcclxuXHJcbiAgfVxyXG5cclxuICBvbkNoZWNrSW5jbHVkZURpc3NvbHZlZENoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgY29uc29sZS5sb2coXCJvbkNoZWNrSW5jbHVkZURpc3NvbHZlZENoYW5nZVwiLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrSW5oZXJpdGFuY2VDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgIGNoZWNrSW5oZXJpdGFuY2U6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk9iamVjdENsaWNrKGU6IElPcmdUcmVlSXRlbSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIC8vIHJlbW92ZSBoaWdobGlnaHQgY2xhc3NcclxuICAgIC8vIFRPIERPXHJcblxyXG4gICAgaWYgKCEhZS5wcm90ZWN0ZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLml0ZW1DbGljaz8uZW1pdChlKTtcclxuXHJcbiAgICBpZiAodGhpcy5hY2Nlc3Nvck1vZGUgPT09IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRCkgcmV0dXJuO1xyXG4gICAgbGV0IGFjdGl2ZUlkczogbnVtYmVyW10gPSBbXTtcclxuICAgIHRoaXMuZGF0YS5tYXAoKGl0ZW0pID0+IChpdGVtLmFjdGl2ZSA9IGZhbHNlKSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWNjZXNzb3JNb2RlID09PVxyXG4gICAgICBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9JTkhFUklUQU5DRSB8fFxyXG4gICAgICAhISF0aGlzLmFjY2Vzc29yTW9kZVxyXG4gICAgKSB7XHJcbiAgICAgIC8vIElmIHRydWUsIGFsbCB0aGUgbmVzdGVkIGl0ZW1zIHdpbGwgYmUgYWN0aXZlLCB0aGUgb3RoZXJzIGFyZSBpbmFjdGl2ZVxyXG4gICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2VcclxuICAgICAgICAubmVzdGVkUmVzZXRBY3RpdmUoZSwgdHJ1ZSlcclxuICAgICAgICAudGhlbigoeCkgPT4ge1xyXG4gICAgICAgICAgYWN0aXZlSWRzID0geDtcclxuICAgICAgICAgIGFjdGl2ZUlkcy5zb3J0KCk7XHJcbiAgICAgICAgICBjb25zdCBuZXdBY3RpdmVLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgYWN0aXZlSWRzLm1hcCgoeCkgPT4gbmV3QWN0aXZlS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlISxcclxuICAgICAgICAgICAgYWN0aXZlS2V5czogbmV3QWN0aXZlS2V5cyxcclxuICAgICAgICAgICAgc2VsZWN0ZWRLZXk6IGUuaWQudG9TdHJpbmcoKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZUlkcyA9IGFjdGl2ZUlkcztcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuYWN0aXZlSWRzKTtcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2UoYWN0aXZlSWRzKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgLy8gQUNUSVZBVEVEX1NJTkdMRVxyXG4gICAgICAvLyBPdGhlcndpc2Ugd2Ugc2ltcGx5IHNldCBjdXJyZW50IGl0ZW0gdG8gYmUgYWN0aXZlIG9ubHlcclxuICAgICAgYWN0aXZlSWRzID0gW2UuaWRdO1xyXG4gICAgICB0aGlzLmFjdGl2ZUlkcyA9IGFjdGl2ZUlkcztcclxuXHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAgIC4uLnRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlISxcclxuICAgICAgICBhY3RpdmVLZXlzOiBbZS5pZC50b1N0cmluZygpXSxcclxuICAgICAgICBzZWxlY3RlZEtleTogZS5pZC50b1N0cmluZygpLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMub25DaGFuZ2UoYWN0aXZlSWRzKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQ7XHJcblxyXG4gICAgaWYgKGRldGFpbCA9PT0gMikge1xyXG4gICAgICBjb25zb2xlLmxvZygnVGhpcyB3YXMgYSBkYmxjbGljaycpO1xyXG4gICAgICB0aGlzLml0ZW1Eb3VibGVDbGljay5lbWl0KGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZTtcclxuXHJcbiAgfVxyXG5cclxuICBvblNlYXJjaENoYW5nZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoJC5uZXh0KHRleHQpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJuZ0FmdGVyQ29udGVudEluaXRcIilcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCgoeCkgPT4geD8udW5zdWJzY3JpYmUoKSk7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5pbnN0YW5jZU51bWJlcikge1xyXG4gICAgICBjb25zdCB0cnlUb0ZpbmQgPSB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgICAoeCkgPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5pbnN0YW5jZU51bWJlclxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCEhdHJ5VG9GaW5kLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IG5ld0luc3RhbmNlcyA9IHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKFxyXG4gICAgICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgIT09IHRoaXMuaW5zdGFuY2VOdW1iZXJcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5pbnN0YW5jZXMgPSBuZXdJbnN0YW5jZXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1vcmctdHJlZS1jb250YWluZXJcIiBbY2xhc3MuZnVsbC13aWR0aF09XCIhIWZ1bGxXaWR0aE1vZGVcIlxyXG4gICAgKm5nSWY9XCIhIWRhdGFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgcG9zaXRpb24gOiAncmVsYXRpdmUnLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgKyAncHgnXHJcbiAgICB9XCI+XHJcbiAgICA8ZGl2ICNkaXNwbGF5Q29udGVudCBjbGFzcz1cImN1c3RvbS1vcmctdHJlZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb3JlLW9yZy10cmVlLWhlYWRlciBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibTVcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIiBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIgfCB0cmFuc2xhdGU6IGxhbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mdWxsLXdpZHRoXT1cIiEhZnVsbFdpZHRoTW9kZVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLSBsYXlvdXRTZXJ2aWNlLmNvcmVPcmdUcmVlVG9wSGVpZ2h0IC0gbGF5b3V0U2VydmljZS5jb3JlT3JnVHJlZUJvdHRvbUhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Njcm9sbCdcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLWxvYWRpbmctc3VyZmFjZSBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2hlaWdodF09XCJzY3JvbGxDb250YWluZXJIZWlnaHRcIj48L2NvcmUtbG9hZGluZy1zdXJmYWNlPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicm9vdFwiICpuZ0Zvcj1cImxldCByb290IG9mIGRhdGFcIiBbY2xhc3MuY29sbGFwc2VkXT1cIiEhIXJvb3QudHJlZSRFeHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvb3QgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgICAgICBib3R0b206ICcwcHgnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICByaWdodDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHQgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogbGF5b3V0U2VydmljZS5jb3JlUGFnaW5hdGlvbkhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBsYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0ICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFsobmdNb2RlbCldPVwic2hvd0Rpc3NvbHZlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrSW5jbHVkZURpc3NvbHZlZENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidVSS5DT1JFX09SR19UUkVFLlNIT1dfT1VUREFURURfVU5JVFNfQUJCUkVWSUFURUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidVSS5DT1JFX09SR19UUkVFLlNIT1dfT1VUREFURURfVU5JVFMnXCIgdG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLWluaGVyaXRhbmNlLXdyYXBwZXJcIiAqbmdJZj1cImFjY2Vzc29yTW9kZSA9PT0gJ0NIRUNLRUQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94ICpuZ0lmPVwic2hvd0NoZWNrSW5oZXJpdGFuY2VcIiBbKG5nTW9kZWwpXT1cImNoZWNrSW5oZXJpdGFuY2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrSW5oZXJpdGFuY2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInVUkuQ09SRV9PUkdfVFJFRS5DSEVDS19JTkhFUklUQU5DRSdcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW0gbGV0LWNvbnRleHQ9XCJjb250ZXh0XCIgbGV0LWlkPVwiY29udGV4dC5pZFwiIGxldC10aXRsZT1cImNvbnRleHQudHJlZSRUaXRsZVwiXHJcbiAgICAgICAgICAgICAgICBsZXQtaGlnaGxpZ2h0ZWQ9XCJjb250ZXh0LnRyZWUkSGlnaGxpZ2h0ZWRcIiBsZXQtaGFzQ2hpbGRyZW49XCJjb250ZXh0LnRyZWUkSGFzQ2hpbGRyZW5cIiBsZXQtaGFzQWN0aXZlQ2hpbGRyZW49XCJjb250ZXh0LnRyZWUkSGFzQWN0aXZlQ2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgbGV0LWNoaWxkcmVuPVwiY29udGV4dC50cmVlJENoaWxkcmVuXCIgbGV0LWV4cGFuZGVkPVwiY29udGV4dC50cmVlJEV4cGFuZGVkXCJcclxuICAgICAgICAgICAgICAgIGxldC1pc0FjdGl2ZT1cImNvbnRleHQuaXNBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgbGV0LWFjdGl2ZT1cImNvbnRleHQudHJlZSRBY3RpdmVcIiBsZXQtY2hlY2tlZD1cImNvbnRleHQudHJlZSRDaGVja2VkXCIgbGV0LXByb3RlY3RlZD1cImNvbnRleHQucHJvdGVjdGVkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpIFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwiISFoYXNDaGlsZHJlblwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiISFoYXNDaGlsZHJlbiAmJiAhISFleHBhbmRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoIXNob3dEaXNzb2x2ZWQgJiYgISFpc0FjdGl2ZSkgfHwgKCEhc2hvd0Rpc3NvbHZlZClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gKGNsaWNrKT1cImFjY2Vzc29yTW9kZSAhPT0gJ0NIRUNLRUQnID8gb25PYmplY3RDbGljayhjb250ZXh0LCAkZXZlbnQpIDogJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PYmplY3RDbGljayhjb250ZXh0LCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZXhwYW5kLXRvZ2dsZXIgY3VzdG9tLWljb24tcGFyZW50LWRvd25cIiAqbmdJZj1cIighIXNob3dEaXNzb2x2ZWQgJiYgISFoYXNDaGlsZHJlbikgfHwgKCFzaG93RGlzc29sdmVkICYmICEhaGFzQWN0aXZlQ2hpbGRyZW4pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkV4cGFuZFRvZ2dsZXJDbGljayhjb250ZXh0LCAkZXZlbnQpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1jaGVja2JveCAqbmdJZj1cImFjY2Vzc29yTW9kZSA9PT0gJ0NIRUNLRUQnICYmICEhIXByb3RlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJvbkl0ZW1DaGVjayhjb250ZXh0LCAkZXZlbnQpXCIgW2lucHV0VmFsdWVdPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZEtleT09PWlkLnRvU3RyaW5nKClcIiBbY2xhc3MuaGlnaGxpZ2h0ZWRdPVwiaGlnaGxpZ2h0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc3NvbHZlZF09XCIhaXNBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnByb3RlY3RlZF09XCJwcm90ZWN0ZWRcIiBbYXBwVG9vbHRpcF09XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cImNoaWxkcmVuLmxlbmd0aFwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiICEhIWV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFleHBhbmRlZCB8fCAhIWZ1bGxSZW5kZXJpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbTsgY29udGV4dDogeyBjb250ZXh0OiBjaGlsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuPC9kaXY+Il19
|
|
457
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmctdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLEtBQUssRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBOEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZMLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQztBQVF0SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFN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QUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNPLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNNLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBJbnB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc3dpdGNoTWFwLCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUmVjdXJzaXZlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY3Vyc2l2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZU9yZ1RyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1vcmctdHJlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBJT3JnVHJlZUl0ZW0sIElPcmdUcmVlTGluZXJJdGVtIH0gZnJvbSAnLi9JT3JnVHJlZUl0ZW0nO1xyXG5cclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQ29yZU9yZ1RyZWVJbnN0YW5jZSwgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZ2FuaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IGxpbmVyX3RvX25lc3RlZF9hcnJheV9zY3JpcHQgfSBmcm9tICcuLi8uLi8uLi8uLi9hc3NldHMvanMvcmVzY3VzaXZlX3drJ1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgQ29yZUxvYWRpbmdTdXJmYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVJlZHVjZXJJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1yZWR1Y2VyLWljb24vY29yZS1yZWR1Y2VyLWljb24vY29yZS1yZWR1Y2VyLWljb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0IGVudW0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB7XHJcbiAgQUNUSVZBVEVEX1NJTkdMRSA9ICdBQ1RJVkFURURfU0lOR0xFJyxcclxuICBBQ1RJVkFURURfSU5IRVJJVEFOQ0UgPSAnQUNUSVZBVEVEX0lOSEVSSVRBTkNFJyxcclxuICBDSEVDS0VEID0gJ0NIRUNLRUQnLFxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtb3JnLXRyZWUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBDb3JlUmVkdWNlckljb25Db21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVPcmdUcmVlQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZU9yZ1RyZWVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIGxpbmVDb2xvcjogc3RyaW5nID0gJ3RyYW5zcGFyZW50JztcclxuICBASW5wdXQoKSBmdWxsV2lkdGhNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhY2Nlc3Nvck1vZGUhOiBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlO1xyXG4gIEBJbnB1dCgpIGZ1bGxSZW5kZXJpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjsgLy8gQ2hp4buBdSBjYW8gY+G7p2EgQ29yZU9yZ1RyZWUgY+G6p24gxJHGsOG7o2MgdHJ1eeG7gW4gdsOgbyFcclxuICBASW5wdXQoKSBkaXNhYmxlZExvb3BFeHBhbmQhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0luaGVyaXRhbmNlITogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIGl0ZW1Eb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2Rpc3BsYXlDb250ZW50JykgZGlzcGxheUNvbnRlbnQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3JlZHVjZWRJY29uV3JhcHBlcicpIHJlZHVjZWRJY29uV3JhcHBlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG92ZXJyaWRlIHZhbHVlITogbnVtYmVyW107XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG9iajtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuYWNjZXNzb3JNb2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEOlxyXG4gICAgICAgIGlmICghIW9iaikge1xyXG4gICAgICAgICAgY29uc3QgY2hlY2tlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICB0aGlzLmNoZWNrZWRJZHMgPSBvYmo7IC8vIDw9PT0gMjQvMTAvMjAyM1xyXG4gICAgICAgICAgb2JqLm1hcCh4ID0+IGNoZWNrZWRLZXlzLnB1c2goeC50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlLndyaXRlVmFsdWVDaGVja2VkKGNoZWNrZWRLZXlzLCB0aGlzLmRhdGEsIHRoaXMuZGlzYWJsZWRMb29wRXhwYW5kKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX1NJTkdMRTpcclxuICAgICAgY2FzZSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9JTkhFUklUQU5DRTpcclxuICAgICAgICBpZiAoISFvYmopIHtcclxuICAgICAgICAgIGNvbnN0IGFjdGl2YXRlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICBvYmoubWFwKHggPT4gYWN0aXZhdGVkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZS53cml0ZVZhbHVlQWN0aXZhdGVkKGFjdGl2YXRlZEtleXMsIHRoaXMuZGF0YSwgdGhpcy5kaXNhYmxlZExvb3BFeHBhbmQpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGF0YSAmJiAhIXRoaXMuZGF0YT8ubGVuZ3RoKSB0aGlzLmRhdGFbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSB7XHJcblxyXG4gICAgfSBlbHNlIC8qIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX1NJTkdMRSBvciBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9JTkhFUklUQU5DRSAqLyB7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBjaGVja2VkSWRzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAvLyBmb3IgZGVidWdnaW5nXHJcbiAgLy8gYWN0aXZlSWRzU3RyaW5nITogc3RyaW5nOyAgXHJcbiAgZGF0YSE6IElPcmdUcmVlSXRlbVtdO1xyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgbGlubmVyT3JnQXJyYXkhOiBJT3JnVHJlZUxpbmVySXRlbVtdO1xyXG4gIHNlYXJjaCE6IHN0cmluZztcclxuICBzZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fUExBQ0VfSE9MREVSX1NFQVJDSF9PUkc7XHJcblxyXG4gIGluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgY2hlY2tJbmhlcml0YW5jZTogYm9vbGVhbiA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWUgaXMgdHJ1ZVxyXG4gIHNob3dEaXNzb2x2ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZVxyXG4gIHNlbGVjdGVkS2V5ITogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHNlbGVjdGVkSXRlbSE6IElPcmdUcmVlTGluZXJJdGVtO1xyXG4gIGxhbmchOiBzdHJpbmc7XHJcbiAgLy9yZWR1Y2VkJCE6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuXHJcbiAgaW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgc2Nyb2xsQ29udGFpbmVySGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vcHVibGljIG92ZXJyaWRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWN1cnNpdmVTZXJ2aWNlOiBSZWN1cnNpdmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVPcmdUcmVlU2VydmljZTogQ29yZU9yZ1RyZWVTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSBjb3JlT3JnVHJlZVN0YXRlOiBDb3JlT3JnVHJlZVN0YXRlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHB1YmxpYyBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoLyppbmplY3RvciovKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyB0aGlzLnJlZHVjZWQkID0gdGhpcy5jb3JlT3JnVHJlZVN0YXRlLmNvcmVPcmdUcmVlUmVkdWNlZCQ7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXppbmcgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snaGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5yZXNpemVIZWlnaHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IGFwcE1lbnU6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWtmLW1lbnUtc3RhdGVcIik7XHJcbiAgICBpZiAoYXBwTWVudSAhPT0gbnVsbCAmJiBhcHBNZW51ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgYXBwTWVudS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgbmV3SW5zdGFuY2U6IElDb3JlT3JnVHJlZUluc3RhbmNlID0ge1xyXG4gICAgICBpbnN0YW5jZU51bWJlcjogdGhpcy5pbnN0YW5jZU51bWJlcixcclxuICAgICAgc2VsZWN0ZWRLZXkkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKSxcclxuICAgICAgYWN0aXZlS2V5cyQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKSxcclxuICAgICAgY2hlY2tlZEtleXMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSksXHJcbiAgICAgIGV4cGFuZGVkS2V5cyQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKSxcclxuICAgICAgY2hlY2tJbmhlcml0YW5jZSQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSlcclxuICAgIH1cclxuICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5pbnN0YW5jZXMucHVzaChuZXdJbnN0YW5jZSlcclxuXHJcbiAgICAvLyBDaGVjayB4ZW0gY2hp4buBdSBjYW8gaGVpZ2h0IGPDsyDEkcaw4bujYyB0cnV54buBbiB2w6BvIGhheSBraMO0bmdcclxuICAgIGlmICh0aGlzLmhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm4oXCJDb3JlT3JnVHJlZSBraMO0bmcgbmjhuq1uIMSRxrDhu6NjIGNoaeG7gXUgY2FvIChoZWlnaHQpIHRydXnhu4FuIHbDoG8gdOG7qyBs4bubcCBuZ2/DoGkuIENoaeG7gXUgY2FvIG3hurdjIMSR4buLbmggc+G6vSDEkcaw4bujYyB0w61uaCB0b8OhbiBk4buxYSB2w6BvIGLhu5EgY+G7pWMgY2jDrW5oLlwiLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAvLyBiYXNpY1NwYWNpbmcgbMOgIHBhZGRpbmdCb3R0b20gY+G7p2EgbOG7m3AgY29udGVudC1jb250YWluZXJcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0geCAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnZUhlYWRlckhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UubGluZXJEYXRhJC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxpbm5lck9yZ0FycmF5ID0geDtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnN1YnNjcmliZSgoeCkgPT4ge1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkIGNoYW5nZXNcIiwgeClcclxuXHJcbiAgICAgICAgY29uc3QgbmV3QWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgICAgIHguYWN0aXZlS2V5cy5tYXAoKGspID0+IHtcclxuICAgICAgICAgIG5ld0FjdGl2ZUlkcy5wdXNoKE51bWJlcihrKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJZHMgPSBuZXdBY3RpdmVJZHM7XHJcbiAgICAgICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlICE9PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHtcclxuICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmFjdGl2ZUlkcztcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5hY3RpdmVJZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdGVkS2V5ID0geC5zZWxlY3RlZEtleTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuc2VhcmNoJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKCh4KSA9PiB4ICE9PSBudWxsKSxcclxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgodGV4dCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc3dpdGNoTWFwIHdvcmtzJyk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2UuZmluZEl0ZW0odGV4dCwgdGhpcy5kYXRhKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkXHJcbiAgICAgICAgLnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gISEhdGhpcy5pbml0aWFsaXppbmcgJiYgISF2YWx1ZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCEhbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjb3JlT3JnVHJlZVN0YXR1cycsIEpTT04uc3RyaW5naWZ5KHgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSgoeCkgPT4gKHRoaXMubGFuZyA9IHgpKSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNpemVIZWlnaHQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gaGVpZ2h0IGlzIG5vdCBnaXZlbiBhbmQgdGhlIHRyZWUgcmVzaXplIGFzIHN0YW5kYXJkXHJcbiAgICBpZiAoISEhdGhpcy5oZWlnaHQpIHtcclxuICAgICAgY29uc3Qgc2l6ZUhlYWRlckhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtaGVhZGVyLWhlaWdodCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJylcclxuICAgICAgKTtcclxuICAgICAgY29uc3Qgc2l6ZUNvcmVQYWdlSGVhZGVySGVpZ2h0ID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1jb3JlLXBhZ2UtaGVhZGVyLWhlaWdodCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJylcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHNpemVIZWFkZXJIZWlnaHQgLSBzaXplQ29yZVBhZ2VIZWFkZXJIZWlnaHQ7XHJcblxyXG4gICAgICBjb25zdCBwYWdlSGVhZGVySGVpZ2h0ID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1jb3JlLXBhZ2UtaGVhZGVyLWhlaWdodCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgncHgnLCAnJylcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25IZWlnaHQgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWNvcmUtcGFnaW5hdGlvbi1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHNpemVNYXJnaW5Db3JlUGFnaW5hdGlvbkZ1bGwgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLW1hcmdpbi1jb3JlLXBhZ2luYXRpb24nKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcblxyXG5cclxuICAgICAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVySGVpZ2h0IC0gcGFnZUhlYWRlckhlaWdodCAtIHBhZ2luYXRpb25IZWlnaHQgKyBzaXplTWFyZ2luQ29yZVBhZ2luYXRpb25GdWxsO1xyXG4gICAgICBjb25zb2xlLmxvZyhoZWlnaHQpO1xyXG5cclxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgJy0taGVpZ2h0JywgaGVpZ2h0ICsgJ3B4J1xyXG4gICAgICApO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICctLWhlaWdodCcsIHRoaXMuaGVpZ2h0ICsgJ3B4J1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5vcmdUcmVlRGF0YSQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSB4O1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJuZXcgRGF0YSBjb21pbmdcIiwgdGhpcy5kYXRhLCBuZXcgRGF0ZSgpLmdldFRpbWUoKSlcclxuICAgICAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEubGVuZ3RoKSB0aGlzLmRhdGFbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DbGlja0xvY2FsKGU6IElPcmdUcmVlSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5saW5uZXJPcmdBcnJheS5tYXAoKHgpID0+ICh4LmFjdGl2ZSA9IGZhbHNlKSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYnVpbGRUcmVlRGF0YSgpKTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlSXRlbShlOiBJT3JnVHJlZUl0ZW0pIHtcclxuICAgIGNvbnN0IGNsb25lQ29weTogSU9yZ1RyZWVMaW5lckl0ZW1bXSA9IEpTT04ucGFyc2UoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMubGlubmVyT3JnQXJyYXkpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZmlsdGVyID0gY2xvbmVDb3B5LmZpbHRlcigoeCkgPT4geC5pZCA9PT0gZS5pZCk7XHJcblxyXG4gICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDEpIHtcclxuICAgICAgZmlsdGVyWzBdLmV4cGFuZCA9ICEhIWUuZXhwYW5kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5saW5uZXJPcmdBcnJheSA9IGNsb25lQ29weTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5idWlsZFRyZWVEYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRUcmVlRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgY2xvbmVDb3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmxpbm5lck9yZ0FycmF5KSk7XHJcblxyXG4gICAgaWYgKHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIC8vIENyZWF0ZSBhIG5ld1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCLwn5+i8J+foiBXb3JrZXIgd29ya3NcIik7XHJcblxyXG4gICAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKGxpbmVyX3RvX25lc3RlZF9hcnJheV9zY3JpcHQpO1xyXG4gICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7IGRhdGEgfSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEubGlzdDtcclxuICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgbGlzdDogY2xvbmVDb3B5LFxyXG4gICAgICAgIGtleUZpZWxkOiAnaWQnLFxyXG4gICAgICAgIHRpdGxlRmllbGQ6ICduYW1lJyxcclxuICAgICAgICBwYXJlbnRGaWVsZDogJ3BhcmVudElkJyxcclxuICAgICAgICBhY3RpdmVGaWVsZDogJ2FjdGl2ZScsXHJcbiAgICAgICAgLy9pbmhlcml0YW50QWN0aXZlRmllbGQ6ICdpbmhlcml0YW50QWN0aXZlJyxcclxuICAgICAgICBjaGVja2VkRmllbGQ6ICdjaGVja2VkJyxcclxuICAgICAgICBleHBhbmRlZEZpZWxkOiAnZXhwYW5kJyxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBXZWIgd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGVudmlyb25tZW50LlxyXG4gICAgICAvLyBZb3Ugc2hvdWxkIGFkZCBhIGZhbGxiYWNrIHNvIHRoYXQgeW91ciBwcm9ncmFtIHN0aWxsIGV4ZWN1dGVzIGNvcnJlY3RseS5cclxuICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWU7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZVxyXG4gICAgICAgICAgLmxpbmVyQXJyYXlUb05lc3RlZEFycmF5KFxyXG4gICAgICAgICAgICBjbG9uZUNvcHksXHJcbiAgICAgICAgICAgICdpZCcsXHJcbiAgICAgICAgICAgICduYW1lJyxcclxuICAgICAgICAgICAgJ3BhcmVudElkJyxcclxuICAgICAgICAgICAgJ2FjdGl2ZScsXHJcbiAgICAgICAgICAgICdjaGVja2VkJyxcclxuICAgICAgICAgICAgJ2V4cGFuZCcsXHJcbiAgICAgICAgICAgIC8vc3RhdHVzXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChvYmopID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0gb2JqLmxpc3Q7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGF0YSAmJiAhIXRoaXMuZGF0YT8ubGVuZ3RoKSB0aGlzLmRhdGFbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRXhwYW5kVG9nZ2xlckNsaWNrKGU6IElPcmdUcmVlSXRlbSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gIWUudHJlZSRFeHBhbmRlZDtcclxuICAgIGUudHJlZSRFeHBhbmRlZCA9IG5ld1ZhbHVlO1xyXG5cclxuICAgIC8vIHVwZGF0aW5nIHN0YXR1cyB3aXRoIG5ld1ZhbHVlXHJcbiAgICBjb25zdCBjdXJyZW50RXhwYW5kZWRJZHMgPVxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZT8uZXhwYW5kZWRLZXlzO1xyXG4gICAgbGV0IG5ld0V4cGFuZGVkSWRzID0gY3VycmVudEV4cGFuZGVkSWRzPy5maWx0ZXIoXHJcbiAgICAgIChfKSA9PiAhISFjdXJyZW50RXhwYW5kZWRJZHMuaW5jbHVkZXMoZS5pZC50b1N0cmluZygpKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAobmV3VmFsdWUpIHtcclxuICAgICAgbmV3RXhwYW5kZWRJZHM/LnB1c2goZS5pZC50b1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZXdFeHBhbmRlZElkcz8uc29ydCgpO1xyXG5cclxuICAgIGNvbnN0IG5ld0V4cGFuZGVkS2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgIG5ld0V4cGFuZGVkSWRzLm1hcCgoeCkgPT4gbmV3RXhwYW5kZWRLZXlzLnB1c2goeC50b1N0cmluZygpKSk7XHJcblxyXG4gICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgIC4uLnRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlISxcclxuICAgICAgZXhwYW5kZWRLZXlzOiBuZXdFeHBhbmRlZEtleXMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uSXRlbUNoZWNrKGU6IElPcmdUcmVlSXRlbSwgbmV3VmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbUNsaWNrPy5lbWl0KGUpO1xyXG4gICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlICE9PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHJldHVybjtcclxuXHJcbiAgICAvLyBXZSBoYXZlIHRoaXMgdmFyIHRvIGhvbGQgbm9kZXMgdGhhdCBhcmUgYmVpbmcgY2hhbmdlZFxyXG4gICAgbGV0IHRvZ2dsZWRJZHM6IG51bWJlcltdO1xyXG4gICAgLy8gV2Ugc2hvdWxkIGNhbGN1bGF0ZSBhIG5ldyBzdGF0ZSBpbnRvIHRoaXMgdmFyOiBcclxuICAgIGNvbnN0IG5ld0NoZWNrZWRJZHM6IG51bWJlcltdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoZWNrZWRJZHMpKTtcclxuXHJcbiAgICAvLyBXZSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciB0b2dnbGVkSWRzIGNoYW5nZWRcclxuICAgIGNvbnN0IGNoYW5nZVZhbHVlID0gKCkgPT4ge1xyXG5cclxuICAgICAgLy8gSWYgbmV3VmFsdWUgPT09IHRydWUsIHdlIHdpbGwgZGlzY3RpbnRseSBwdXNoIGNoYW5nZWQgaWRzIHRvIHRoZSBzdGF0ZVxyXG4gICAgICAvLyBPdGhlcndpc2Ugd2Ugd2lsbCByZW1vdmUgdGhlbSBmcm9tIHRoZSBzdGF0ZVxyXG4gICAgICBpZiAoISFuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRvZ2dsZWRJZHMubWFwKHggPT4ge1xyXG4gICAgICAgICAgaWYgKCEhIW5ld0NoZWNrZWRJZHMuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tlZElkcy5wdXNoKHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy8gVGhlbiBhc2lnbiB0aGUgc3RhdGUgdG8gdGhlIG5ld0NoZWNrZWRJZHNcclxuICAgICAgICB0aGlzLmNoZWNrZWRJZHMgPSBuZXdDaGVja2VkSWRzO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSBuZXdDaGVja2VkSWRzLmZpbHRlcih4ID0+ICEhIXRvZ2dsZWRJZHMuaW5jbHVkZXMoeCkpXHJcbiAgICAgICAgLy8gVGhlbiBhc2lnbiB0aGUgc3RhdGUgdG8gdGhlIGZpbHRlclxyXG4gICAgICAgIHRoaXMuY2hlY2tlZElkcyA9IGZpbHRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQWZ0ZXIgdGhlIGNhc2VzIG9mIGlmL2Vsc2UsIG1ha2UgdGhlIGNvbnRyb2wgY2hhbmdlIHdpdGggb25DaGFuZ2VcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hlY2tlZElkcztcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmNoZWNrZWRJZHMpO1xyXG4gICAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBzdGFydDogVEhJUyBDT0RFIFNDT1BFIGNhbGN1bGF0ZXMgdG9nZ2xlZElkcyAqL1xyXG4gICAgaWYgKHRoaXMuY2hlY2tJbmhlcml0YW5jZSkge1xyXG4gICAgICAvLyBJZiB0cnVlLCBhbGwgdGhlIG5lc3RlZCBpdGVtcyB3aWxsIGJlIGNoZWNrZWQvdW5jaGVja2VkXHJcbiAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZVxyXG4gICAgICAgIC5uZXN0ZWRUb2dnbGVDaGVjayhlLCBuZXdWYWx1ZSlcclxuICAgICAgICAudGhlbigoeCkgPT4ge1xyXG5cclxuICAgICAgICAgIC8vIFRoZSBpZHMgaGF2ZSBiZWVuIGNoYW5nZWRcclxuICAgICAgICAgIHRvZ2dsZWRJZHMgPSB4O1xyXG5cclxuICAgICAgICAgIC8vIE5vdyB0b2dnbGVkSWRzIHdlcmUgc2V0LiBXZSBjYWxsIHRoZSBmdW5jdGlvbiB3ZSBkZWNsYXJlZFxyXG4gICAgICAgICAgY2hhbmdlVmFsdWUoKTtcclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKHg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcih4KTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIE90aGVyd2lzZSB3ZSBzaW1wbHkgdG9nZ2xlIGNoZWNrIGZvciBjdXJyZW50IGl0ZW0gb25seVxyXG4gICAgICB0b2dnbGVkSWRzID0gW2UuaWRdO1xyXG5cclxuICAgICAgLy8gTm93IHRvZ2dsZWRJZHMgd2VyZSBzZXQuIFdlIGNhbGwgdGhlIGZ1bmN0aW9uIHdlIGRlY2xhcmVkXHJcbiAgICAgIGNoYW5nZVZhbHVlKCk7XHJcblxyXG4gICAgfVxyXG4gICAgLyogZW5kOiBUSElTIENPREUgU0NPUEUgY2FsY3VsYXRlcyB0b2dnbGVkSWRzICovXHJcblxyXG4gICAgLy8gVGhhdCBpcy4gSGFwcHkgZGVidWdnaW5nIVxyXG5cclxuICB9XHJcblxyXG4gIG9uQ2hlY2tJbmNsdWRlRGlzc29sdmVkQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2hlY2tJbmNsdWRlRGlzc29sdmVkQ2hhbmdlXCIsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tJbmhlcml0YW5jZUNoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgIC4uLnRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlISxcclxuICAgICAgY2hlY2tJbmhlcml0YW5jZTogdmFsdWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uT2JqZWN0Q2xpY2soZTogSU9yZ1RyZWVJdGVtLCBldmVudDogYW55KTogdm9pZCB7XHJcblxyXG4gICAgLy8gcmVtb3ZlIGhpZ2hsaWdodCBjbGFzc1xyXG4gICAgLy8gVE8gRE9cclxuXHJcbiAgICBpZiAoISFlLnByb3RlY3RlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuaXRlbUNsaWNrPy5lbWl0KGUpO1xyXG5cclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSByZXR1cm47XHJcbiAgICBsZXQgYWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhLm1hcCgoaXRlbSkgPT4gKGl0ZW0uYWN0aXZlID0gZmFsc2UpKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hY2Nlc3Nvck1vZGUgPT09XHJcbiAgICAgIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX0lOSEVSSVRBTkNFIHx8XHJcbiAgICAgICEhIXRoaXMuYWNjZXNzb3JNb2RlXHJcbiAgICApIHtcclxuICAgICAgLy8gSWYgdHJ1ZSwgYWxsIHRoZSBuZXN0ZWQgaXRlbXMgd2lsbCBiZSBhY3RpdmUsIHRoZSBvdGhlcnMgYXJlIGluYWN0aXZlXHJcbiAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZVxyXG4gICAgICAgIC5uZXN0ZWRSZXNldEFjdGl2ZShlLCB0cnVlKVxyXG4gICAgICAgIC50aGVuKCh4KSA9PiB7XHJcbiAgICAgICAgICBhY3RpdmVJZHMgPSB4O1xyXG4gICAgICAgICAgYWN0aXZlSWRzLnNvcnQoKTtcclxuICAgICAgICAgIGNvbnN0IG5ld0FjdGl2ZUtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICBhY3RpdmVJZHMubWFwKCh4KSA9PiBuZXdBY3RpdmVLZXlzLnB1c2goeC50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgICAgICAgLi4udGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUhLFxyXG4gICAgICAgICAgICBhY3RpdmVLZXlzOiBuZXdBY3RpdmVLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleTogZS5pZC50b1N0cmluZygpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlSWRzID0gYWN0aXZlSWRzO1xyXG4gICAgICAgICAgY29uc29sZS5sb2codGhpcy5hY3RpdmVJZHMpO1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShhY3RpdmVJZHMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKCh4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoeCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyBBQ1RJVkFURURfU0lOR0xFXHJcbiAgICAgIC8vIE90aGVyd2lzZSB3ZSBzaW1wbHkgc2V0IGN1cnJlbnQgaXRlbSB0byBiZSBhY3RpdmUgb25seVxyXG4gICAgICBhY3RpdmVJZHMgPSBbZS5pZF07XHJcbiAgICAgIHRoaXMuYWN0aXZlSWRzID0gYWN0aXZlSWRzO1xyXG5cclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgICAgLi4udGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUhLFxyXG4gICAgICAgIGFjdGl2ZUtleXM6IFtlLmlkLnRvU3RyaW5nKCldLFxyXG4gICAgICAgIHNlbGVjdGVkS2V5OiBlLmlkLnRvU3RyaW5nKCksXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5vbkNoYW5nZShhY3RpdmVJZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudDtcclxuXHJcbiAgICBpZiAoZGV0YWlsID09PSAyKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdUaGlzIHdhcyBhIGRibGNsaWNrJyk7XHJcbiAgICAgIHRoaXMuaXRlbURvdWJsZUNsaWNrLmVtaXQoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBlO1xyXG5cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2gkLm5leHQodGV4dCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm5nQWZ0ZXJDb250ZW50SW5pdFwiKVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKCh4KSA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuXHJcbiAgICBpZiAoISF0aGlzLmluc3RhbmNlTnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IHRyeVRvRmluZCA9IHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKFxyXG4gICAgICAgICh4KSA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmluc3RhbmNlTnVtYmVyXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoISF0cnlUb0ZpbmQubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgbmV3SW5zdGFuY2VzID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoXHJcbiAgICAgICAgICAoeCkgPT4geC5pbnN0YW5jZU51bWJlciAhPT0gdGhpcy5pbnN0YW5jZU51bWJlclxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmluc3RhbmNlcyA9IG5ld0luc3RhbmNlcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLW9yZy10cmVlLWNvbnRhaW5lclwiIFtjbGFzcy5mdWxsLXdpZHRoXT1cIiEhZnVsbFdpZHRoTW9kZVwiXHJcbiAgICAqbmdJZj1cIiEhZGF0YVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICBwb3NpdGlvbiA6ICdyZWxhdGl2ZScsXHJcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgICBoZWlnaHQ6IGhlaWdodCArICdweCdcclxuICAgIH1cIj5cclxuICAgIDxkaXYgI2Rpc3BsYXlDb250ZW50IGNsYXNzPVwiY3VzdG9tLW9yZy10cmVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvcmUtb3JnLXRyZWUtaGVhZGVyIGQtZmxleC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlciB8IHRyYW5zbGF0ZTogbGFuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZ1bGwtd2lkdGhdPVwiISFmdWxsV2lkdGhNb2RlXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCAtIGxheW91dFNlcnZpY2UuY29yZU9yZ1RyZWVUb3BIZWlnaHQgLSBsYXlvdXRTZXJ2aWNlLmNvcmVPcmdUcmVlQm90dG9tSGVpZ2h0ICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnc2Nyb2xsJ1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbaGVpZ2h0XT1cInNjcm9sbENvbnRhaW5lckhlaWdodFwiPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJyb290XCIgKm5nRm9yPVwibGV0IHJvb3Qgb2YgZGF0YVwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiISEhcm9vdC50cmVlJEV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW07IGNvbnRleHQ6IHsgY29udGV4dDogcm9vdCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgICAgICAgICAgIGJvdHRvbTogJzBweCcsXHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAnMHB4JyxcclxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMHB4JyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogbGF5b3V0U2VydmljZS5jb3JlUGFnaW5hdGlvbkhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBsYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZyArICdweCcsXHJcbiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiBsYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0ICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHQgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcclxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvcmUtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJzaG93RGlzc29sdmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tJbmNsdWRlRGlzc29sdmVkQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1VJLkNPUkVfT1JHX1RSRUUuU0hPV19PVVREQVRFRF9VTklUU19BQkJSRVZJQVRFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ1VJLkNPUkVfT1JHX1RSRUUuU0hPV19PVVREQVRFRF9VTklUUydcIiB0b29sdGlwUG9zaXRpb249XCJhYm92ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2staW5oZXJpdGFuY2Utd3JhcHBlclwiICpuZ0lmPVwiYWNjZXNzb3JNb2RlID09PSAnQ0hFQ0tFRCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvcmUtY2hlY2tib3ggKm5nSWY9XCJzaG93Q2hlY2tJbmhlcml0YW5jZVwiIFsobmdNb2RlbCldPVwiY2hlY2tJbmhlcml0YW5jZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tJbmhlcml0YW5jZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidVSS5DT1JFX09SR19UUkVFLkNIRUNLX0lOSEVSSVRBTkNFJ1wiPjwvY29yZS1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbSBsZXQtY29udGV4dD1cImNvbnRleHRcIiBsZXQtaWQ9XCJjb250ZXh0LmlkXCIgbGV0LXRpdGxlPVwiY29udGV4dC50cmVlJFRpdGxlXCJcclxuICAgICAgICAgICAgICAgIGxldC1oaWdobGlnaHRlZD1cImNvbnRleHQudHJlZSRIaWdobGlnaHRlZFwiIGxldC1oYXNDaGlsZHJlbj1cImNvbnRleHQudHJlZSRIYXNDaGlsZHJlblwiIGxldC1oYXNBY3RpdmVDaGlsZHJlbj1cImNvbnRleHQudHJlZSRIYXNBY3RpdmVDaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICBsZXQtY2hpbGRyZW49XCJjb250ZXh0LnRyZWUkQ2hpbGRyZW5cIiBsZXQtZXhwYW5kZWQ9XCJjb250ZXh0LnRyZWUkRXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgICAgbGV0LWlzQWN0aXZlPVwiY29udGV4dC5pc0FjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICBsZXQtYWN0aXZlPVwiY29udGV4dC50cmVlJEFjdGl2ZVwiIGxldC1jaGVja2VkPVwiY29udGV4dC50cmVlJENoZWNrZWRcIiBsZXQtcHJvdGVjdGVkPVwiY29udGV4dC5wcm90ZWN0ZWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGkgW2NsYXNzLmhhcy1jaGlsZHJlbl09XCIhIWhhc0NoaWxkcmVuXCIgW2NsYXNzLmNvbGxhcHNlZF09XCIhIWhhc0NoaWxkcmVuICYmICEhIWV4cGFuZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIighc2hvd0Rpc3NvbHZlZCAmJiAhIWlzQWN0aXZlKSB8fCAoISFzaG93RGlzc29sdmVkKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwiYWNjZXNzb3JNb2RlICE9PSAnQ0hFQ0tFRCcgPyBvbk9iamVjdENsaWNrKGNvbnRleHQsICRldmVudCkgOiAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk9iamVjdENsaWNrKGNvbnRleHQsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJleHBhbmQtdG9nZ2xlciBjdXN0b20taWNvbi1wYXJlbnQtZG93blwiICpuZ0lmPVwiKCEhc2hvd0Rpc3NvbHZlZCAmJiAhIWhhc0NoaWxkcmVuKSB8fCAoIXNob3dEaXNzb2x2ZWQgJiYgISFoYXNBY3RpdmVDaGlsZHJlbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRXhwYW5kVG9nZ2xlckNsaWNrKGNvbnRleHQsICRldmVudClcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94ICpuZ0lmPVwiYWNjZXNzb3JNb2RlID09PSAnQ0hFQ0tFRCcgJiYgISEhcHJvdGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uSXRlbUNoZWNrKGNvbnRleHQsICRldmVudClcIiBbaW5wdXRWYWx1ZV09XCJjaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvY29yZS1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkS2V5PT09aWQudG9TdHJpbmcoKVwiIFtjbGFzcy5oaWdobGlnaHRlZF09XCJoaWdobGlnaHRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzc29sdmVkXT1cIiFpc0FjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucHJvdGVjdGVkXT1cInByb3RlY3RlZFwiIFthcHBUb29sdGlwXT1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiY2hpbGRyZW4ubGVuZ3RoXCIgW2NsYXNzLmNvbGxhcHNlZF09XCIgISEhZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY2hpbGRyZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIWV4cGFuZGVkIHx8ICEhZnVsbFJlbmRlcmluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtOyBjb250ZXh0OiB7IGNvbnRleHQ6IGNoaWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG48L2Rpdj4iXX0=
|
|
@@ -9460,6 +9460,10 @@ class CoreOrgTreeComponent extends CoreFormControlBaseComponent {
|
|
|
9460
9460
|
}
|
|
9461
9461
|
}
|
|
9462
9462
|
ngOnInit() {
|
|
9463
|
+
const appMenu = document.getElementById("mkf-menu-state");
|
|
9464
|
+
if (appMenu !== null && appMenu !== undefined) {
|
|
9465
|
+
appMenu.checked = false;
|
|
9466
|
+
}
|
|
9463
9467
|
this.instanceNumber = new Date().getTime();
|
|
9464
9468
|
const newInstance = {
|
|
9465
9469
|
instanceNumber: this.instanceNumber,
|