application-sidebar 1.0.14 → 1.0.15
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.
|
@@ -427,10 +427,13 @@ export class ApplicationSidebarComponent {
|
|
|
427
427
|
if (menu.matchRoutes.indexOf(this.router.url.split('?')[0]) > -1) {
|
|
428
428
|
headmenu.isActive = true;
|
|
429
429
|
this.prevActiveHeadMenu = headmenu;
|
|
430
|
+
if (parentMenu != null) {
|
|
431
|
+
this.activePanel = parentMenu.id;
|
|
432
|
+
}
|
|
430
433
|
return true;
|
|
431
434
|
}
|
|
432
|
-
|
|
433
|
-
|
|
435
|
+
else {
|
|
436
|
+
return false;
|
|
434
437
|
}
|
|
435
438
|
}
|
|
436
439
|
else {
|
|
@@ -520,4 +523,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
520
523
|
type: ViewChild,
|
|
521
524
|
args: ['navMenusComponent']
|
|
522
525
|
}] } });
|
|
523
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFlLGVBQWUsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBMkIsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTcEUsTUFBTSxPQUFPLDJCQUEyQjtJQXlCN0I7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUJELGtCQUFrQixDQUFhO0lBRS9CLE9BQU8sQ0FBYTtJQUVLLFNBQVMsQ0FBZ0M7SUFD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QUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pGLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFTLFVBQVU7Z0JBQzNFLElBQUksVUFBVSxDQUFDLE9BQU8sS0FBSyxjQUFjLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxFQUFFO29CQUNwSCxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFBQSxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUE7U0FDSDtRQUNILE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLENBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQzVKLENBQUM7MkhBeGZVLDJCQUEyQjsrR0FBM0IsMkJBQTJCLDhLQU8zQixtQkFBbUIsd0tBRGhCLGtCQUFrQixxRUN6QmxDLGcwWUFpTVU7OzRGRDlLRywyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0Usd0JBQXdCOytQQU96QixrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUU0QixTQUFTO3NCQUExQyxZQUFZO3VCQUFDLGtCQUFrQjtnQkFDQSxJQUFJO3NCQUFuQyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyRXZlbnQsIE5hdmlnYXRpb25TdGFydCwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbi1zaWRlYmFyLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBhcHBEZXRhaWxzIH0gZnJvbSAnLi9hcHAtZGV0YWlscydcbmltcG9ydCB7IE9mZnNldFRvcERpcmVjdGl2ZSwgU2Nyb2xsYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vbmF2LW1lbnUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9yZXN0LWFwaS5zZXJ2aWNlcydcbmltcG9ydCB7IE5hdk1lbnVzQ29tcG9uZW50IH0gZnJvbSAnLi9uYXYtbWVudXMvbmF2LW1lbnVzLmNvbXBvbmVudCdcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEdMT0JBTF9MSVNUIH0gZnJvbSAnLi9uYXZtZW51MSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xuYy1uYXZpZ2F0aW9uLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDonLi9hcHBsaWNhdGlvbi1zaWRlYmFyLnRlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6WycuL2FwcGxpY2F0aW9uLXNpZGViYXIuc2NzcycsJ2FwcGxpY2F0aW9uLXNpZGViYXIudGhlbWUuc2NzcyddLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblNpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgYXBwbGljYXRpb25EZXRhaWxzIDphcHBEZXRhaWxzO1xuXG4gIEBJbnB1dCgpIHNpZGVuYXY6IE1hdFNpZGVuYXY7XG5cbiAgQFZpZXdDaGlsZHJlbihPZmZzZXRUb3BEaXJlY3RpdmUpIGxpc3RJdGVtczogUXVlcnlMaXN0PE9mZnNldFRvcERpcmVjdGl2ZT47XG4gIEBWaWV3Q2hpbGQoU2Nyb2xsYWJsZURpcmVjdGl2ZSkgbGlzdDogU2Nyb2xsYWJsZURpcmVjdGl2ZTtcbiAgQFZpZXdDaGlsZCgnbmF2TWVudXNDb21wb25lbnQnKSBuYXZNZW51c0NvbXBvbmVudDpOYXZNZW51c0NvbXBvbmVudDtcblxuICBhY2NvdW50TmFtZTogYW55O1xuICBhY3RpdmVQYW5lbDogYW55O1xuICBuYXZDb2xsYXBzZWQ6Ym9vbGVhbiA9IGZhbHNlO1xuICBvbGRMaXN0SXRlbXM6IFF1ZXJ5TGlzdDxPZmZzZXRUb3BEaXJlY3RpdmU+O1xuICBpc0FkbWluUm9sZTogYm9vbGVhbiA9IGZhbHNlO1xuICBhZG1pblJvbGVzID0gWydTVVBFUl9BRE1JTicsJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuICBjdXJyZW50QXBwOiBhbnk7XG4gIHNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb246IGFueTtcbiAgbXlPYnNlcnZlcjogYW55O1xuICBleHBhbmRHbG9iYWxTZXR0aW5nczogYW55ID0gZmFsc2U7XG4gIGluQ29udGV4dEluc2lnaHRzV0xBcHA6IGJvb2xlYW47XG5cbiAgLy8gaXNHbG9iYWxTZXR0aW5nc01lbnVBY3RpdmU6Ym9vbGVhbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hdmlnYXRpb246IEFwcGxpY2F0aW9uU2lkZWJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIFJlc3RBcGlTZXJ2aWNlOiBSZXN0QXBpU2VydmljZSxcbiAgICBwcml2YXRlIGNvb2tpZTogQ29va2llU2VydmljZSxcbiAgICBwcml2YXRlIGNkcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uOlRyYW5zbGF0aW9uU2VydmljZVxuICAgICkge1xuICAgICAgdGhpcy5teU9ic2VydmVyID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5leHBhbmRHbG9iYWxTZXR0aW5ncyA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkuZXh0cmFzLnN0YXRlICYmIHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkuZXh0cmFzLnN0YXRlLmV4cGFuZFBhbmVsOyAgICAgICAgXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgbWFpblBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gIHB1YmxpYyBwcmV2QWN0aXZlSGVhZE1lbnU7XG4gIHB1YmxpYyB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMgPSBbXTtcbiAgcHVibGljIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudTogYW55W107XG4gIHB1YmxpYyBlcnJvck1zZzpzdHJpbmc7XG5cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10pe1xuICAgICAgbGV0IHVzZXJSb2xlID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10ucm9sZTtcbiAgICAgIHRoaXMuaXNBZG1pblJvbGUgPSB0aGlzLmFkbWluUm9sZXMuaW5kZXhPZih1c2VyUm9sZSkgPiAtMSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jYWxjdWxhdGVMZWZ0bmF2U3RhdHVzKCk7XG4gICAgLy8gY29uc3QgY29uZmlncyA9IHRoaXMucm91dGVyLmNvbmZpZztcbiAgICAvLyBmb3IobGV0IGNvbmZpZyBvZiBjb25maWdzKXtcbiAgICAvLyAgIGlmKGNvbmZpZy5jaGlsZHJlbil7XG4gICAgLy8gICAgIGZvcihsZXQgY2hpbGQgb2YgY29uZmlnLmNoaWxkcmVuKXtcbiAgICAvLyAgICAgICBjaGlsZC5jYW5BY3RpdmF0ZSA9IFtDYW5Mb2FkR3VhcmRdXG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgLy8gdGhpcy5yb3V0ZXIucmVzZXRDb25maWcoY29uZmlncyk7XG4gICAgdGhpcy5jaGVja0FwcGxpY2F0aW9uRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gIH1cblxuICBjYWxjdWxhdGVMZWZ0bmF2U3RhdHVzKCl7XG4gICAgaWYodGhpcy5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Upe1xuICAgICAgbGV0IHN0YXR1cyAgICAgICAgICA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2xlZnROYXZPcGVuU3RhdHVzJyk7XG4gICAgICB0aGlzLm5hdkNvbGxhcHNlZCAgID0gc3RhdHVzICYmIHN0YXR1cyA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAgICAgdGhpcy5zaWRlbmF2Lm9wZW5lZCA9IHN0YXR1cyAmJiBzdGF0dXMgPT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIHRoaXMuc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbiA9IHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Uuc3Vic2NyaWJlKChzdGF0dXMpPT57XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2xlZnROYXZPcGVuU3RhdHVzJyxKU09OLnN0cmluZ2lmeShzdGF0dXMpKTtcbiAgICAgICAgdGhpcy5uYXZDb2xsYXBzZWQgICA9IHN0YXR1cztcbiAgICAgICAgdGhpcy5zaWRlbmF2Lm9wZW5lZCA9IHN0YXR1cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyAgY2hlY2tBcHBsaWNhdGlvbkRldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzOiBhcHBEZXRhaWxzKSB7XG4gICAgdGhpcy5lcnJvck1zZyA9ICcnO1xuICAgIGlmKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkPT0nYWRzX2FtYXpvbl9kc3AnKXtcbiAgICAgIHRoaXMuZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGEoYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50KTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuY3JlYXRlQXBwRGV0YWlscyhhcHBsaWNhdGlvbkRldGFpbHMpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZUFwcERldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzOiBhcHBEZXRhaWxzKXtcbiAgICB0aGlzLmNyZWF0ZU5hdmlnYXRpb25TaWRlQmFyKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAvLyBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCl7XG4gICAgLy8gICB0aGlzLmdldEFjdGl2ZVJlY29Db3VudCh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgLy8gfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZU5hdmlnYXRpb25TaWRlQmFyKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscykge1xuICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0anNvbk1lbnVsaXN0cyhhcHBsaWNhdGlvbkRldGFpbHMpLnN1YnNjcmliZSgobWVudWxpc3RzOiBhbnkpID0+IHtcbiAgICAgIC8vIGxldCBtZW51bGlzdHMgPSBHTE9CQUxfTElTVFxuICAgICAgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMgPSB0aGlzLm5hdmlnYXRpb24uZ2V0TWVudUxpc3QoYXBwbGljYXRpb25EZXRhaWxzLCBtZW51bGlzdHMpO1xuICAgICAgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUgPSB0aGlzLm5hdmlnYXRpb24uZ2V0R2xvYmFsU2V0dGluZ3NNZW51KGFwcGxpY2F0aW9uRGV0YWlscywgbWVudWxpc3RzKTtcbiAgICAgIHRoaXMuZXhwYW5kQ3VycmVudE1lbnVPbmx5KGFwcGxpY2F0aW9uRGV0YWlscywgZmFsc2UpO1xuICAgICAgdGhpcy5leHBhbmRDaGlsZE1lbnVPbmx5KHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KTtcbiAgICAgIHRoaXMuY2hlY2tGb3JSZWRpcmVjdGlvbihhcHBsaWNhdGlvbkRldGFpbHMsIG1lbnVsaXN0cyk7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucyAsIHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVNZW51KCk7XG4gICAgICB0aGlzLnNldE1lbnVMaXN0KGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkLHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zKTtcbiAgICAgIHRoaXMuaW5Db250ZXh0SW5zaWdodHNXTEFwcCA9IHRoaXMuaGlkZU1lbnVGb3JXTCgpO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldE1lbnVMaXN0KGFwcElkLG1lbnVMaXN0KXtcbiAgICB2YXIgYXBwRGV0YWlsczphbnkgPSBuZXcgT2JqZWN0KCk7XG4gICAgYXBwRGV0YWlscy5hcHBpY2F0aW9uSWQgPSBhcHBJZDtcbiAgICBhcHBEZXRhaWxzLm1lbnVMaXN0ID0gbWVudUxpc3QuZmluZCgobWVudSk9PnsgcmV0dXJuIG1lbnUuaWQgPT0gYXBwSWR9KVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBEZXRhaWxzJyxKU09OLnN0cmluZ2lmeShhcHBEZXRhaWxzKSk7XG4gIH1cblxuICBwdWJsaWMgbWVudUNsaWNrZWQob2JqOiBhbnkpIHtcbiAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscywgdHJ1ZSk7XG4gICAgdGhpcy5leHBhbmRDaGlsZE1lbnVPbmx5KHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KTtcbiAgICBpZihvYmopIHtcbiAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBvYmouYWN0aXZlUGFuZWw7XG4gICAgfVxuICB9XG4gIFxuICBwdWJsaWMgZXhwYW5kQ2hpbGRNZW51T25seSh0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpIHtcbiAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgLy8gdGhpcy5pc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZSA9IGZhbHNlO1xuICAgICAgbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgICBsZXQgcm91dGVVcmwgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgIGxldCBjdXJyZW50Um91dGUgPSByb3V0ZVVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICBpZih0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUgJiYgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51Lmxlbmd0aCkge1xuICAgICAgICAgIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgICBpZih0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0uY2hpbGRyZW4gJiYgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLmNoaWxkcmVuLmxlbmd0aCl7XG4gICAgICAgICAgZm9yKGxldCBtZW51IG9mIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5jaGlsZHJlbil7XG4gICAgICAgICAgICBpZihtZW51LnJvdXRlPT1jdXJyZW50Um91dGUpe1xuICAgICAgICAgICAgICB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0ucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAvLyB0aGlzLmlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwKVxuICAgXG4gIH1cblxuICBwdWJsaWMgZXhwYW5kQ3VycmVudE1lbnVPbmx5KGFwcGxpY2F0aW9uRGV0YWlscywgb25NZW51Q2xpY2tlZCkge1xuICAgIGZvcihsZXQgaGVhZE1lbnUgb2YgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMpIHtcbiAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIGZvcihsZXQgaGVhZE1lbnUgb2YgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMpIHtcbiAgICAgICAgaWYoaGVhZE1lbnUuaWQgPT0gYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpIHtcbiAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgIH0gZWxzZSBpZihoZWFkTWVudS5pZC5pbmRleE9mKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+IC0xKSB7XG4gICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcblxuICAgICAgICAgIGxldCB1cmxBcnJheSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpO1xuICAgICAgICAgIGxldCByb3V0ZVVybCA9IHVybEFycmF5W3VybEFycmF5Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmKChoZWFkTWVudS5pZD09IFwiYWRzX2FtYXpvbl9zZWxsZXJfc2VsbGVyX2FuYWx5dGljc1wiIHx8IGhlYWRNZW51LmlkPT0gXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCIpICYmIHVybEFycmF5Lmxlbmd0aCA+Mil7XG4gICAgICAgICAgICB1cmxBcnJheT0gdXJsQXJyYXkuc2xpY2UodXJsQXJyYXkubGVuZ3RoLTIpO1xuICAgICAgICAgICAgcm91dGVVcmw9IHVybEFycmF5LmpvaW4oJy8nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX2NvbnRlbnRfY29udGVudF9hbmFseXRpY3NcIiAmJiB0aGlzLm5hdmlnYXRpb24uY29udGVudEFwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEgKSB7XG4gICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICB9IGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX2NvbnRlbnRfc2hhcmVfb2Zfdm9pY2VcIiAmJiB0aGlzLm5hdmlnYXRpb24uc292QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSkge1xuICAgICAgICAgICAgICBpZigoY3VycmVudFJvdXRlICE9ICdwcm9kdWN0LW1ldGEtZGF0YScgJiYgY3VycmVudFJvdXRlICE9ICdicmFuZC10ZXJtcy1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdsYWJlbHMtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzLW1hcHBpbmcnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc292LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2NvbnRlbnQtc2V0dGluZ3MnKSB8fCAhdGhpcy5jdXJyZW50QXBwIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdTaGFyZSBPZiBWb2ljZScpIHtcbiAgICAgICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgICAgICAgaWYob25NZW51Q2xpY2tlZCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnU2hhcmUgT2YgVm9pY2UnKSB7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9zZWxsZXJfc2VsbGVyX2FuYWx5dGljc1wiICYmIHRoaXMubmF2aWdhdGlvbi5zZWxsZXJBbmFseXRpY3NBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xKXtcbiAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9zZWxsZXJfdmVuZG9yX2FuYWx5dGljc1wiICYmIHRoaXMubmF2aWdhdGlvbi52ZW5kb3JBbmFseXRpY3NBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xKSB7XG4gICAgICAgICAgICBpZigoY3VycmVudFJvdXRlICE9ICdwcm9kdWN0LW1ldGEtZGF0YScgJiYgY3VycmVudFJvdXRlICE9ICdicmFuZC10ZXJtcy1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdsYWJlbHMtc2V0dGluZ3MnICAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcy1tYXBwaW5nJyAmJiBjdXJyZW50Um91dGUgIT0gJ3Nvdi1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdjb250ZW50LXNldHRpbmdzJykgfHwgIXRoaXMuY3VycmVudEFwcCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnVmVuZG9yIEFuYWx5dGljcycpIHtcbiAgICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICAgICAgaWYob25NZW51Q2xpY2tlZCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnVmVuZG9yIEFuYWx5dGljcycpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vICBpZihoZWFkTWVudS5jaGlsZHJlbil7XG4gICAgICAgIC8vICAgIGhlYWRNZW51LmNoaWxkcmVuLmZvckVhY2gobWVudSA9PiB7XG4gICAgICAgIC8vICAgICAgaWYgKG1lbnUuY2hpbGRyZW4gJiYgbWVudS50eXBlID09IFwiZXhwYW5kYWJsZVwiKSB7XG4gICAgICAgIC8vICAgICAgICBoZWFkTWVudS5jaGlsZHJlbi5mb3JFYWNoKHN1Ym1lbnUgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGlmKHRoaXMuaXNDaGVja0FjdGl2ZVJvdXRlKHN1Ym1lbnUucm91dGUsaGVhZE1lbnUpKXtcbiAgICAgICAgLy8gICAgICAgICAgICBtZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgLy8gICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG5cbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICAgICB9KVxuICAgICAgICAvLyAgICAgIH1cbiAgICAgICAgLy8gICAgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICBwdWJsaWMgZ2V0VG9vbHRpcEluZm8oaGVhZG1lbnUpe1xuICAgIGlmKHRoaXMuc2lkZW5hdiAmJiB0aGlzLnNpZGVuYXYub3BlbmVkKXtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkQXBwbGljYXRpb24oaGVhZG1lbnUpe1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnNlbGVjdGVkQXBwbGljYXRpb24odGhpcy5hcHBsaWNhdGlvbkRldGFpbHMsIGhlYWRtZW51KTtcbiAgfVxuICBnZXQgc2lkZUlkSW5mbygpe1xuICAgIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCl7XG4gICAgICByZXR1cm4gTnVtYmVyKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZClcbiAgICB9ZWxzZSBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1snc2l0ZUlkJ10pe1xuICAgICAgcmV0dXJuIE51bWJlcih0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1snc2l0ZUlkJ10pXG4gICAgfVxuICAgIHJldHVybiAxO1xuICB9XG4gIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gICAgdHJ5e1xuICAgICAgbGV0IGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0cnVlO1xuICAgICAgbGV0IGlzTWVudVZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAgICAgbGV0IGlzTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0cnVlO1xuICAgICAgbGV0IGlzcmVkaXJlY3RlZCA9IGZhbHNlO1xuICAgICAgbGV0IGFwcGxpY2F0aW9uSWRMaXN0ID0gW1wiYWRzX2FtYXpvbl9zZWxsZXJfc2VsbGVyX2FuYWx5dGljc1wiICwgXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCJdXG5cbiAgICAgIGxldCBtZW51bGlzdCA9IGFwcGxpY2F0aW9uSWRMaXN0LmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID4gLTEgJiYgYXBwbGljYXRpb25EZXRhaWxzLmxpc3RNZW51cyAmJiBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzLmxlbmd0aCA+IDAgPyBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzIDogbWVudWxpc3RzO1xuXG4gICAgICBjb25zdCByb2xlID0gWydTVVBFUl9BRE1JTicsICdTVVBFUl9BRE1JTl9SRUFEX09OTFknXTtcbiAgICAgIGlmIChyb2xlLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLnVzZXJJbmZvLnJvbGUpID09IC0xKSB7XG4gICAgICAgIFxuICAgICAgICBsZXQgYXBwbGljYXRpb25NZW51ZXMgPSBtZW51bGlzdCAmJiBtZW51bGlzdC5sZW5ndGggPiAwICYmIG1lbnVsaXN0LmZpbmQoKG1lbnVzKT0+e1xuICAgICAgICAgIHJldHVybiBtZW51cy5pZCA9PSBhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5vcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4pIHtcbiAgICAgICAgICBpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yTm90T3JnU2V0dGluZ3MoYXBwbGljYXRpb25NZW51ZXMub3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzKSB7XG4gICAgICAgICAgaXNNZW51VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvclJvbGVzKGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzX25vdF9pbikge1xuICAgICAgICAgIGlzTWVudU5vdFZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzX25vdF9pbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMub3JnX3VzZXJfY3RybCkge1xuICAgICAgICAgIGlzTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JPcmdXaXRoVXNlclJvbGUoYXBwbGljYXRpb25NZW51ZXMub3JnX3VzZXJfY3RybCxhcHBsaWNhdGlvbk1lbnVlcywgYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5pZCA9PSBcImFtYy1wbGF0Zm9ybS13ZWJcIiAmJiBhcHBsaWNhdGlvbk1lbnVlcy5jaGlsZHJlbikge1xuICAgICAgICAgIGxldCBpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAgICAgICAgIGxldCBpc0NoaWxkTWVudU5vdFZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAgICAgICAgIGxldCBpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0cnVlO1xuXG4gICAgICAgICAgY29uc3QgY2hpbGRtZW51ID0gdGhpcy52YWxpZGF0ZVJvdXRlQnlTdGF0ZSggdGhpcy5yb3V0ZXIgLCBhcHBsaWNhdGlvbk1lbnVlcy5jaGlsZHJlbik7XG5cbiAgICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzX25vdF9pbikge1xuICAgICAgICAgICAgaXNDaGlsZE1lbnVOb3RWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9ydmlzaWJpbGl0eVJvbGVzTm90SW4oY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXNfbm90X2luKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzKSB7XG4gICAgICAgICAgICBpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JSb2xlcyhjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNoaWxkbWVudSAmJiBjaGlsZG1lbnUub3JnX3VzZXJfY3RybCkge1xuICAgICAgICAgICAgaXNDaGlsZE1lbnVyT3JnV2l0aFVzZXJSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKGNoaWxkbWVudS5vcmdfdXNlcl9jdHJsLGNoaWxkbWVudSwgYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICgoIWlzQ2hpbGRNZW51Tm90VmlzaWJsZUJ5Um9sZSB8fCAhaXNDaGlsZE1lbnVWaXNpYmxlQnlSb2xlIHx8ICFpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUpICYmIGNoaWxkbWVudSkge1xuICAgICAgICAgICAgaXNyZWRpcmVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9cIl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKCFpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nIHx8ICFpc01lbnVWaXNpYmxlQnlSb2xlIHx8ICFpc01lbnVOb3RWaXNpYmxlQnlSb2xlIHx8ICFpc01lbnVyT3JnV2l0aFVzZXJSb2xlKSAmJiAhaXNyZWRpcmVjdGVkKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRBcHApIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUodGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnNbMF0uZGVmYXVsdHVybCk7ICBcbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUoYXBwbGljYXRpb25NZW51ZXMuZGVmYXVsdHVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfWNhdGNoKGVycm9yKXtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVSb3V0ZUJ5U3RhdGUoc3RhdGUgLCBsaXN0TWVudXMpe1xuICAgIHRyeXtcbiAgICAgICAgY29uc3QgZmluZFJvdXRlID0gbGlzdE1lbnVzLmZpbmQobGlzdCA9PiB7XG4gICAgICAgICAgICBpZihsaXN0LmxpbmsgPT0gJ2FtYycrc3RhdGUudXJsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYobGlzdC5tYXRjaFJvdXRlcyAmJiBsaXN0Lm1hdGNoUm91dGVzLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIGlmKGxpc3QubWF0Y2hSb3V0ZXMuaW5jbHVkZXMoc3RhdGUudXJsKSl7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpbmRSb3V0ZTtcbiAgICB9Y2F0Y2goZXJyb3Ipe1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG4gIFxuICAvLyBwdWJsaWMgY2hlY2tGb3JSZWRpcmVjdGlvbihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgLy8gICBsZXQgcm91dGUgPSAnJztcbiAgLy8gICBpZihhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQgJiYgISh0aGlzLm5hdmlnYXRpb24uaXNIYXZpbmdBbnlBY3RpdmVTdWJzKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkLGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24sYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpKSl7XG4gIC8vICAgICBzd2l0Y2goYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpe1xuICAvLyAgICAgICBjYXNlICdDT05URU5UJzoge1xuICAvLyAgICAgICAgICAgcm91dGUgPSAnY29udGVudC9zaGFyZS1vZi12b2ljZSdcbiAgLy8gICAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0RTUCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdkc3Avb3JkZXInXG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQU1TX0FUVFJJQlVUSU9OJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNhbXBhaWducydcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdTRUxMRVJfQ0VOVFJBTCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtY29udGVudC1kYXNoYm9hcmQvc2VsbGVyLXNhbGVzLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdWRU5ET1JfQ0VOVFJBTCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtY29udGVudC1kYXNoYm9hcmQvY3VzdG9tLXJlcG9ydHMtdmVuZG9yLXNhbGVzLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdJTlNUQUNBUlQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnaW5zdGFjYXJ0L2luc3RhY2FydC1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQ1JJVEVPJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2NyaXRlby9jcml0ZW8tb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1dBTE1BUlQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnd2FsbWFydC8nO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0FNQVpPTl9NQVJLRVRJTkdfQ0xPVUQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnZHAvZGF0YS1hbmFseXRpY3MtZ2V0dGluZy1zdGFydGVkJztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdBTVNfVkVORE9SJzpcbiAgLy8gICAgICAgY2FzZSAnQU1TX1NFTExFUic6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtcGFnZS1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUocm91dGUpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YShjdXJyZW50QWNjb3VudCl7XG4gICAgdHJ5IHtcbiAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldFN0cnVjdHVyZUFQSVN1cHBvcnREYXRhKGN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkLGN1cnJlbnRBY2NvdW50LmJ1c2luZXNzR3JvdXBJZCxjdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpLnN1YnNjcmliZSggXG4gICAgICAocmVzcG9uc2U6YW55KSA9PiB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc1N0cnVjdHVyZUFwaVN1cHBvcnQgPSByZXNwb25zZSA/IHJlc3BvbnNlWydzdHJ1Y3R1cmVBcGlTdXBwb3J0J10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3JlYXRlQXBwRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOmFueSkgPT57XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc1N0cnVjdHVyZUFwaVN1cHBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3JlYXRlQXBwRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIH1cbiAgXG4gIHB1YmxpYyBzY3JvbGxUb0FjdGl2ZU1lbnUoKXtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmKHRoaXMubGlzdEl0ZW1zICYmIHRoaXMubGlzdEl0ZW1zLmZpbmQoKF8sIGkpID0+ICBfLmlzQWN0aXZlSXRlbSkgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgdGhpcy5saXN0LnNjcm9sbFRvcCA9IHRoaXMubGlzdEl0ZW1zLmZpbmQoKF8sIGkpID0+ICBfLmlzQWN0aXZlSXRlbSkub2Zmc2V0VG9wO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGVja0FjdGl2ZVJvdXRlKG1lbnUsaGVhZG1lbnUscGFyZW50TWVudSA9IG51bGwpIHtcbiAgICAvLyBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAvLyBsZXQgcm91dGVVcmwgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcbiAgICAvLyBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICAvLyBsZXQgcm91dGU9bWVudS5yb3V0ZTtcbiAgICAvLyBsZXQgcGFnZU5hbWU7XG4gICAgLy8gaWYocm91dGUpe1xuICAgIC8vIGxldCBzcGxpdGVkVVJMID0gcm91dGUuc3BsaXQoXCIvXCIpO1xuICAgIC8vIHBhZ2VOYW1lID0gc3BsaXRlZFVSTC5sZW5ndGggPjAgPyAgc3BsaXRlZFVSTFtzcGxpdGVkVVJMLmxlbmd0aCAtIDFdIDogcm91dGU7XG4gICAgLy8gfVxuXG4gICAgbGV0IHJvdXRlVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIGxldCBjdXJyZW50Um91dGUgPSByb3V0ZVVybC5zcGxpdCgnPycpWzBdO1xuICAgIGxldCByb3V0ZT1tZW51LnJvdXRlO1xuICAgIGxldCBwYWdlTmFtZTtcbiAgICBpZihyb3V0ZSl7XG4gICAgICBwYWdlTmFtZSA9IHJvdXRlO1xuICAgIH1cblxuICAgIGlmICgoY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZSB8fCBjdXJyZW50Um91dGUgPT09IFwiL1wiK3BhZ2VOYW1lK1wiL2tleXdvcmQtcmVwb3J0XCIgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXN1Z2dlc3Rpb25zL2F1dG9cIiB8fCBjdXJyZW50Um91dGUgPT09IFwiL1wiK3BhZ2VOYW1lK1wiL2tleXdvcmQtc3VnZ2VzdGlvbnMvbWFudWFsXCIpICYmIGhlYWRtZW51IT11bmRlZmluZWQpIHtcbiAgICAgIGlmKHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PT09IHVuZGVmaW5lZCl7XG4gICAgICAgIGhlYWRtZW51LmlzQWN0aXZlPXRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PWhlYWRtZW51O1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51LmlzQWN0aXZlPWZhbHNlO1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcbiAgICAgIH1cbiAgICAgIGlmKHBhcmVudE1lbnUgIT0gbnVsbCl7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBwYXJlbnRNZW51LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfWVsc2UgaWYobWVudSAmJiBtZW51Lm1hdGNoUm91dGVzICYmIHRoaXMucm91dGVyLnVybCl7XG4gICAgICBpZiAobWVudS5tYXRjaFJvdXRlcy5pbmRleE9mKHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdKSA+IC0xKSB7XG4gICAgICAgIGhlYWRtZW51LmlzQWN0aXZlPXRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PWhlYWRtZW51O1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmKHBhcmVudE1lbnUgIT0gbnVsbCl7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBwYXJlbnRNZW51LmlkO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBrZWVwTWVudUV4cGFuZGVkKHBhcmVudE1lbnVJZDpzdHJpbmcpIHtcbiAgICBpZihwYXJlbnRNZW51SWQuaW5kZXhPZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+PSAwICApe1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFsbE1lbnVDb2xsYXBzZSgpe1xuICAgIGZvcihsZXQgaGVhZE1lbnUgb2YgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpIHtcbiAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW9kZmljYXRpb25EYXRhKGRhdGE6IGFueSk6IGFueSB7XG4gICAgbGV0IGNvbmZpZ3MgPSB0aGlzLm5hdmlnYXRpb24uZ2V0VHlwZVN0YXR1c0NvbmZpZ3MoKTtcblx0XHRsZXQgb3JkZXIgPSBPYmplY3Qua2V5cyhjb25maWdzKTtcblx0XHRpZihvcmRlci5pbmRleE9mKGRhdGEudHlwZSkgPiAtMSl7XG5cdFx0XHRkYXRhLmFjdGl2ZSA9IGNvbmZpZ3NbZGF0YS50eXBlXSA/IGNvbmZpZ3NbZGF0YS50eXBlXSA6IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gZGF0YTtcblx0fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIHRoaXMuc2hvd01lbnVJY29uKCk7XG4gICAgdGhpcy5jaGVja0FwcGxpY2F0aW9uRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG5cbiAgfVxuXG4gIHB1YmxpYyBnb1RvQXBwbGljYXRpb24oaXRlbSkge1xuICAgIGlmKGl0ZW0uZGVmYXVsdHVybCl7XG4gICAgICB0aGlzLmdvVG9BcHBEZWZhdWx0UGFnZShpdGVtLCBpdGVtLmlkKTtcbiAgICB9ZWxzZXtcbiAgICAgIGlmKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmKGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlblswXS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5nb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbS5jaGlsZHJlblswXS5jaGlsZHJlblswXSwgaXRlbS5pZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbS5jaGlsZHJlblswXSwgaXRlbS5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0sIGl0ZW0uaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZih0aGlzLnNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb24pe1xuICAgICAgdGhpcy5zaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdvVG9BcHBEZWZhdWx0UGFnZShpdGVtLCBhcHBJZCkge1xuICAgIHRoaXMubmF2TWVudXNDb21wb25lbnQub25TZWxlY3RNZW51KGV2ZW50LCBpdGVtLCBhcHBJZCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZU1lbnVGb3JXTCgpe1xuICAgICAgbGV0IGlzT3JnU2V0dGluZztcbiAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlzT3JnU2V0dGluZyA9IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzLmZpbHRlcihmdW5jdGlvbihvcmdTZXR0aW5nKXtcbiAgICAgICAgICBpZiggb3JnU2V0dGluZy5zZXR0aW5nID09PSAnSUFDX0lOU0lHSFRTJyAmJiAoIW9yZ1NldHRpbmcudmFsdWUgfHwgb3JnU2V0dGluZy52YWx1ZSAmJiBvcmdTZXR0aW5nLnZhbHVlID09ICdBQ1RJVkUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICByZXR1cm4gKGlzT3JnU2V0dGluZyAhPSBudWxsICYmICggdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkID4gMTEgfHwgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10ucm9sZSA9PT0gJ0lBQ19CUkFORF9SRUFEX09OTFknKSk7XG4gIH1cblxuICAvLyBwdWJsaWMgaXNBcHBsaWNhdGlvbkFjdGl2ZShwYXJlbnRNZW51SWQpIHtcbiAgLy8gICBpZihwYXJlbnRNZW51SWQuaW5kZXhPZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+PSAwICAmJiB0aGlzLmlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlKXtcbiAgLy8gICAgIHJldHVybiB0cnVlO1xuICAvLyAgIH1cbiAgLy8gICBlbHNle1xuICAvLyAgICAgcmV0dXJuIGZhbHNlO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIFxufVxuIiwiPGRpdiBpZD1cImxvYWRlcl9zb3ZcIj5cbiAgPGRpdiBpZD1cImxvYWRpbmdfZGl2XCIgKm5nSWY9XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvXCI+XG4gICAgPGRpdj5cbiAgICAgIDxkaXYgaWQ9XCJsb2FkZXJcIiAqbmdJZj1cInNpZGVJZEluZm8gIT09IDFcIlxuICAgICAgICBjbGFzcz1cInNpdGVfe3tzaWRlSWRJbmZvfX1cIj5cbiAgICAgICAgPGltZyBzcmM9XCJ7e2FwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmxvZ299fVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGlkPVwibG9hZGVyX2ltZ1wiICpuZ0lmPVwic2lkZUlkSW5mbyA9PSAxXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvaGFwcHlfZXllc19jbG9zZWRfc21hbGwuc3ZnXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNsYXNzPVwibG9hZGVyX3Byb2dyZXNzLWJhci1wb3NpdGlvblwiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4RmlsbCAqbmdJZj1cImVycm9yTXNnLmxlbmd0aCA9PSAwIGVsc2UgZXJyb3JCbG9ja1wiIHRyYW5zbGF0ZT1cIm5vXCIgaWQ9XCJhbmd1bGFyLTE2LXZlcnNpb25cIj5cbiAgPG1hdC10b29sYmFyIGNsYXNzPVwicG9ydGFsLXNpZGUtbWVudS10b3AtdG9vbGJhclwiPlxuICAgIDxtYXQtdG9vbGJhci1yb3cgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3J0YWwtZm9yZ2V0LWhlYWRpbmctY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW1lbnUtbG9nby1ob2xkZXJcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2lkZUlkSW5mbyAhPT0gMVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmF2aWNvblwiIHN0eWxlPVwid2lkdGg6IDQwcHggIWltcG9ydGFudDtkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhbmF2Q29sbGFwc2VkXCIgW2FsdF09XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5maXJzdE5hbWVcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uXCIgLz5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmxvZ29cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcIiAgKm5nSWY9XCJuYXZDb2xsYXBzZWRcIiBjbGFzcz1cImxvZ28tZGltZW5zaW9uXCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2lkZUlkSW5mbyA9PSAxXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2xvZ29zL2ludGVudHdpc2Vsb2dvLnN2Z1wiIHN0eWxlPVwid2lkdGg6IDQwcHggIWltcG9ydGFudDtkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhbmF2Q29sbGFwc2VkXCIgW2FsdF09XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5maXJzdE5hbWVcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uIGludGVudHdpc2UtZmF2aWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9JbnRlbnR3aXNlLnN2Z1wiICBzdHlsZT1cImRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcIiAqbmdJZj1cIm5hdkNvbGxhcHNlZFwiIFthbHRdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmlyc3ROYW1lXCIgY2xhc3M9XCJsb2dvLWRpbWVuc2lvbiBpbnRlbnR3aXNlLWxvZ29cIj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC10b29sYmFyLXJvdz5cbiAgPC9tYXQtdG9vbGJhcj5cbiAgPCEtLSA8ZGl2IGNsYXNzPVwic2lkZWJhci1jb2xsYXBzZS1pY29uXCIgKm5nSWY9XCJpc0FkbWluUm9sZVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJzaWRlbWVudS1pY29uLXRvcFwiIChjbGljayk9XCJhbGxNZW51Q29sbGFwc2UoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWRcIj5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+IC0tPlxuICA8ZGl2ICpuZ0lmPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZCAmJiAhaW5Db250ZXh0SW5zaWdodHNXTEFwcFwiIGNsYXNzPVwiYXBwLW1lbnUtY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImFwcC1tZW51LWJ1dHRvblwiICpuZ0lmPVwidG9EaXNwbGF5QXBwbGljYXRpb25zICYmIHRvRGlzcGxheUFwcGxpY2F0aW9ucy5sZW5ndGggPT0gMVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbmFtZVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjdXJyZW50QXBwPy5uYW1lXCIgY2xhc3M9XCJzaWRlTmF2SWNvbiB7e2N1cnJlbnRBcHA/Lm5hbWUuc3BsaXQoJyAnKS5qb2luKCcnKX19XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtbWVudS1idXR0b25cIiBbbWF0LW1lbnUtdHJpZ2dlci1mb3JdPVwiYXBwTWVudVwiICpuZ0lmPVwidG9EaXNwbGF5QXBwbGljYXRpb25zICYmIHRvRGlzcGxheUFwcGxpY2F0aW9ucy5sZW5ndGggPiAxXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImFwcC1uYW1lXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPlxuICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTRweDtcIiBbaW5uZXJIVE1MXT1cInNlbGVjdGVkQXBwbGljYXRpb24oY3VycmVudEFwcClcIj48L2xhYmVsPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImN1cnJlbnRBcHA/LmJhZGdlXCIgY2xhc3M9XCJiYWRnZS10ZXh0IHNvdi1iZXRhLXBvc2l0aW9uXCI+e3tjdXJyZW50QXBwLmJhZGdlfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWljb25cIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPG1hdC1tZW51ICNhcHBNZW51PVwibWF0TWVudVwiIGNsYXNzPVwiYXBwLW1lbnVcIiBbYmFja2Ryb3BDbGFzc109XCInYWxsLW1vZHVsZS1tZW51cydcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWRtZW51IG9mIHRvRGlzcGxheUFwcGxpY2F0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVudS1vcHRpb25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJnb1RvQXBwbGljYXRpb24oaGVhZG1lbnUpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZX1cIiBjbGFzcz1cInt7aGVhZG1lbnUuaWR9fV9pY29uXCIgKm5nSWY9XCJoZWFkbWVudS5uYW1lICE9ICdBY2NvdW50IE1hbmFnZW1lbnQnXCIgdHJhbnNsYXRlPVwibm9cIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzaWRlTmF2SWNvbiBjaGlsZHJlbi1pY29uXCIgW25nQ2xhc3NdPVwiaGVhZG1lbnUubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bGFiZWwgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KVwiPjwvbGFiZWw+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkbWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiIFtpbm5lckhUTUxdPVwiaGVhZG1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtbWVudT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwb3J0YWwtc2lkbmF2LW1lbnVcIiBmeEZsZXg9XCJub2dyb3cgbm9zaHJpbmtcIiBhcHBTY3JvbGxhYmxlIFtuZ0NsYXNzXT1cInsnd2hpdGVMYWJlbFNpZGVuYXYnIDogaW5Db250ZXh0SW5zaWdodHNXTEFwcH1cIj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiaGVhZG1lbnUucGFuZWxPcGVuU3RhdGUgPT0gdHJ1ZVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICpuZ0Zvcj1cImxldCBoZWFkbWVudSBvZiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnNcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGhlYWRtZW51LmlzQWN0aXZlIH1cIlxuICAgICAgKG9wZW5lZCk9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhoZWFkbWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIlxuICAgICAgICAqbmdJZj1cImhlYWRtZW51LnR5cGUgPT0gJ2V4cGFuZGFibGUnIGVsc2Ugc2luZ2xlTWVudXNcIiBjbGFzcz1cIm1haW4tZXhwYW5zaW9uLXBhbmVsLWhlYWRlclwiXG4gICAgICAgIChjbGljayk9XCJnb1RvQXBwbGljYXRpb24oaGVhZG1lbnUpXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7e2hlYWRtZW51LmlkfX1faWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJzaWRlbWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uTWVudVwiPlxuICAgICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkbWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiIFtpbm5lckhUTUxdPVwiaGVhZG1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIiFoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYWluLWNoZXZyb24taWNvblwiICpuZ0lmPVwiaGVhZG1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICA8bWF0LWxpc3QgY2xhc3M9XCJwYWRkaW5nLTBweFwiICpuZ0Zvcj1cImxldCBtZW51IG9mIGhlYWRtZW51LmNoaWxkcmVuXCIgW2F0dHIuaWRdPVwiaGVhZG1lbnUuaWRcIiBbbmdDbGFzc109XCJ7J2dyb3VwLW5hdi1tZW51JzogbWVudS5jaGlsZHJlbiB9XCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICpuZ0lmPVwibWVudS5jaGlsZHJlbiBlbHNlIGxpc3RNZW51XCIgY2xhc3M9XCJkaXYtYmFja2dyb3VuZC1jb2xvci13aGl0ZVwiIFtleHBhbmRlZF09XCJtZW51LmlkID09IGFjdGl2ZVBhbmVsXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZVBhbmVsJzogbWVudS5pZCA9PSBhY3RpdmVQYW5lbCAsICd3aGl0ZUxhYmVsQWN0aXZlJyA6IGluQ29udGV4dEluc2lnaHRzV0xBcHB9XCIgaGlkZVRvZ2dsZT1cInRydWVcIlxuICAgICAgICAgIChvcGVuZWQpPVwibWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cIm1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZVwiPlxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydoZWFkZXItYm9yZGVyJzogbWVudS5wYW5lbE9wZW5TdGF0ZSA9PT0gdHJ1ZSwgJ2hlYWRlci1ib3JkZXItbm9uZSc6IG1lbnUucGFuZWxPcGVuU3RhdGUgPT09IGZhbHNlIH1cIj5cbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3ttZW51LmlkfX1faWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGltZyBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiICpuZ0lmPVwiKG1lbnUuaWNvbiAmJiBtZW51Lmljb24gIT0gJycpIGVsc2UgZGlzcGxheUluaXRpYWxzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpZGUtbWVudS1pY29uIHNpZGUtbWVudS1pY29uLWNvbG9yXCIgc3JjPVwiYXNzZXRzL3NpZGVtZW51LWljb25zL3t7bWVudS5pY29ufX1cIiAvPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc3BsYXlJbml0aWFscz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW1lbnUtc3ltYm9sXCI+XG4gICAgICAgICAgICAgICAgICB7e21lbnUuc3ltYm9sfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uU3VibWVudXNcIj48c3BhbiBjbGFzcz1cIm1lbnUtbmFtZS1leHBhbmRhYmxlXCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKG1lbnUpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvbiBsZXZlbC10d28tYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdWItY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3ViLWNoZXZyb24taWNvblwiICpuZ0lmPVwibWVudS5wYW5lbE9wZW5TdGF0ZVwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICA8IS0tIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPiAtLT5cbiAgICAgICAgICA8bWF0LW5hdi1saXN0ICpuZ0Zvcj1cImxldCBjaGlsZE1lbnUgb2YgbWVudS5jaGlsZHJlbjtcIiBjbGFzcz1cInN1Yi1jaGlsZC1tZW51XCI+XG4gICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoY2hpbGRNZW51LGhlYWRtZW51LG1lbnUpXCIgW2l0ZW1dPVwiY2hpbGRNZW51XCJcbiAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCIgW3BhcmVudFBhbmVsSWRdPVwibWVudS5pZFwiXG4gICAgICAgICAgICAgIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlzdE1lbnU+XG4gICAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIGFwcE9mZnNldFRvcCBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51KVwiIFtpdGVtXT1cIm1lbnVcIlxuICAgICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwiaGVhZG1lbnUuaWRcIlxuICAgICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1lbnVzPlxuICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgaWQ9XCJ7e2hlYWRtZW51LmlkfX1cIiBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoaGVhZG1lbnUsaGVhZG1lbnUpXCJcbiAgICAgICAgICAgIFtpdGVtXT1cImhlYWRtZW51XCIgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKGhlYWRtZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiXG4gICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwb3J0YWwtZ2xvYmFsLXNldHRpbmctbWVudSBzdGlja3lfYm90dG9tX21lbnVcIiAqbmdJZj1cIiFpbkNvbnRleHRJbnNpZ2h0c1dMQXBwXCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cInNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPT0gdHJ1ZSB8fCBleHBhbmRHbG9iYWxTZXR0aW5nc1wiIGhpZGVUb2dnbGU9XCJ0cnVlXCIgaWQ9XCJ7e3NldHRpbmdzSGVhZE1lbnUuaWQgKyAnbWVudSd9fVwiXG4gICAgICAqbmdGb3I9XCJsZXQgc2V0dGluZ3NIZWFkTWVudSBvZiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHNldHRpbmdzSGVhZE1lbnUuaXNBY3RpdmUgfVwiXG4gICAgICAob3BlbmVkKT1cInNpZGVuYXYub3BlbigpOyBzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZVwiIChjbG9zZWQpPVwic2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlOyBleHBhbmRHbG9iYWxTZXR0aW5ncyA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIlxuICAgICAgICAqbmdJZj1cInNldHRpbmdzSGVhZE1lbnUudHlwZSA9PSAnZXhwYW5kYWJsZScgZWxzZSBzaW5nbGVNZW51c1wiIGNsYXNzPVwibWFpbi1leHBhbnNpb24tcGFuZWwtaGVhZGVyXCJcbiAgICAgICAgW25nQ2xhc3NdPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZCA/ICcnIDogJ3N0aWNreS1ib3R0b20tY2xvc2VkJ1wiPlxuICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRzX2FjY291bnRfbWdtdF9pY29uXCI+PC9zcGFuPlxuICAgICAgICAgIDxoMyBjbGFzcz1cInNpZGVtZW51LWhlYWRpbmcgYXBwbGljYXRpb25NZW51XCI+XG4gICAgICAgICAgICA8bGFiZWwgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKHNldHRpbmdzSGVhZE1lbnUpXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwic2V0dGluZ3NIZWFkTWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYWluLWNoZXZyb24taWNvblwiICpuZ0lmPVwiIXNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cInNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICA8bWF0LWxpc3QgY2xhc3M9XCJwYWRkaW5nLTBweFwiICpuZ0Zvcj1cImxldCBtZW51IG9mIHNldHRpbmdzSGVhZE1lbnUuY2hpbGRyZW5cIiBbYXR0ci5pZF09XCJzZXR0aW5nc0hlYWRNZW51LmlkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydncm91cC1uYXYtbWVudSc6IG1lbnUuY2hpbGRyZW4gfVwiPlxuICAgICAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIGFwcE9mZnNldFRvcCBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LHNldHRpbmdzSGVhZE1lbnUpXCIgW2l0ZW1dPVwibWVudVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiXG4gICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgPC9tYXQtbGlzdD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlTWVudXM+XG4gICAgICAgIDxtYXQtbGlzdD5cbiAgICAgICAgICA8bG5jLW5hdi1tZW51cyBbYXR0ci5pZF09XCJzZXR0aW5nc0hlYWRNZW51LmlkXCIgYXBwT2Zmc2V0VG9wXG4gICAgICAgICAgICBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShzZXR0aW5nc0hlYWRNZW51LHNldHRpbmdzSGVhZE1lbnUpXCIgW2l0ZW1dPVwic2V0dGluZ3NIZWFkTWVudVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhzZXR0aW5nc0hlYWRNZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiXG4gICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNlcnJvckJsb2NrPlxuICA8ZGl2IGNsYXNzPVwiZXJyb3JNc2dcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+ZXJyb3I8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJlcnJvclR4dFwiPnt7ZXJyb3JNc2d9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48YSBjbGFzcz1cImhhbWJ1cmdlci1pY29uIGV4cGFuZGVkLWhhbWJ1cmdlci1pY29uXCIgdGl0bGU9XCJUb2dnbGUgTWVudVwiIChjbGljayk9XCJzaWRlbmF2LmNsb3NlKCk7YWxsTWVudUNvbGxhcHNlKCk7IFwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJsZWZ0LWNoZXZyb24taWNvblwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxuPC9hPlxuXG48IS0tIDxpbWcgKm5nSWY9XCJzaG93TWVudUljb24oKVwiIGNsYXNzPVwiZmF2aWNvbi1kaW1lbnNpb25cIiBzcmM9e3thcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uZmF2aWNvbn19IGFsdD1cIkludGVudHdpc2UgRmF2aWNvblwiIC8+XG4gIDxhICpuZ0lmPVwic2hvd01lbnVJY29uKClcIiB0aXRsZT1cIlRvZ2dsZSBNZW51XCIgY2xhc3M9XCJoYW1idXJnZXItaWNvbiBjb2xsYXBzZWQtaGFtYnVyZ2VyXCJcbiAgICAoY2xpY2spPVwic2lkZW5hdi5vcGVuKClcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJyaWdodC1jaGV2cm9uLWljb25cIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gIDwvYT4gLS0+Il19
|
|
526
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFlLGVBQWUsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBMkIsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTcEUsTUFBTSxPQUFPLDJCQUEyQjtJQXlCN0I7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUJELGtCQUFrQixDQUFhO0lBRS9CLE9BQU8sQ0FBYTtJQUVLLFNBQVMsQ0FBZ0M7SUFD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LENBQUMsa0JBQWtCLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RixZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBUyxVQUFVO2dCQUMzRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEtBQUssY0FBYyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsRUFBRTtvQkFDcEgsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBQUEsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDSCxPQUFPLENBQUMsWUFBWSxJQUFJLElBQUksSUFBSSxDQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUM1SixDQUFDOzJIQTVmVSwyQkFBMkI7K0dBQTNCLDJCQUEyQiw4S0FPM0IsbUJBQW1CLHdLQURoQixrQkFBa0IscUVDekJsQyxnMFlBaU1VOzs0RkQ5S0csMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLHdCQUF3QjsrUEFPekIsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFNEIsU0FBUztzQkFBMUMsWUFBWTt1QkFBQyxrQkFBa0I7Z0JBQ0EsSUFBSTtzQkFBbkMsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0UsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckV2ZW50LCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkcmVuLCBRdWVyeUxpc3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TaWRlYmFyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwbGljYXRpb24tc2lkZWJhci5zZXJ2aWNlJ1xuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgYXBwRGV0YWlscyB9IGZyb20gJy4vYXBwLWRldGFpbHMnXG5pbXBvcnQgeyBPZmZzZXRUb3BEaXJlY3RpdmUsIFNjcm9sbGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL25hdi1tZW51LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZXN0QXBpU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcmVzdC1hcGkuc2VydmljZXMnXG5pbXBvcnQgeyBOYXZNZW51c0NvbXBvbmVudCB9IGZyb20gJy4vbmF2LW1lbnVzL25hdi1tZW51cy5jb21wb25lbnQnXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBHTE9CQUxfTElTVCB9IGZyb20gJy4vbmF2bWVudTEnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsbmMtbmF2aWdhdGlvbi1zaWRlYmFyJyxcbiAgdGVtcGxhdGVVcmw6Jy4vYXBwbGljYXRpb24tc2lkZWJhci50ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOlsnLi9hcHBsaWNhdGlvbi1zaWRlYmFyLnNjc3MnLCdhcHBsaWNhdGlvbi1zaWRlYmFyLnRoZW1lLnNjc3MnXSxcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25TaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uRGV0YWlscyA6YXBwRGV0YWlscztcblxuICBASW5wdXQoKSBzaWRlbmF2OiBNYXRTaWRlbmF2O1xuXG4gIEBWaWV3Q2hpbGRyZW4oT2Zmc2V0VG9wRGlyZWN0aXZlKSBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxPZmZzZXRUb3BEaXJlY3RpdmU+O1xuICBAVmlld0NoaWxkKFNjcm9sbGFibGVEaXJlY3RpdmUpIGxpc3Q6IFNjcm9sbGFibGVEaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGQoJ25hdk1lbnVzQ29tcG9uZW50JykgbmF2TWVudXNDb21wb25lbnQ6TmF2TWVudXNDb21wb25lbnQ7XG5cbiAgYWNjb3VudE5hbWU6IGFueTtcbiAgYWN0aXZlUGFuZWw6IGFueTtcbiAgbmF2Q29sbGFwc2VkOmJvb2xlYW4gPSBmYWxzZTtcbiAgb2xkTGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgaXNBZG1pblJvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRtaW5Sb2xlcyA9IFsnU1VQRVJfQURNSU4nLCdTVVBFUl9BRE1JTl9SRUFEX09OTFknXTtcbiAgY3VycmVudEFwcDogYW55O1xuICBzaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uOiBhbnk7XG4gIG15T2JzZXJ2ZXI6IGFueTtcbiAgZXhwYW5kR2xvYmFsU2V0dGluZ3M6IGFueSA9IGZhbHNlO1xuICBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwOiBib29sZWFuO1xuXG4gIC8vIGlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlOmJvb2xlYW4gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYXZpZ2F0aW9uOiBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBSZXN0QXBpU2VydmljZTogUmVzdEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWU6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbjpUcmFuc2xhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgIHRoaXMubXlPYnNlcnZlciA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgIHRoaXMuZXhwYW5kR2xvYmFsU2V0dGluZ3MgPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLmV4dHJhcy5zdGF0ZSAmJiB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLmV4dHJhcy5zdGF0ZS5leHBhbmRQYW5lbDsgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gIG1haW5QYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICBwdWJsaWMgcHJldkFjdGl2ZUhlYWRNZW51O1xuICBwdWJsaWMgdG9EaXNwbGF5QXBwbGljYXRpb25zID0gW107XG4gIHB1YmxpYyB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnU6IGFueVtdO1xuICBwdWJsaWMgZXJyb3JNc2c6c3RyaW5nO1xuXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWyd1c2VySW5mbyddKXtcbiAgICAgIGxldCB1c2VyUm9sZSA9IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWyd1c2VySW5mbyddLnJvbGU7XG4gICAgICB0aGlzLmlzQWRtaW5Sb2xlID0gdGhpcy5hZG1pblJvbGVzLmluZGV4T2YodXNlclJvbGUpID4gLTEgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2FsY3VsYXRlTGVmdG5hdlN0YXR1cygpO1xuICAgIC8vIGNvbnN0IGNvbmZpZ3MgPSB0aGlzLnJvdXRlci5jb25maWc7XG4gICAgLy8gZm9yKGxldCBjb25maWcgb2YgY29uZmlncyl7XG4gICAgLy8gICBpZihjb25maWcuY2hpbGRyZW4pe1xuICAgIC8vICAgICBmb3IobGV0IGNoaWxkIG9mIGNvbmZpZy5jaGlsZHJlbil7XG4gICAgLy8gICAgICAgY2hpbGQuY2FuQWN0aXZhdGUgPSBbQ2FuTG9hZEd1YXJkXVxuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIC8vIHRoaXMucm91dGVyLnJlc2V0Q29uZmlnKGNvbmZpZ3MpO1xuICAgIHRoaXMuY2hlY2tBcHBsaWNhdGlvbkRldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICB9XG5cbiAgY2FsY3VsYXRlTGVmdG5hdlN0YXR1cygpe1xuICAgIGlmKHRoaXMuc2lkZW5hdiAmJiB0aGlzLnNpZGVuYXYub3BlbmVkQ2hhbmdlKXtcbiAgICAgIGxldCBzdGF0dXMgICAgICAgICAgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdsZWZ0TmF2T3BlblN0YXR1cycpO1xuICAgICAgdGhpcy5uYXZDb2xsYXBzZWQgICA9IHN0YXR1cyAmJiBzdGF0dXMgPT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIHRoaXMuc2lkZW5hdi5vcGVuZWQgPSBzdGF0dXMgJiYgc3RhdHVzID09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XG4gICAgICB0aGlzLnNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb24gPSB0aGlzLnNpZGVuYXYub3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgoc3RhdHVzKT0+e1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdsZWZ0TmF2T3BlblN0YXR1cycsSlNPTi5zdHJpbmdpZnkoc3RhdHVzKSk7XG4gICAgICAgIHRoaXMubmF2Q29sbGFwc2VkICAgPSBzdGF0dXM7XG4gICAgICAgIHRoaXMuc2lkZW5hdi5vcGVuZWQgPSBzdGF0dXM7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgIGNoZWNrQXBwbGljYXRpb25EZXRhaWxzKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscykge1xuICAgIHRoaXMuZXJyb3JNc2cgPSAnJztcbiAgICBpZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZD09J2Fkc19hbWF6b25fZHNwJyl7XG4gICAgICB0aGlzLmdldFN0cnVjdHVyZUFQSVN1cHBvcnREYXRhKGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVBcHBEZXRhaWxzKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscyl7XG4gICAgdGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2lkZUJhcih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgLy8gaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQpe1xuICAgIC8vICAgdGhpcy5nZXRBY3RpdmVSZWNvQ291bnQodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVOYXZpZ2F0aW9uU2lkZUJhcihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldGpzb25NZW51bGlzdHMoYXBwbGljYXRpb25EZXRhaWxzKS5zdWJzY3JpYmUoKG1lbnVsaXN0czogYW55KSA9PiB7XG4gICAgICAvLyBsZXQgbWVudWxpc3RzID0gR0xPQkFMX0xJU1RcbiAgICAgIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zID0gdGhpcy5uYXZpZ2F0aW9uLmdldE1lbnVMaXN0KGFwcGxpY2F0aW9uRGV0YWlscywgbWVudWxpc3RzKTtcbiAgICAgIHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51ID0gdGhpcy5uYXZpZ2F0aW9uLmdldEdsb2JhbFNldHRpbmdzTWVudShhcHBsaWNhdGlvbkRldGFpbHMsIG1lbnVsaXN0cyk7XG4gICAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seShhcHBsaWNhdGlvbkRldGFpbHMsIGZhbHNlKTtcbiAgICAgIHRoaXMuZXhwYW5kQ2hpbGRNZW51T25seSh0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSk7XG4gICAgICB0aGlzLmNoZWNrRm9yUmVkaXJlY3Rpb24oYXBwbGljYXRpb25EZXRhaWxzLCBtZW51bGlzdHMpO1xuICAgICAgY29uc29sZS5sb2codGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMgLCB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSk7XG4gICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTWVudSgpO1xuICAgICAgdGhpcy5zZXRNZW51TGlzdChhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCx0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucyk7XG4gICAgICB0aGlzLmluQ29udGV4dEluc2lnaHRzV0xBcHAgPSB0aGlzLmhpZGVNZW51Rm9yV0woKTtcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNZW51TGlzdChhcHBJZCxtZW51TGlzdCl7XG4gICAgdmFyIGFwcERldGFpbHM6YW55ID0gbmV3IE9iamVjdCgpO1xuICAgIGFwcERldGFpbHMuYXBwaWNhdGlvbklkID0gYXBwSWQ7XG4gICAgYXBwRGV0YWlscy5tZW51TGlzdCA9IG1lbnVMaXN0LmZpbmQoKG1lbnUpPT57IHJldHVybiBtZW51LmlkID09IGFwcElkfSlcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwRGV0YWlscycsSlNPTi5zdHJpbmdpZnkoYXBwRGV0YWlscykpO1xuICB9XG5cbiAgcHVibGljIG1lbnVDbGlja2VkKG9iajogYW55KSB7XG4gICAgdGhpcy5leHBhbmRDdXJyZW50TWVudU9ubHkodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMsIHRydWUpO1xuICAgIHRoaXMuZXhwYW5kQ2hpbGRNZW51T25seSh0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSk7XG4gICAgaWYob2JqKSB7XG4gICAgICB0aGlzLmFjdGl2ZVBhbmVsID0gb2JqLmFjdGl2ZVBhbmVsO1xuICAgIH1cbiAgfVxuICBcbiAgcHVibGljIGV4cGFuZENoaWxkTWVudU9ubHkodG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KSB7XG4gICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgIC8vIHRoaXMuaXNHbG9iYWxTZXR0aW5nc01lbnVBY3RpdmUgPSBmYWxzZTtcbiAgICAgIGxldCB1cmxBcnJheSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpO1xuICAgICAgbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgICBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgaWYodG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51ICYmIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudS5sZW5ndGgpIHtcbiAgICAgICAgICB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0ucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgaWYodG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLmNoaWxkcmVuICYmIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5jaGlsZHJlbi5sZW5ndGgpe1xuICAgICAgICAgIGZvcihsZXQgbWVudSBvZiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0uY2hpbGRyZW4pe1xuICAgICAgICAgICAgaWYobWVudS5yb3V0ZT09Y3VycmVudFJvdXRlKXtcbiAgICAgICAgICAgICAgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgLy8gdGhpcy5pc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDEwMClcbiAgIFxuICB9XG5cbiAgcHVibGljIGV4cGFuZEN1cnJlbnRNZW51T25seShhcHBsaWNhdGlvbkRldGFpbHMsIG9uTWVudUNsaWNrZWQpIHtcbiAgICBmb3IobGV0IGhlYWRNZW51IG9mIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zKSB7XG4gICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICBmb3IobGV0IGhlYWRNZW51IG9mIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zKSB7XG4gICAgICAgIGlmKGhlYWRNZW51LmlkID09IGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSB7XG4gICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICB9IGVsc2UgaWYoaGVhZE1lbnUuaWQuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPiAtMSkge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG5cbiAgICAgICAgICBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICBsZXQgcm91dGVVcmwgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZigoaGVhZE1lbnUuaWQ9PSBcImFkc19hbWF6b25fc2VsbGVyX3NlbGxlcl9hbmFseXRpY3NcIiB8fCBoZWFkTWVudS5pZD09IFwiYWRzX2FtYXpvbl9zZWxsZXJfdmVuZG9yX2FuYWx5dGljc1wiKSAmJiB1cmxBcnJheS5sZW5ndGggPjIpe1xuICAgICAgICAgICAgdXJsQXJyYXk9IHVybEFycmF5LnNsaWNlKHVybEFycmF5Lmxlbmd0aC0yKTtcbiAgICAgICAgICAgIHJvdXRlVXJsPSB1cmxBcnJheS5qb2luKCcvJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBjdXJyZW50Um91dGUgPSByb3V0ZVVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9jb250ZW50X2NvbnRlbnRfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLmNvbnRlbnRBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xICkge1xuICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgfSBlbHNlIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnNvdkFwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpIHtcbiAgICAgICAgICAgICAgaWYoKGN1cnJlbnRSb3V0ZSAhPSAncHJvZHVjdC1tZXRhLWRhdGEnICYmIGN1cnJlbnRSb3V0ZSAhPSAnYnJhbmQtdGVybXMtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnbGFiZWxzLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcy1tYXBwaW5nJyAmJiBjdXJyZW50Um91dGUgIT0gJ3Nvdi1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdjb250ZW50LXNldHRpbmdzJykgfHwgIXRoaXMuY3VycmVudEFwcCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnU2hhcmUgT2YgVm9pY2UnKSB7XG4gICAgICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgICAgICAgIGlmKG9uTWVudUNsaWNrZWQgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1NoYXJlIE9mIFZvaWNlJykge1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fc2VsbGVyX3NlbGxlcl9hbmFseXRpY3NcIiAmJiB0aGlzLm5hdmlnYXRpb24uc2VsbGVyQW5hbHl0aWNzQXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSl7XG4gICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIiAmJiB0aGlzLm5hdmlnYXRpb24udmVuZG9yQW5hbHl0aWNzQXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSkge1xuICAgICAgICAgICAgaWYoKGN1cnJlbnRSb3V0ZSAhPSAncHJvZHVjdC1tZXRhLWRhdGEnICYmIGN1cnJlbnRSb3V0ZSAhPSAnYnJhbmQtdGVybXMtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnbGFiZWxzLXNldHRpbmdzJyAgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMtbWFwcGluZycgJiYgY3VycmVudFJvdXRlICE9ICdzb3Ytc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnY29udGVudC1zZXR0aW5ncycpIHx8ICF0aGlzLmN1cnJlbnRBcHAgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1ZlbmRvciBBbmFseXRpY3MnKSB7XG4gICAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgICAgIGlmKG9uTWVudUNsaWNrZWQgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1ZlbmRvciBBbmFseXRpY3MnKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyAgaWYoaGVhZE1lbnUuY2hpbGRyZW4pe1xuICAgICAgICAvLyAgICBoZWFkTWVudS5jaGlsZHJlbi5mb3JFYWNoKG1lbnUgPT4ge1xuICAgICAgICAvLyAgICAgIGlmIChtZW51LmNoaWxkcmVuICYmIG1lbnUudHlwZSA9PSBcImV4cGFuZGFibGVcIikge1xuICAgICAgICAvLyAgICAgICAgaGVhZE1lbnUuY2hpbGRyZW4uZm9yRWFjaChzdWJtZW51ID0+IHtcbiAgICAgICAgLy8gICAgICAgICBpZih0aGlzLmlzQ2hlY2tBY3RpdmVSb3V0ZShzdWJtZW51LnJvdXRlLGhlYWRNZW51KSl7XG4gICAgICAgIC8vICAgICAgICAgICAgbWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgIC8vICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgfSlcbiAgICAgICAgLy8gICAgICB9XG4gICAgICAgIC8vICAgIH0pO1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgcHVibGljIGdldFRvb2x0aXBJbmZvKGhlYWRtZW51KXtcbiAgICBpZih0aGlzLnNpZGVuYXYgJiYgdGhpcy5zaWRlbmF2Lm9wZW5lZCl7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQXBwbGljYXRpb24oaGVhZG1lbnUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KXtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZWxlY3RlZEFwcGxpY2F0aW9uKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLCBoZWFkbWVudSk7XG4gIH1cbiAgZ2V0IHNpZGVJZEluZm8oKXtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5zaWRlYmFySW5mbyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQpe1xuICAgICAgcmV0dXJuIE51bWJlcih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQpXG4gICAgfWVsc2UgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3NpdGVJZCddKXtcbiAgICAgIHJldHVybiBOdW1iZXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3NpdGVJZCddKVxuICAgIH1cbiAgICByZXR1cm4gMTtcbiAgfVxuICBwdWJsaWMgY2hlY2tGb3JSZWRpcmVjdGlvbihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMsIG1lbnVsaXN0cykge1xuICAgIHRyeXtcbiAgICAgIGxldCBpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nID0gdHJ1ZTtcbiAgICAgIGxldCBpc01lbnVWaXNpYmxlQnlSb2xlID0gdHJ1ZTtcbiAgICAgIGxldCBpc01lbnVOb3RWaXNpYmxlQnlSb2xlID0gdHJ1ZTtcbiAgICAgIGxldCBpc01lbnVyT3JnV2l0aFVzZXJSb2xlID0gdHJ1ZTtcbiAgICAgIGxldCBpc3JlZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGxldCBhcHBsaWNhdGlvbklkTGlzdCA9IFtcImFkc19hbWF6b25fc2VsbGVyX3NlbGxlcl9hbmFseXRpY3NcIiAsIFwiYWRzX2FtYXpvbl9zZWxsZXJfdmVuZG9yX2FuYWx5dGljc1wiXVxuXG4gICAgICBsZXQgbWVudWxpc3QgPSBhcHBsaWNhdGlvbklkTGlzdC5pbmRleE9mKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+IC0xICYmIGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMgJiYgYXBwbGljYXRpb25EZXRhaWxzLmxpc3RNZW51cy5sZW5ndGggPiAwID8gYXBwbGljYXRpb25EZXRhaWxzLmxpc3RNZW51cyA6IG1lbnVsaXN0cztcblxuICAgICAgY29uc3Qgcm9sZSA9IFsnU1VQRVJfQURNSU4nLCAnU1VQRVJfQURNSU5fUkVBRF9PTkxZJ107XG4gICAgICBpZiAocm9sZS5pbmRleE9mKGFwcGxpY2F0aW9uRGV0YWlscy51c2VySW5mby5yb2xlKSA9PSAtMSkge1xuICAgICAgICBcbiAgICAgICAgbGV0IGFwcGxpY2F0aW9uTWVudWVzID0gbWVudWxpc3QgJiYgbWVudWxpc3QubGVuZ3RoID4gMCAmJiBtZW51bGlzdC5maW5kKChtZW51cyk9PntcbiAgICAgICAgICByZXR1cm4gbWVudXMuaWQgPT0gYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMub3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luKSB7XG4gICAgICAgICAgaXNNZW51VmlzaWJsZUJ5b3JnU2V0dGluZyA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0Zvck5vdE9yZ1NldHRpbmdzKGFwcGxpY2F0aW9uTWVudWVzLm9yZ2FuaXphdGlvbl9zZXR0aW5nX25vdF9pbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMudmlzaWJpbGl0eV9yb2xlcykge1xuICAgICAgICAgIGlzTWVudVZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JSb2xlcyhhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMudmlzaWJpbGl0eV9yb2xlc19ub3RfaW4pIHtcbiAgICAgICAgICBpc01lbnVOb3RWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9ydmlzaWJpbGl0eVJvbGVzTm90SW4oYXBwbGljYXRpb25NZW51ZXMudmlzaWJpbGl0eV9yb2xlc19ub3RfaW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLm9yZ191c2VyX2N0cmwpIHtcbiAgICAgICAgICBpc01lbnVyT3JnV2l0aFVzZXJSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKGFwcGxpY2F0aW9uTWVudWVzLm9yZ191c2VyX2N0cmwsYXBwbGljYXRpb25NZW51ZXMsIGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMuaWQgPT0gXCJhbWMtcGxhdGZvcm0td2ViXCIgJiYgYXBwbGljYXRpb25NZW51ZXMuY2hpbGRyZW4pIHtcbiAgICAgICAgICBsZXQgaXNDaGlsZE1lbnVWaXNpYmxlQnlSb2xlID0gdHJ1ZTtcbiAgICAgICAgICBsZXQgaXNDaGlsZE1lbnVOb3RWaXNpYmxlQnlSb2xlID0gdHJ1ZTtcbiAgICAgICAgICBsZXQgaXNDaGlsZE1lbnVyT3JnV2l0aFVzZXJSb2xlID0gdHJ1ZTtcblxuICAgICAgICAgIGNvbnN0IGNoaWxkbWVudSA9IHRoaXMudmFsaWRhdGVSb3V0ZUJ5U3RhdGUoIHRoaXMucm91dGVyICwgYXBwbGljYXRpb25NZW51ZXMuY2hpbGRyZW4pO1xuXG4gICAgICAgICAgaWYgKGNoaWxkbWVudSAmJiBjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlc19ub3RfaW4pIHtcbiAgICAgICAgICAgIGlzQ2hpbGRNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzX25vdF9pbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNoaWxkbWVudSAmJiBjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlcykge1xuICAgICAgICAgICAgaXNDaGlsZE1lbnVWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yUm9sZXMoY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51Lm9yZ191c2VyX2N0cmwpIHtcbiAgICAgICAgICAgIGlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0Zvck9yZ1dpdGhVc2VyUm9sZShjaGlsZG1lbnUub3JnX3VzZXJfY3RybCxjaGlsZG1lbnUsIGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoKCFpc0NoaWxkTWVudU5vdFZpc2libGVCeVJvbGUgfHwgIWlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSB8fCAhaXNDaGlsZE1lbnVyT3JnV2l0aFVzZXJSb2xlKSAmJiBjaGlsZG1lbnUpIHtcbiAgICAgICAgICAgIGlzcmVkaXJlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvXCJdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghaXNNZW51VmlzaWJsZUJ5b3JnU2V0dGluZyB8fCAhaXNNZW51VmlzaWJsZUJ5Um9sZSB8fCAhaXNNZW51Tm90VmlzaWJsZUJ5Um9sZSB8fCAhaXNNZW51ck9yZ1dpdGhVc2VyUm9sZSkgJiYgIWlzcmVkaXJlY3RlZCkge1xuICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50QXBwKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24uZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zWzBdLmRlZmF1bHR1cmwpOyAgXG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24uZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKGFwcGxpY2F0aW9uTWVudWVzLmRlZmF1bHR1cmwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlUm91dGVCeVN0YXRlKHN0YXRlICwgbGlzdE1lbnVzKXtcbiAgICB0cnl7XG4gICAgICAgIGNvbnN0IGZpbmRSb3V0ZSA9IGxpc3RNZW51cy5maW5kKGxpc3QgPT4ge1xuICAgICAgICAgICAgaWYobGlzdC5saW5rID09ICdhbWMnK3N0YXRlLnVybCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgICAgICAgfSBlbHNlIGlmKGxpc3QubWF0Y2hSb3V0ZXMgJiYgbGlzdC5tYXRjaFJvdXRlcy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICBpZihsaXN0Lm1hdGNoUm91dGVzLmluY2x1ZGVzKHN0YXRlLnVybCkpe1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmaW5kUm91dGU7XG4gICAgfWNhdGNoKGVycm9yKXtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuICBcbiAgLy8gcHVibGljIGNoZWNrRm9yUmVkaXJlY3Rpb24oYXBwbGljYXRpb25EZXRhaWxzOiBhcHBEZXRhaWxzKSB7XG4gIC8vICAgbGV0IHJvdXRlID0gJyc7XG4gIC8vICAgaWYoYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmICEodGhpcy5uYXZpZ2F0aW9uLmlzSGF2aW5nQW55QWN0aXZlU3VicyhhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCxhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQuc3Vic2NyaXB0aW9uLGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSkpe1xuICAvLyAgICAgc3dpdGNoKGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKXtcbiAgLy8gICAgICAgY2FzZSAnQ09OVEVOVCc6IHtcbiAgLy8gICAgICAgICAgIHJvdXRlID0gJ2NvbnRlbnQvc2hhcmUtb2Ytdm9pY2UnXG4gIC8vICAgICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdEU1AnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnZHNwL29yZGVyJ1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0FNU19BVFRSSUJVVElPTic6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdhdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jYW1wYWlnbnMnXG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnU0VMTEVSX0NFTlRSQUwnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnIyEvYW1zLWNvbnRlbnQtZGFzaGJvYXJkL3NlbGxlci1zYWxlcy1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnVkVORE9SX0NFTlRSQUwnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnIyEvYW1zLWNvbnRlbnQtZGFzaGJvYXJkL2N1c3RvbS1yZXBvcnRzLXZlbmRvci1zYWxlcy1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnSU5TVEFDQVJUJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2luc3RhY2FydC9pbnN0YWNhcnQtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0NSSVRFTyc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdjcml0ZW8vY3JpdGVvLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdXQUxNQVJUJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ3dhbG1hcnQvJztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdBTUFaT05fTUFSS0VUSU5HX0NMT1VEJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2RwL2RhdGEtYW5hbHl0aWNzLWdldHRpbmctc3RhcnRlZCc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQU1TX1ZFTkRPUic6XG4gIC8vICAgICAgIGNhc2UgJ0FNU19TRUxMRVInOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnIyEvYW1zLXBhZ2Utb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgICB0aGlzLm5hdmlnYXRpb24uZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKHJvdXRlKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGEoY3VycmVudEFjY291bnQpe1xuICAgIHRyeSB7XG4gICAgdGhpcy5SZXN0QXBpU2VydmljZS5nZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YShjdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCxjdXJyZW50QWNjb3VudC5idXNpbmVzc0dyb3VwSWQsY3VycmVudEFjY291bnQuYW1zQWNjb3VudElkKS5zdWJzY3JpYmUoIFxuICAgICAgKHJlc3BvbnNlOmFueSkgPT4ge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb24uaXNTdHJ1Y3R1cmVBcGlTdXBwb3J0ID0gcmVzcG9uc2UgPyByZXNwb25zZVsnc3RydWN0dXJlQXBpU3VwcG9ydCddIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjphbnkpID0+e1xuICAgICAgICB0aGlzLm5hdmlnYXRpb24uaXNTdHJ1Y3R1cmVBcGlTdXBwb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICB9XG4gIFxuICBwdWJsaWMgc2Nyb2xsVG9BY3RpdmVNZW51KCl7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZih0aGlzLmxpc3RJdGVtcyAmJiB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pICE9IHVuZGVmaW5lZCl7XG4gICAgICAgIHRoaXMubGlzdC5zY3JvbGxUb3AgPSB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pLm9mZnNldFRvcDtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHVibGljIGlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51LHBhcmVudE1lbnUgPSBudWxsKSB7XG4gICAgLy8gbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgLy8gbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgLy8gbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgLy8gbGV0IHJvdXRlPW1lbnUucm91dGU7XG4gICAgLy8gbGV0IHBhZ2VOYW1lO1xuICAgIC8vIGlmKHJvdXRlKXtcbiAgICAvLyBsZXQgc3BsaXRlZFVSTCA9IHJvdXRlLnNwbGl0KFwiL1wiKTtcbiAgICAvLyBwYWdlTmFtZSA9IHNwbGl0ZWRVUkwubGVuZ3RoID4wID8gIHNwbGl0ZWRVUkxbc3BsaXRlZFVSTC5sZW5ndGggLSAxXSA6IHJvdXRlO1xuICAgIC8vIH1cblxuICAgIGxldCByb3V0ZVVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICBsZXQgcm91dGU9bWVudS5yb3V0ZTtcbiAgICBsZXQgcGFnZU5hbWU7XG4gICAgaWYocm91dGUpe1xuICAgICAgcGFnZU5hbWUgPSByb3V0ZTtcbiAgICB9XG5cbiAgICBpZiAoKGN1cnJlbnRSb3V0ZSA9PT0gXCIvXCIrcGFnZU5hbWUgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXJlcG9ydFwiIHx8IGN1cnJlbnRSb3V0ZSA9PT0gXCIvXCIrcGFnZU5hbWUrXCIva2V5d29yZC1zdWdnZXN0aW9ucy9hdXRvXCIgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXN1Z2dlc3Rpb25zL21hbnVhbFwiKSAmJiBoZWFkbWVudSE9dW5kZWZpbmVkKSB7XG4gICAgICBpZih0aGlzLnByZXZBY3RpdmVIZWFkTWVudT09PSB1bmRlZmluZWQpe1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcbiAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudS5pc0FjdGl2ZT1mYWxzZTtcbiAgICAgICAgaGVhZG1lbnUuaXNBY3RpdmU9dHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2QWN0aXZlSGVhZE1lbnU9aGVhZG1lbnU7XG4gICAgICB9XG4gICAgICBpZihwYXJlbnRNZW51ICE9IG51bGwpe1xuICAgICAgICB0aGlzLmFjdGl2ZVBhbmVsID0gcGFyZW50TWVudS5pZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1lbHNlIGlmKG1lbnUgJiYgbWVudS5tYXRjaFJvdXRlcyAmJiB0aGlzLnJvdXRlci51cmwpe1xuICAgICAgaWYgKG1lbnUubWF0Y2hSb3V0ZXMuaW5kZXhPZih0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXSkgPiAtMSkge1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcblxuICAgICAgICBpZihwYXJlbnRNZW51ICE9IG51bGwpe1xuICAgICAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBwYXJlbnRNZW51LmlkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBrZWVwTWVudUV4cGFuZGVkKHBhcmVudE1lbnVJZDpzdHJpbmcpIHtcbiAgICBpZihwYXJlbnRNZW51SWQuaW5kZXhPZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+PSAwICApe1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFsbE1lbnVDb2xsYXBzZSgpe1xuICAgIGZvcihsZXQgaGVhZE1lbnUgb2YgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpIHtcbiAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW9kZmljYXRpb25EYXRhKGRhdGE6IGFueSk6IGFueSB7XG4gICAgbGV0IGNvbmZpZ3MgPSB0aGlzLm5hdmlnYXRpb24uZ2V0VHlwZVN0YXR1c0NvbmZpZ3MoKTtcblx0XHRsZXQgb3JkZXIgPSBPYmplY3Qua2V5cyhjb25maWdzKTtcblx0XHRpZihvcmRlci5pbmRleE9mKGRhdGEudHlwZSkgPiAtMSl7XG5cdFx0XHRkYXRhLmFjdGl2ZSA9IGNvbmZpZ3NbZGF0YS50eXBlXSA/IGNvbmZpZ3NbZGF0YS50eXBlXSA6IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gZGF0YTtcblx0fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIHRoaXMuc2hvd01lbnVJY29uKCk7XG4gICAgdGhpcy5jaGVja0FwcGxpY2F0aW9uRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG5cbiAgfVxuXG4gIHB1YmxpYyBnb1RvQXBwbGljYXRpb24oaXRlbSkge1xuICAgIGlmKGl0ZW0uZGVmYXVsdHVybCl7XG4gICAgICB0aGlzLmdvVG9BcHBEZWZhdWx0UGFnZShpdGVtLCBpdGVtLmlkKTtcbiAgICB9ZWxzZXtcbiAgICAgIGlmKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmKGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlblswXS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5nb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbS5jaGlsZHJlblswXS5jaGlsZHJlblswXSwgaXRlbS5pZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbS5jaGlsZHJlblswXSwgaXRlbS5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0sIGl0ZW0uaWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZih0aGlzLnNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb24pe1xuICAgICAgdGhpcy5zaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdvVG9BcHBEZWZhdWx0UGFnZShpdGVtLCBhcHBJZCkge1xuICAgIHRoaXMubmF2TWVudXNDb21wb25lbnQub25TZWxlY3RNZW51KGV2ZW50LCBpdGVtLCBhcHBJZCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZU1lbnVGb3JXTCgpe1xuICAgICAgbGV0IGlzT3JnU2V0dGluZztcbiAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlzT3JnU2V0dGluZyA9IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzLmZpbHRlcihmdW5jdGlvbihvcmdTZXR0aW5nKXtcbiAgICAgICAgICBpZiggb3JnU2V0dGluZy5zZXR0aW5nID09PSAnSUFDX0lOU0lHSFRTJyAmJiAoIW9yZ1NldHRpbmcudmFsdWUgfHwgb3JnU2V0dGluZy52YWx1ZSAmJiBvcmdTZXR0aW5nLnZhbHVlID09ICdBQ1RJVkUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICByZXR1cm4gKGlzT3JnU2V0dGluZyAhPSBudWxsICYmICggdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkID4gMTEgfHwgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10ucm9sZSA9PT0gJ0lBQ19CUkFORF9SRUFEX09OTFknKSk7XG4gIH1cblxuICAvLyBwdWJsaWMgaXNBcHBsaWNhdGlvbkFjdGl2ZShwYXJlbnRNZW51SWQpIHtcbiAgLy8gICBpZihwYXJlbnRNZW51SWQuaW5kZXhPZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+PSAwICAmJiB0aGlzLmlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlKXtcbiAgLy8gICAgIHJldHVybiB0cnVlO1xuICAvLyAgIH1cbiAgLy8gICBlbHNle1xuICAvLyAgICAgcmV0dXJuIGZhbHNlO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIFxufVxuIiwiPGRpdiBpZD1cImxvYWRlcl9zb3ZcIj5cbiAgPGRpdiBpZD1cImxvYWRpbmdfZGl2XCIgKm5nSWY9XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvXCI+XG4gICAgPGRpdj5cbiAgICAgIDxkaXYgaWQ9XCJsb2FkZXJcIiAqbmdJZj1cInNpZGVJZEluZm8gIT09IDFcIlxuICAgICAgICBjbGFzcz1cInNpdGVfe3tzaWRlSWRJbmZvfX1cIj5cbiAgICAgICAgPGltZyBzcmM9XCJ7e2FwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmxvZ299fVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGlkPVwibG9hZGVyX2ltZ1wiICpuZ0lmPVwic2lkZUlkSW5mbyA9PSAxXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvaGFwcHlfZXllc19jbG9zZWRfc21hbGwuc3ZnXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNsYXNzPVwibG9hZGVyX3Byb2dyZXNzLWJhci1wb3NpdGlvblwiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4RmlsbCAqbmdJZj1cImVycm9yTXNnLmxlbmd0aCA9PSAwIGVsc2UgZXJyb3JCbG9ja1wiIHRyYW5zbGF0ZT1cIm5vXCIgaWQ9XCJhbmd1bGFyLTE2LXZlcnNpb25cIj5cbiAgPG1hdC10b29sYmFyIGNsYXNzPVwicG9ydGFsLXNpZGUtbWVudS10b3AtdG9vbGJhclwiPlxuICAgIDxtYXQtdG9vbGJhci1yb3cgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3J0YWwtZm9yZ2V0LWhlYWRpbmctY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW1lbnUtbG9nby1ob2xkZXJcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2lkZUlkSW5mbyAhPT0gMVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmF2aWNvblwiIHN0eWxlPVwid2lkdGg6IDQwcHggIWltcG9ydGFudDtkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhbmF2Q29sbGFwc2VkXCIgW2FsdF09XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5maXJzdE5hbWVcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uXCIgLz5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmxvZ29cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcIiAgKm5nSWY9XCJuYXZDb2xsYXBzZWRcIiBjbGFzcz1cImxvZ28tZGltZW5zaW9uXCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2lkZUlkSW5mbyA9PSAxXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2xvZ29zL2ludGVudHdpc2Vsb2dvLnN2Z1wiIHN0eWxlPVwid2lkdGg6IDQwcHggIWltcG9ydGFudDtkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhbmF2Q29sbGFwc2VkXCIgW2FsdF09XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5maXJzdE5hbWVcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uIGludGVudHdpc2UtZmF2aWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9JbnRlbnR3aXNlLnN2Z1wiICBzdHlsZT1cImRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcIiAqbmdJZj1cIm5hdkNvbGxhcHNlZFwiIFthbHRdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmlyc3ROYW1lXCIgY2xhc3M9XCJsb2dvLWRpbWVuc2lvbiBpbnRlbnR3aXNlLWxvZ29cIj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC10b29sYmFyLXJvdz5cbiAgPC9tYXQtdG9vbGJhcj5cbiAgPCEtLSA8ZGl2IGNsYXNzPVwic2lkZWJhci1jb2xsYXBzZS1pY29uXCIgKm5nSWY9XCJpc0FkbWluUm9sZVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJzaWRlbWVudS1pY29uLXRvcFwiIChjbGljayk9XCJhbGxNZW51Q29sbGFwc2UoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWRcIj5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+IC0tPlxuICA8ZGl2ICpuZ0lmPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZCAmJiAhaW5Db250ZXh0SW5zaWdodHNXTEFwcFwiIGNsYXNzPVwiYXBwLW1lbnUtY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImFwcC1tZW51LWJ1dHRvblwiICpuZ0lmPVwidG9EaXNwbGF5QXBwbGljYXRpb25zICYmIHRvRGlzcGxheUFwcGxpY2F0aW9ucy5sZW5ndGggPT0gMVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbmFtZVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjdXJyZW50QXBwPy5uYW1lXCIgY2xhc3M9XCJzaWRlTmF2SWNvbiB7e2N1cnJlbnRBcHA/Lm5hbWUuc3BsaXQoJyAnKS5qb2luKCcnKX19XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtbWVudS1idXR0b25cIiBbbWF0LW1lbnUtdHJpZ2dlci1mb3JdPVwiYXBwTWVudVwiICpuZ0lmPVwidG9EaXNwbGF5QXBwbGljYXRpb25zICYmIHRvRGlzcGxheUFwcGxpY2F0aW9ucy5sZW5ndGggPiAxXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImFwcC1uYW1lXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPlxuICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTRweDtcIiBbaW5uZXJIVE1MXT1cInNlbGVjdGVkQXBwbGljYXRpb24oY3VycmVudEFwcClcIj48L2xhYmVsPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImN1cnJlbnRBcHA/LmJhZGdlXCIgY2xhc3M9XCJiYWRnZS10ZXh0IHNvdi1iZXRhLXBvc2l0aW9uXCI+e3tjdXJyZW50QXBwLmJhZGdlfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWljb25cIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPG1hdC1tZW51ICNhcHBNZW51PVwibWF0TWVudVwiIGNsYXNzPVwiYXBwLW1lbnVcIiBbYmFja2Ryb3BDbGFzc109XCInYWxsLW1vZHVsZS1tZW51cydcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWRtZW51IG9mIHRvRGlzcGxheUFwcGxpY2F0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVudS1vcHRpb25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJnb1RvQXBwbGljYXRpb24oaGVhZG1lbnUpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZX1cIiBjbGFzcz1cInt7aGVhZG1lbnUuaWR9fV9pY29uXCIgKm5nSWY9XCJoZWFkbWVudS5uYW1lICE9ICdBY2NvdW50IE1hbmFnZW1lbnQnXCIgdHJhbnNsYXRlPVwibm9cIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzaWRlTmF2SWNvbiBjaGlsZHJlbi1pY29uXCIgW25nQ2xhc3NdPVwiaGVhZG1lbnUubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bGFiZWwgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KVwiPjwvbGFiZWw+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkbWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiIFtpbm5lckhUTUxdPVwiaGVhZG1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtbWVudT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwb3J0YWwtc2lkbmF2LW1lbnVcIiBmeEZsZXg9XCJub2dyb3cgbm9zaHJpbmtcIiBhcHBTY3JvbGxhYmxlIFtuZ0NsYXNzXT1cInsnd2hpdGVMYWJlbFNpZGVuYXYnIDogaW5Db250ZXh0SW5zaWdodHNXTEFwcH1cIj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiaGVhZG1lbnUucGFuZWxPcGVuU3RhdGUgPT0gdHJ1ZVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICpuZ0Zvcj1cImxldCBoZWFkbWVudSBvZiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnNcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGhlYWRtZW51LmlzQWN0aXZlIH1cIlxuICAgICAgKG9wZW5lZCk9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhoZWFkbWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIlxuICAgICAgICAqbmdJZj1cImhlYWRtZW51LnR5cGUgPT0gJ2V4cGFuZGFibGUnIGVsc2Ugc2luZ2xlTWVudXNcIiBjbGFzcz1cIm1haW4tZXhwYW5zaW9uLXBhbmVsLWhlYWRlclwiXG4gICAgICAgIChjbGljayk9XCJnb1RvQXBwbGljYXRpb24oaGVhZG1lbnUpXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7e2hlYWRtZW51LmlkfX1faWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJzaWRlbWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uTWVudVwiPlxuICAgICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkbWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiIFtpbm5lckhUTUxdPVwiaGVhZG1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIiFoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYWluLWNoZXZyb24taWNvblwiICpuZ0lmPVwiaGVhZG1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICA8bWF0LWxpc3QgY2xhc3M9XCJwYWRkaW5nLTBweFwiICpuZ0Zvcj1cImxldCBtZW51IG9mIGhlYWRtZW51LmNoaWxkcmVuXCIgW2F0dHIuaWRdPVwiaGVhZG1lbnUuaWRcIiBbbmdDbGFzc109XCJ7J2dyb3VwLW5hdi1tZW51JzogbWVudS5jaGlsZHJlbiB9XCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICpuZ0lmPVwibWVudS5jaGlsZHJlbiBlbHNlIGxpc3RNZW51XCIgY2xhc3M9XCJkaXYtYmFja2dyb3VuZC1jb2xvci13aGl0ZVwiIFtleHBhbmRlZF09XCJtZW51LmlkID09IGFjdGl2ZVBhbmVsXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZVBhbmVsJzogbWVudS5pZCA9PSBhY3RpdmVQYW5lbCAsICd3aGl0ZUxhYmVsQWN0aXZlJyA6IGluQ29udGV4dEluc2lnaHRzV0xBcHB9XCIgaGlkZVRvZ2dsZT1cInRydWVcIlxuICAgICAgICAgIChvcGVuZWQpPVwibWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cIm1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZVwiPlxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydoZWFkZXItYm9yZGVyJzogbWVudS5wYW5lbE9wZW5TdGF0ZSA9PT0gdHJ1ZSwgJ2hlYWRlci1ib3JkZXItbm9uZSc6IG1lbnUucGFuZWxPcGVuU3RhdGUgPT09IGZhbHNlIH1cIj5cbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3ttZW51LmlkfX1faWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGltZyBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiICpuZ0lmPVwiKG1lbnUuaWNvbiAmJiBtZW51Lmljb24gIT0gJycpIGVsc2UgZGlzcGxheUluaXRpYWxzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpZGUtbWVudS1pY29uIHNpZGUtbWVudS1pY29uLWNvbG9yXCIgc3JjPVwiYXNzZXRzL3NpZGVtZW51LWljb25zL3t7bWVudS5pY29ufX1cIiAvPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc3BsYXlJbml0aWFscz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW1lbnUtc3ltYm9sXCI+XG4gICAgICAgICAgICAgICAgICB7e21lbnUuc3ltYm9sfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uU3VibWVudXNcIj48c3BhbiBjbGFzcz1cIm1lbnUtbmFtZS1leHBhbmRhYmxlXCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKG1lbnUpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvbiBsZXZlbC10d28tYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdWItY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3ViLWNoZXZyb24taWNvblwiICpuZ0lmPVwibWVudS5wYW5lbE9wZW5TdGF0ZVwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICA8IS0tIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPiAtLT5cbiAgICAgICAgICA8bWF0LW5hdi1saXN0ICpuZ0Zvcj1cImxldCBjaGlsZE1lbnUgb2YgbWVudS5jaGlsZHJlbjtcIiBjbGFzcz1cInN1Yi1jaGlsZC1tZW51XCI+XG4gICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoY2hpbGRNZW51LGhlYWRtZW51LG1lbnUpXCIgW2l0ZW1dPVwiY2hpbGRNZW51XCJcbiAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCIgW3BhcmVudFBhbmVsSWRdPVwibWVudS5pZFwiXG4gICAgICAgICAgICAgIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlzdE1lbnU+XG4gICAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIGFwcE9mZnNldFRvcCBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51KVwiIFtpdGVtXT1cIm1lbnVcIlxuICAgICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwiaGVhZG1lbnUuaWRcIlxuICAgICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1lbnVzPlxuICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgaWQ9XCJ7e2hlYWRtZW51LmlkfX1cIiBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoaGVhZG1lbnUsaGVhZG1lbnUpXCJcbiAgICAgICAgICAgIFtpdGVtXT1cImhlYWRtZW51XCIgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKGhlYWRtZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiXG4gICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwb3J0YWwtZ2xvYmFsLXNldHRpbmctbWVudSBzdGlja3lfYm90dG9tX21lbnVcIiAqbmdJZj1cIiFpbkNvbnRleHRJbnNpZ2h0c1dMQXBwXCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cInNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPT0gdHJ1ZSB8fCBleHBhbmRHbG9iYWxTZXR0aW5nc1wiIGhpZGVUb2dnbGU9XCJ0cnVlXCIgaWQ9XCJ7e3NldHRpbmdzSGVhZE1lbnUuaWQgKyAnbWVudSd9fVwiXG4gICAgICAqbmdGb3I9XCJsZXQgc2V0dGluZ3NIZWFkTWVudSBvZiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHNldHRpbmdzSGVhZE1lbnUuaXNBY3RpdmUgfVwiXG4gICAgICAob3BlbmVkKT1cInNpZGVuYXYub3BlbigpOyBzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZVwiIChjbG9zZWQpPVwic2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlOyBleHBhbmRHbG9iYWxTZXR0aW5ncyA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIlxuICAgICAgICAqbmdJZj1cInNldHRpbmdzSGVhZE1lbnUudHlwZSA9PSAnZXhwYW5kYWJsZScgZWxzZSBzaW5nbGVNZW51c1wiIGNsYXNzPVwibWFpbi1leHBhbnNpb24tcGFuZWwtaGVhZGVyXCJcbiAgICAgICAgW25nQ2xhc3NdPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZCA/ICcnIDogJ3N0aWNreS1ib3R0b20tY2xvc2VkJ1wiPlxuICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRzX2FjY291bnRfbWdtdF9pY29uXCI+PC9zcGFuPlxuICAgICAgICAgIDxoMyBjbGFzcz1cInNpZGVtZW51LWhlYWRpbmcgYXBwbGljYXRpb25NZW51XCI+XG4gICAgICAgICAgICA8bGFiZWwgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKHNldHRpbmdzSGVhZE1lbnUpXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwic2V0dGluZ3NIZWFkTWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYWluLWNoZXZyb24taWNvblwiICpuZ0lmPVwiIXNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cInNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICA8bWF0LWxpc3QgY2xhc3M9XCJwYWRkaW5nLTBweFwiICpuZ0Zvcj1cImxldCBtZW51IG9mIHNldHRpbmdzSGVhZE1lbnUuY2hpbGRyZW5cIiBbYXR0ci5pZF09XCJzZXR0aW5nc0hlYWRNZW51LmlkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydncm91cC1uYXYtbWVudSc6IG1lbnUuY2hpbGRyZW4gfVwiPlxuICAgICAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIGFwcE9mZnNldFRvcCBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LHNldHRpbmdzSGVhZE1lbnUpXCIgW2l0ZW1dPVwibWVudVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiXG4gICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgPC9tYXQtbGlzdD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlTWVudXM+XG4gICAgICAgIDxtYXQtbGlzdD5cbiAgICAgICAgICA8bG5jLW5hdi1tZW51cyBbYXR0ci5pZF09XCJzZXR0aW5nc0hlYWRNZW51LmlkXCIgYXBwT2Zmc2V0VG9wXG4gICAgICAgICAgICBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShzZXR0aW5nc0hlYWRNZW51LHNldHRpbmdzSGVhZE1lbnUpXCIgW2l0ZW1dPVwic2V0dGluZ3NIZWFkTWVudVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhzZXR0aW5nc0hlYWRNZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiXG4gICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNlcnJvckJsb2NrPlxuICA8ZGl2IGNsYXNzPVwiZXJyb3JNc2dcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+ZXJyb3I8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJlcnJvclR4dFwiPnt7ZXJyb3JNc2d9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48YSBjbGFzcz1cImhhbWJ1cmdlci1pY29uIGV4cGFuZGVkLWhhbWJ1cmdlci1pY29uXCIgdGl0bGU9XCJUb2dnbGUgTWVudVwiIChjbGljayk9XCJzaWRlbmF2LmNsb3NlKCk7YWxsTWVudUNvbGxhcHNlKCk7IFwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJsZWZ0LWNoZXZyb24taWNvblwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxuPC9hPlxuXG48IS0tIDxpbWcgKm5nSWY9XCJzaG93TWVudUljb24oKVwiIGNsYXNzPVwiZmF2aWNvbi1kaW1lbnNpb25cIiBzcmM9e3thcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uZmF2aWNvbn19IGFsdD1cIkludGVudHdpc2UgRmF2aWNvblwiIC8+XG4gIDxhICpuZ0lmPVwic2hvd01lbnVJY29uKClcIiB0aXRsZT1cIlRvZ2dsZSBNZW51XCIgY2xhc3M9XCJoYW1idXJnZXItaWNvbiBjb2xsYXBzZWQtaGFtYnVyZ2VyXCJcbiAgICAoY2xpY2spPVwic2lkZW5hdi5vcGVuKClcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJyaWdodC1jaGV2cm9uLWljb25cIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gIDwvYT4gLS0+Il19
|
|
@@ -1951,10 +1951,13 @@ class ApplicationSidebarComponent {
|
|
|
1951
1951
|
if (menu.matchRoutes.indexOf(this.router.url.split('?')[0]) > -1) {
|
|
1952
1952
|
headmenu.isActive = true;
|
|
1953
1953
|
this.prevActiveHeadMenu = headmenu;
|
|
1954
|
+
if (parentMenu != null) {
|
|
1955
|
+
this.activePanel = parentMenu.id;
|
|
1956
|
+
}
|
|
1954
1957
|
return true;
|
|
1955
1958
|
}
|
|
1956
|
-
|
|
1957
|
-
|
|
1959
|
+
else {
|
|
1960
|
+
return false;
|
|
1958
1961
|
}
|
|
1959
1962
|
}
|
|
1960
1963
|
else {
|