tango-app-ui-manage-users 3.7.0-alpha.6 → 3.7.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.mjs +2 -2
- package/esm2022/lib/components-v2/add-users/add-users.component.mjs +4 -4
- package/fesm2022/tango-app-ui-manage-users.mjs +4 -4
- package/fesm2022/tango-app-ui-manage-users.mjs.map +1 -1
- package/lib/components-v2/add-users/add-users.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -106,7 +106,7 @@ export class AssignStorePopupComponent {
|
|
|
106
106
|
}
|
|
107
107
|
getteamsList() {
|
|
108
108
|
this.userService
|
|
109
|
-
.getAssignteams({ clientId: this.$headerFilters.client })
|
|
109
|
+
.getAssignteams({ clientId: this.$headerFilters.client, userEmail: this.user?.email })
|
|
110
110
|
.subscribe({
|
|
111
111
|
next: (res) => {
|
|
112
112
|
if (res && res.code == 200) {
|
|
@@ -547,4 +547,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
547
547
|
type: ViewChild,
|
|
548
548
|
args: ['afterValidation']
|
|
549
549
|
}] } });
|
|
550
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS11c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tbWFuYWdlLXVzZXJzL2Fzc2lnbi1zdG9yZS1wb3B1cC9hc3NpZ24tc3RvcmUtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvYXNzaWduLXN0b3JlLXBvcHVwL2Fzc2lnbi1zdG9yZS1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFDRyxTQUFTLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBWSxJQUFJLEVBQUUsS0FBSyxFQUFhLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBV3hELE1BQU0sT0FBTyx5QkFBeUI7SUFtQjFCO0lBQ0E7SUFDQTtJQUNEO0lBQ0M7SUF0QkQsSUFBSSxDQUFNO0lBQ25CLE1BQU0sR0FBVyxRQUFRLENBQUM7SUFDMUIsTUFBTSxHQUFVLEVBQUUsQ0FBQztJQUNuQixRQUFRLEdBQVUsRUFBRSxDQUFDO0lBQ3JCLEtBQUssR0FBTyxFQUFFLENBQUM7SUFDZixjQUFjLENBQU07SUFDcEIsUUFBUSxDQUFjO0lBQ3RCLFFBQVEsQ0FBTTtJQUNkLFFBQVEsQ0FBUztJQUNqQixrQkFBa0IsQ0FBSTtJQUN0QixvQkFBb0IsQ0FBSTtJQUN4QixpQkFBaUIsQ0FBSztJQUNFLFNBQVMsQ0FBYTtJQUNoQixlQUFlLENBQU07SUFFbkQsV0FBVyxDQUFNO0lBRWpCLFlBQ1UsV0FBd0IsRUFDeEIsRUFBcUIsRUFDckIsRUFBZ0IsRUFDakIsV0FBMkIsRUFDMUIsWUFB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QU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sb0JBQW9CLENBQUM7SUFDeEYsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO3dHQXRrQlUseUJBQXlCOzRGQUF6Qix5QkFBeUIsbVdDckJ0QyxvOW5CQStSYzs7NEZEMVFELHlCQUF5QjtrQkFUckMsU0FBUzsrQkFDRSx3QkFBd0IsUUFJNUI7d0JBQ0osa0JBQWtCLEVBQUUsaUJBQWlCO3FCQUN0QzsrTEFHUSxJQUFJO3NCQUFaLEtBQUs7Z0JBWWtCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsIFZpZXdDaGlsZCxFbGVtZW50UmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgV29ya0Jvb2ssIHJlYWQsIHV0aWxzLCBXb3JrU2hlZXQgfSBmcm9tIFwieGxzeFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWFzc2lnbi1zdG9yZS1wb3B1cFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9hc3NpZ24tc3RvcmUtcG9wdXAuY29tcG9uZW50LnNjc3NcIixcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcclxuICBob3N0OiB7XHJcbiAgICAnKGRvY3VtZW50OmNsaWNrKSc6ICdvbkNsaWNrKCRldmVudCknLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NpZ25TdG9yZVBvcHVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB1c2VyOiBhbnk7XHJcbiAgc2VsZWN0OiBzdHJpbmcgPSBcInN0b3Jlc1wiO1xyXG4gIHN0b3JlczogYW55W10gPSBbXTtcclxuICBjbHVzdGVyczogYW55W10gPSBbXTtcclxuICB0ZWFtczphbnlbXT1bXTtcclxuICAkaGVhZGVyRmlsdGVyczogYW55O1xyXG4gIG1vZGFsUmVmOiBOZ2JNb2RhbFJlZjtcclxuICB1c2VyRGF0YTogYW55O1xyXG4gIHVzZXJUeXBlOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRUZXh0c3RvcmVzOmFueVxyXG4gIHNlbGVjdGVkVGV4dGNsdXN0ZXJzOmFueVxyXG4gIHNlbGVjdGVkVGV4dHRlYW1zOiBhbnlcclxuICBAVmlld0NoaWxkKFwiaW5wdXRGaWxlXCIpIGlucHV0RmlsZTogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhZnRlclZhbGlkYXRpb24nKSBhZnRlclZhbGlkYXRpb246IGFueTtcclxuXHJcbiAgdXBsb2FkUG9wVXA6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSB0czogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxyXG4gICkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5kYXRhU3ViamVjdC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy51c2VyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy51c2VyVHlwZSA9IGRhdGEgPT0gXCJUYW5nbyBVc2VyXCIgPyBcInRhbmdvXCIgOiBcImNsaWVudFwiO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBsZXQgZGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwiXCIpO1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICB9IGVsc2UgaWYoIWRhdGEpe1xyXG4gICAgICBsZXQgdXNlcjogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgfHwgJycpO1xyXG4gICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gdXNlcjtcclxuICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQgPSB1c2VyLmNsaWVudElkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEFzc2lnblN0b3JlTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRjbHVzdGVyTGlzdCgpO1xyXG4gICAgdGhpcy5nZXR0ZWFtc0xpc3QoKSAgICBcclxuICB9XHJcblxyXG4gIGxvYWRVc2VyQXNzaWduRGV0YWlscygpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLmdldFVzZXJBc3NpZ25EYXRhKHtcclxuICAgICAgICBlbWFpbDogdGhpcy51c2VyLmVtYWlsLCAgICAgIFxyXG4gICAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFNlbGVjdGVkU3RvcmVzKHJlcy5kYXRhLnN0b3Jlcyk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFNlbGVjdGVkY2x1c3RlcnMocmVzLmRhdGEuY2x1c3RlcnMpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRTZWxlY3RlZHRlYW1zKHJlcy5kYXRhLnRlYW1zKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7ICAgICAgICBcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXNzaWduU3RvcmVMaXN0KCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAuZ2V0QXNzaWduU3RvcmVzKHsgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50IH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzBdLlN0b3JlcyA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy5sb2FkVXNlckFzc2lnbkRldGFpbHMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzID0gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Y2x1c3Rlckxpc3QoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRBc3NpZ25jbHVzdGVycyh7IGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFsxXS5jbHVzdGVycyA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzFdLmNsdXN0ZXJzID0gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBnZXR0ZWFtc0xpc3QoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRBc3NpZ250ZWFtcyh7IGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFsyXS50ZWFtcyA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLnVzZXIuYXNzaWduZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMubG9hZFNlbGVjdGVkdGVhbXModGhpcy51c2VyLmFzc2lnbmVkVmFsdWUpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzJdLmNsdXN0ZXJzID0gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVzVHlwZShlOiBhbnkpIHtcclxuICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLnJlc2V0Y2x1c3RlcnMoKTtcclxuICAgIC8vIHRoaXMucmVzZXRTdG9yZSgpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ID09IFwic3RvcmVzXCIpIHtcclxuICAgICAgaWYodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aD09MCl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHRzdG9yZXMgPSBcIlNlbGVjdCBTdG9yZXNcIjtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHRzdG9yZXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RofSBTdG9yZXMgU2VsZWN0ZWRgO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3QgPT0nY2x1c3RlcnMnKSB7XHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXS5sZW5ndGg9PTApe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXh0Y2x1c3RlcnMgPSBcIlNlbGVjdCBDbHVzdGVyc1wiO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGV4dGNsdXN0ZXJzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLmxlbmd0aH0gQ2x1c3RlcnMgU2VsZWN0ZWRgO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9ZWxzZSBpZih0aGlzLnNlbGVjdCA9PSd0ZWFtcycpIHtcclxuICAgICAgaWYodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLmxlbmd0aD09MCl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHR0ZWFtcyA9IFwiU2VsZWN0IFRlYW1zXCI7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXh0dGVhbXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ubGVuZ3RofSBUZWFtcyBTZWxlY3RlZGA7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0U3RvcmUoKSB7XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzID0gW107XHJcbiAgICB0aGlzLnN0b3JlcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdID0gW107XHJcbiAgfVxyXG5cclxuICByZXNldGNsdXN0ZXJzKCkge1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0WzFdLmNsdXN0ZXJzID0gW107XHJcbiAgICB0aGlzLmNsdXN0ZXJzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0gPSBbXTtcclxuICB9XHJcbiAgcmVzZXRUZWFtcygpIHtcclxuICAgIHRoaXMuZGF0YU9iamVjdFsyXS50ZWFtcyA9IFtdO1xyXG4gICAgdGhpcy50ZWFtcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdID0gW107XHJcbiAgfVxyXG4gIE9wZW5kcm9wZG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRhdGFPYmplY3Q6IGFueVtdID0gW1xyXG4gICAgeyBEZXNjcmlwdGlvbjogXCJTdG9yZXNcIiwgU3RvcmVzOiBbXSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogXCJDbHVzdGVyc1wiLCBjbHVzdGVyczogW10gfSxcclxuICAgIHsgRGVzY3JpcHRpb246IFwiVGVhbXNcIiwgdGVhbXM6IFtdIH0sXHJcblxyXG4gIF07XHJcbiAgc2VsZWN0ZWRWYWx1ZXNBcnJheTogYW55W10gPSBbW10sIFtdLFtdXTtcclxuICBzZWxlY3RlZFRleHQ6IHN0cmluZztcclxuXHJcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdChcIi5kcm9wZG93bjFcIikpIHtcclxuICAgICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoXCIuZHJvcGRvd24tY29udGVudFwiKSkge1xyXG4gICAgICB0aGlzLmRhdGFPYmplY3QuZm9yRWFjaCgoaXRlbTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgICBpdGVtLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIERyb3Bkb3duKHZhbHVlOiBhbnksIGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZGF0YU9iamVjdC5mb3JFYWNoKChpdGVtOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaSAhPT0gaW5kZXgpIHtcclxuICAgICAgICBpdGVtLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0YU9iamVjdFtpbmRleF0uaXNPcGVuID0gIXRoaXMuZGF0YU9iamVjdFtpbmRleF0uaXNPcGVuO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2hlY2tib3hTdG9yZXMoXHJcbiAgICBldmVudDogYW55LFxyXG4gICAgc3RvcmU6IGFueSxcclxuICAgIGluZGV4OiBudW1iZXIsXHJcbiAgICBzdWJJbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzdG9yZXMgPSB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdIHx8IFtdO1xyXG5cclxuICAgIGlmIChzdG9yZSA9PT0gXCJTZWxlY3QgQWxsXCIpIHtcclxuICAgICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICBzdG9yZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiAoaXRlbS5jaGVja2VkID0gY2hlY2tlZCkpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSBjaGVja2VkID8gWy4uLnN0b3Jlc10gOiBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICBjb25zdCBzdG9yZUluZGV4ID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmZpbmRJbmRleChcclxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnN0b3JlTmFtZSA9PT0gc3RvcmUuc3RvcmVOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGlzQ2hlY2tlZFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLnB1c2goc3RvcmUpXHJcbiAgICAgICAgOiB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0uc3BsaWNlKHN0b3JlSW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmRhdGFPYmplY3RbaW5kZXhdLlN0b3Jlc1tzdWJJbmRleF0uY2hlY2tlZCA9IGlzQ2hlY2tlZDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RBbGxDaGVja2VkID0gc3RvcmVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IGl0ZW0uY2hlY2tlZCk7XHJcbiAgICAoXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWxlY3RhbGwke2luZGV4fWApIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICAgICk/LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgU3RyaW5nKHNlbGVjdEFsbENoZWNrZWQpKTtcclxuICAgIChcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYG9wdGlvbiR7c3RvcmUuc3RvcmVOYW1lfWApIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICAgICk/LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgU3RyaW5nKGV2ZW50LnRhcmdldC5jaGVja2VkKSk7XHJcblxyXG4gICAgdGhpcy5sb2FkVGFibGUodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0c3RvcmVzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aH0gU3RvcmVzIFNlbGVjdGVkYDtcclxuICB9XHJcbiAgdG9nZ2xlQ2hlY2tib3hUZWFtcyhcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICB0ZWFtOiBhbnksXHJcbiAgICBpbmRleDogbnVtYmVyLFxyXG4gICAgc3ViSW5kZXg6IG51bWJlclxyXG4gICkge1xyXG4gICAgXHJcbiAgICBjb25zdCB0ZWFtcyA9IHRoaXMuZGF0YU9iamVjdFsyXS50ZWFtcztcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSB8fCBbXTtcclxuXHJcbiAgICBpZiAodGVhbSA9PT0gXCJTZWxlY3QgQWxsXCIpIHtcclxuICAgICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICB0ZWFtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IChpdGVtLmNoZWNrZWQgPSBjaGVja2VkKSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSA9IGNoZWNrZWQgPyBbLi4udGVhbXNdIDogW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgICAgY29uc3Qgc3RvcmVJbmRleCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5maW5kSW5kZXgoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS51c2VyTmFtZSA9PT0gdGVhbS51c2VyTmFtZVxyXG4gICAgICApO1xyXG4gICAgICBpc0NoZWNrZWRcclxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5wdXNoKHRlYW0pXHJcbiAgICAgICAgOiB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0uc3BsaWNlKHN0b3JlSW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmRhdGFPYmplY3RbaW5kZXhdLnRlYW1zW3N1YkluZGV4XS5jaGVja2VkID0gaXNDaGVja2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrZWQgPSB0ZWFtcy5ldmVyeSgoaXRlbTogYW55KSA9PiBpdGVtLmNoZWNrZWQpO1xyXG4gICAgKFxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2VsZWN0YWxsJHtpbmRleH1gKSBhcyBIVE1MSW5wdXRFbGVtZW50XHJcbiAgICApPy5zZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsIFN0cmluZyhzZWxlY3RBbGxDaGVja2VkKSk7XHJcbiAgICAoXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBvcHRpb24ke3RlYW1zLnN0b3JlTmFtZX1gKSBhcyBIVE1MSW5wdXRFbGVtZW50XHJcbiAgICApPy5zZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsIFN0cmluZyhldmVudC50YXJnZXQuY2hlY2tlZCkpO1xyXG5cclxuICAgIHRoaXMubG9hZFRhYmxlKHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGV4dHRlYW1zID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLmxlbmd0aH0gVGVhbXMgU2VsZWN0ZWRgO1xyXG4gIH1cclxuXHJcbiAgbG9hZFRhYmxlKHZhbHVlczogYW55W10pIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdCA9PSBcInN0b3Jlc1wiKSB7XHJcbiAgICAgIHRoaXMuc3RvcmVzID0gdmFsdWVzO1xyXG4gICAgfSBlbHNlIGlmKHRoaXMuc2VsZWN0ID09IFwiY2x1c3RlcnNcIikge1xyXG4gICAgICB0aGlzLmNsdXN0ZXJzID0gdmFsdWVzO1xyXG4gICAgfWVsc2UgaWYodGhpcy5zZWxlY3QgPT0gXCJ0ZWFtc1wiKSB7XHJcbiAgICAgIHRoaXMudGVhbXMgPSB2YWx1ZXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uc3RvcmVTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdICA9IGV2ZW50XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgb25ncm91cFNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0gID0gZXZlbnRcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH0gIFxyXG4gIG9uVGVhbXNTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdICA9IGV2ZW50XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgXHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgaWYgKHRoaXMudXNlci5hc3NpZ25lZFZhbHVlICYmIHRoaXMudXNlci5hc3NpZ25lZFZhbHVlLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnJlQXNzaWduU3VibWl0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFzc2lnblN1Ym1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgIGV4Y2VsRXJyb3I6IGFueTtcclxuICBleGNlbERhdGE6IGFueSA9IFtdXHJcbiAgdmFsaWRhdGVkT3V0cHV0OiBhbnkgPSBbXTtcclxuXHJcbiAgZ2V0U3RvcmVDb3VudHMoZGF0YTogYW55KSB7XHJcblxyXG4gICAgY29uc3QgdW5pcXVlVXNlck5hbWVzID0gbmV3IFNldChkYXRhPy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVsnU3RvcmUgTmFtZS9TdG9yZSBJZCddKSk7XHJcbiAgICByZXR1cm4gdW5pcXVlVXNlck5hbWVzLnNpemU7XHJcblxyXG4gIH1cclxuXHJcbiAgZmlsZUVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXBpRGF0YTogYW55ID0gW107XHJcblxyXG4gIG9uVXBsb2FkKGU6YW55KSB7XHJcbiAgICBsZXQgZGF0YTogYW55ID0gW107XHJcbiAgICBsZXQgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgbGV0IHNoZWV0TmFtZTogYW55ID0gJyc7XHJcblxyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gL1xcLih4bHN8eGxzeHxjc3YpJC9pO1xyXG4gIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIiwgXHJcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJ0ZXh0L2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJhcHBsaWNhdGlvbi9jc3ZcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBdO1xyXG5cclxuICBpZiAoIWFsbG93ZWRFeHRlbnNpb25zLnRlc3QoZmlsZS5uYW1lKSB8fCAhYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcclxuICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIk9ubHkgLnhsc3gsIG9yIC5jc3YgZmlsZXMgYXJlIGFsbG93ZWQuXCIpO1xyXG4gICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gPERhdGFUcmFuc2Zlcj5lLnRhcmdldDtcclxuICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICghIXRhcmdldC5maWxlc1swXS5uYW1lLm1hdGNoKC8oLnhsc3wueGxzeCkvKSkge1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogV29ya0Jvb2sgPSByZWFkKGJzdHIsIHsgdHlwZTogXCJiaW5hcnlcIiB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3M6IFdvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG5cclxuICAgICAgICBkYXRhID0gdXRpbHMuc2hlZXRfdG9fanNvbih3cywge2RlZnZhbDogXCJcIixyYXc6dHJ1ZX0pO1xyXG4gICAgICAgIHRoaXMuZXhjZWxEYXRhID0gZGF0YTtcclxuICAgICAgICBzaGVldE5hbWUgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgICByZWFkZXIub25sb2FkZW5kID0gYXN5bmMgKGUpID0+IHtcclxuICAgICAgICBsZXQgcHJvY2Vzc2VkQXJyYXk6IGFueVtdID0gW107XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHNoZWV0TmFtZSAhPSBcIlN0b3JlRGF0YVwiKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVFcnJvciA9ICB0cnVlXHJcbiAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiQ2FuIHlvdSBjb25maXJtIHdoZXRoZXIgdGhlIHNoZWV0IG5hbWUgaXMgU3RvcmVEYXRhID9cIik7XHJcbiAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlBsZWFzZSB1cGxvYWQgYSB2YWxpZCBmaWxlXCIpO1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJlcXVpcmVkS2V5cyA9IFsnU3RvcmUgTmFtZS9TdG9yZSBJZCddIC8vIE11c3QgYWx3YXlzIGJlIHByZXNlbnRcclxuICAgICAgICAvLyBjb25zdCBvcHRpb25hbEtleXMgPSBbJ3VzZXJQaG9uZScsICdjaXR5J10gOiBbJ2NpdHknXTtcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gZGF0YS5zb21lKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpdGVtKTtcclxuICAgICAgICAgIGNvbnN0IGhhc1JlcXVpcmVkS2V5cyA9IHJlcXVpcmVkS2V5cy5ldmVyeShrZXkgPT4ga2V5cy5pbmNsdWRlcyhrZXkpKTtcclxuICAgICAgICAgIGNvbnN0IGFsbEtleXNBcmVBbGxvd2VkID0ga2V5cy5ldmVyeShrZXkgPT4gXHJcbiAgICAgICAgICAgIHJlcXVpcmVkS2V5cy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgICAgIC8vIHx8IG9wdGlvbmFsS2V5cy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIGhhc1JlcXVpcmVkS2V5cyAmJiBhbGxLZXlzQXJlQWxsb3dlZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoJ1BsZWFzZSB1cGxvYWQgYSB2YWxpZCBmaWxlLicpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoICFlbGVtZW50Py5bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSB8fCBlbGVtZW50Py5bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSA9PSAnJyB8fCBlbGVtZW50Py5bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYEludmFsaWQgU3RvcmUgTmFtZS9TdG9yZSBJZCAtIEEke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcHJvY2Vzc2VkQXJyYXkucHVzaCh7XHJcbiAgICAgICAgICAgICAgdmFsdWU6IGRhdGFbaW5kZXhdWydTdG9yZSBOYW1lL1N0b3JlIElkJ11cclxuICAgICAgICAgICAgfSkgXHJcbiAgICAgICAgICB9IFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOiBlcnJvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hZnRlclVwbGxvYWQocG9wdXBjb250ZW50KVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5maWxlRXJyb3Ipe1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgcHJvY2Vzc2VkQXJyYXkgPSBwcm9jZXNzZWRBcnJheS5tYXAoKGVsOiBhbnkpID0+IHsgcmV0dXJuIHsgc3RvcmU6IGVsPy52YWx1ZSB9IH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmJ1bGtzdG9yZUFzc2lnbih7XHJcbiAgICAgICAgICAgICAgICB1c2VyRW1haWw6dGhpcy51c2VyLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogcHJvY2Vzc2VkQXJyYXlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSByZXM/LmRhdGE/LnJlc3VsdC5tYXAoKGVsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZXMgPSB0aGlzLmRhdGFPYmplY3Q/LlswXT8uU3RvcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RvcmVzPy5maW5kKCh2YWw6IGFueSkgPT4gdmFsLl9pZCA9PT0gZWw/Ll9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkuZmlsdGVyKChpdGVtOmFueSkgPT4gaXRlbSAhPT0gbnVsbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlRoZSBnaXZlbiBTdG9yZSBub3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnJhbmRcIik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlcnIuZXJyb3IuY29kZSA9PSA0MDApIHsgLy8gdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgUGxlYXNlIHByb3ZpZGUgY29ycmVjdCBhbmQgY29tcGxldGUgc3RvcmUgaW5mb3JtYXRpb24uYCxcclxuICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyLmVycm9yLmVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyLmVycm9yLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgICAgLy8gJChcIiNrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbFwiKS52YWwoXCJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm9jZWVkU3VibWl0KCkge1xyXG4gICAgdGhpcy5sb2FkVGFibGUodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0c3RvcmVzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aH0gU3RvcmVzIFNlbGVjdGVkYDtcclxuICB9XHJcblxyXG4gICBjbG9zZWFjdGl2ZXBvcHVwKCkge1xyXG4gICAgLy8gdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gIH1cclxuXHJcbiAgYWZ0ZXJVcGxsb2FkKGRhdGE/OiBhbnkpIHtcclxuICAgIHRoaXMuZXhjZWxFcnJvciA9IGRhdGE7XHJcbiAgICBpZiAodGhpcy51cGxvYWRQb3BVcCkge1xyXG4gICAgICB0aGlzLnVwbG9hZFBvcFVwLmRpc21pc3MoKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBsb2FkUG9wVXAgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuYWZ0ZXJWYWxpZGF0aW9uLCB7IGNlbnRlcmVkOiB0cnVlLCBiYWNrZHJvcDogJ3N0YXRpYycgfSlcclxuICB9XHJcblxyXG4gIGFzc2lnblN1Ym1pdCgpIHtcclxuICAgIFxyXG4gICAgdGhpcy5hcGlEYXRhID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLm1hcCgoZWw6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIF9pZDogZWw/Ll9pZCxcclxuICAgICAgICBzdG9yZU5hbWU6ZWw/LnN0b3JlTmFtZSxcclxuICAgICAgICBzdG9yZUlkOmVsPy5zdG9yZUlkXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGRhdGE6IFt7XHJcbiAgICAgICAgdXNlckVtYWlsOiB0aGlzLnVzZXIuZW1haWwsXHJcbiAgICAgICAgc3RvcmVzOiB0aGlzLmFwaURhdGEsXHJcbiAgICAgICAgY2x1c3RlcnM6dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLFxyXG4gICAgICAgIHRlYW1zOnRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSBcclxuICAgICAgfV1cclxuICAgICAgLy8gdXNlcklkOnRoaXMudXNlci5faWQsXHJcbiAgICAgIC8vIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgLy8gdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICB9ICBcclxuICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLmFzc2lnbkRhdGEocGF5bG9hZClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChgJHt0aGlzLnNlbGVjdCA9PSAnc3RvcmVzJyA/ICdTdG9yZXMnIDogJ0NsdXN0ZXJzJ30gQXNzaWduZWQgdG8gVXNlciBTdWNjZXNzZnVsbHkhYCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoYFVuYWJsZSB0byBhc3NpZ24gJHt0aGlzLnNlbGVjdCA9PSAnc3RvcmVzJyA/ICdzdG9yZXMnIDogJ0NsdXN0ZXJzJ30gdG8gdXNlciFgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIEFzc2lnbiBTdG9yZXMgdG8gVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVBc3NpZ25TdWJtaXQoKSB7XHJcbiAgICBsZXQgcGF5bG9hZD0ge1xyXG4gICAgICB1c2VySWQ6dGhpcy51c2VyLl9pZCxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICB1c2VyRW1haWw6IHRoaXMudXNlci5lbWFpbCxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIHN0b3Jlczp0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0sXHJcbiAgICAgIGNsdXN0ZXJzOnRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXSxcclxuICAgICAgdGVhbXM6dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5yZUFzc2lnblN0b3JlcyhwYXlsb2FkKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KGAke3RoaXMuc2VsZWN0ID09ICdzdG9yZXMnID8gJ1N0b3JlcycgOiAnQ2x1c3RlcnMnfSBBc3NpZ25lZCB0byBVc2VyIFN1Y2Nlc3NmdWxseSFgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChgVW5hYmxlIHRvIGFzc2lnbiAke3RoaXMuc2VsZWN0ID09ICdzdG9yZXMnID8gJ3N0b3JlcycgOiAnQ2x1c3RlcnMnfSB0byB1c2VyIWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gQXNzaWduIFN0b3JlcyB0byBVc2VyIVwiKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2VsZWN0ZWRTdG9yZXMoc3RvcmVzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdID0gW107XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzLmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RzID0gc3RvcmVzLnNvbWUoICggb2JqOmFueSApID0+IG9iai5zdG9yZUlkID09PSBzdG9yZS5zdG9yZUlkICk7XHJcbiAgICAgIGlmIChleGlzdHMpIHsgICAgICAgIFxyXG4gICAgICAgIHN0b3JlLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5wdXNoKHN0b3JlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0b3JlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0c3RvcmVzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aH0gU3RvcmVzIFNlbGVjdGVkYDtcclxuICB9XHJcbiAgbG9hZFNlbGVjdGVkdGVhbXModGVhbXM6IGFueVtdKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0WzJdLnRlYW1zLmZvckVhY2goKHRlYW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdHMgPSB0ZWFtcy5zb21lKCAoIG9iajphbnkgKSA9PiBvYmouX2lkID09PSB0ZWFtLl9pZCApO1xyXG4gICAgICBpZiAoZXhpc3RzKSB7XHJcbiAgICAgICAgdGVhbS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ucHVzaCh0ZWFtKTtcclxuICAgICAgICB0aGlzLnRlYW1zLnB1c2godGVhbS5faWQpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRleHR0ZWFtcyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXS5sZW5ndGh9IFRlYW1zIFNlbGVjdGVkYDtcclxuICB9XHJcbiAgbG9hZFNlbGVjdGVkY2x1c3RlcnMoY2x1c3RlcnM6IGFueVtdKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0gPSBbXTtcclxuICAgIHRoaXMuZGF0YU9iamVjdFsxXS5jbHVzdGVycy5mb3JFYWNoKChjbHVzdGVyOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RzID0gY2x1c3RlcnMuc29tZSggKCBvYmo6YW55ICkgPT4gb2JqLl9pZCA9PT0gY2x1c3Rlci5faWQgKTtcclxuICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgIGNsdXN0ZXIuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLnB1c2goY2x1c3Rlcik7XHJcbiAgICAgICAgdGhpcy5jbHVzdGVycy5wdXNoKGNsdXN0ZXIuX2lkKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0Y2x1c3RlcnMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0ubGVuZ3RofSBDbHVzdGVycyBTZWxlY3RlZGA7XHJcbiAgfVxyXG5cclxuICBjbG9zZU1vZGFsKCkge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIGFzc2lnbi1zdG9yZSBweS0wIHNjcm9sbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0wIGQtZmxleCBmbGV4LXN0YXJ0IGZsZXgtY29sdW1uIHAtOSBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktNVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJQaWNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9hc3NpZ24tYWRkdXNlci5zdmdcIj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj5cclxuPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz5cclxuPHBhdGggZD1cIk0zMiAzN1YzNUMzMiAzMy45MzkxIDMxLjU3ODYgMzIuOTIxNyAzMC44Mjg0IDMyLjE3MTZDMzAuMDc4MyAzMS40MjE0IDI5LjA2MDkgMzEgMjggMzFIMjFDMTkuOTM5MSAzMSAxOC45MjE3IDMxLjQyMTQgMTguMTcxNiAzMi4xNzE2QzE3LjQyMTQgMzIuOTIxNyAxNyAzMy45MzkxIDE3IDM1VjM3TTM2IDI0VjMwTTM5IDI3SDMzTTI4LjUgMjNDMjguNSAyNS4yMDkxIDI2LjcwOTEgMjcgMjQuNSAyN0MyMi4yOTA5IDI3IDIwLjUgMjUuMjA5MSAyMC41IDIzQzIwLjUgMjAuNzkwOSAyMi4yOTA5IDE5IDI0LjUgMTlDMjYuNzA5MSAxOSAyOC41IDIwLjc5MDkgMjguNSAyM1pcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJ0aXRsZSBtYi0zXCI+QXNzaWduIHt7KHNlbGVjdCA9PT0nY2x1c3RlcnMnID8gJ2FzIGxlYWQgdG8nIDogJ2FzIHVzZXIgdG8nKSB8IHRpdGxlY2FzZX19PC9hPlxyXG4gICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJzdWItdGl0bGUgbXktMlwiPlBsZWFzZSBhc3NpZ24gdGhlIHt7c2VsZWN0ID09PSAnc3RvcmVzJyA/ICdzdG9yZScgOihzZWxlY3QgPT09J3VzZXJzJyA/ICd1c2VyJyA6ICdjbHVzdGVyJyl9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwIFwiPlxyXG5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdD0nc3RvcmVzJzsgc3RvcmVzVHlwZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJzZWxlY3QgPT09ICdzdG9yZXMnID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgdGFiLXRpdGxlIG1lLTZcIj5TdG9yZXM8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtMVwiIChjbGljayk9XCJzZWxlY3Q9J2NsdXN0ZXJzJzsgc3RvcmVzVHlwZSgkZXZlbnQpXCI+PGFcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdCA9PT0gJ2NsdXN0ZXJzJyA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciB0YWItdGl0bGUgbWUtNlwiPkNsdXN0ZXI8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtMVwiIChjbGljayk9XCJzZWxlY3Q9J3RlYW1zJzsgc3RvcmVzVHlwZSgkZXZlbnQpXCI+PGFcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdCA9PT0gJ3RlYW1zJyA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciB0YWItdGl0bGUgbWUtNlwiPlRlYW1zPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdCA9PT0nc3RvcmVzJ1wiIGNsYXNzPVwidy0xMDAgbXktNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlci1vdmVybGF5XCIgKm5nSWY9XCIhKGRhdGFPYmplY3RbMF0/LlN0b3Jlcz8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICBTZWxlY3QgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxsaWItZ3JvdXAtc2VsZWN0IFtpdGVtc109XCJkYXRhT2JqZWN0WzBdPy5TdG9yZXNcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCInc3RvcmVOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3N0b3JlSWQnXCIgKHNlbGVjdGVkKT1cIm9uc3RvcmVTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzQXJyYXlbMF1cIj5cclxuICAgICAgICAgICAgICAgIDwvbGliLWdyb3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ID09PSdjbHVzdGVycydcIiBjbGFzcz1cInctMTAwIG15LTVcIj4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShkYXRhT2JqZWN0WzFdPy5jbHVzdGVycz8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IGNsdXN0ZXJcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWdyb3VwLXNlbGVjdCBbaXRlbXNdPVwiZGF0YU9iamVjdFsxXT8uY2x1c3RlcnNcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCInY2x1c3Rlck5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ2NsdXN0ZXJOYW1lJ1wiIChzZWxlY3RlZCk9XCJvbmdyb3VwU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwic2VsZWN0ZWRWYWx1ZXNBcnJheVsxXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWdyb3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdCA9PT0ndGVhbXMnXCIgY2xhc3M9XCJ3LTEwMCBteS01XCI+ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZGF0YU9iamVjdFsyXT8udGVhbXM/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgICAgICAgU2VsZWN0IFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGliLWdyb3VwLXNlbGVjdCBbaXRlbXNdPVwiZGF0YU9iamVjdFsyXT8udGVhbXNcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCIndGVhbU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndGVhbU5hbWUnXCIgKHNlbGVjdGVkKT1cIm9uVGVhbXNTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzQXJyYXlbMl1cIj5cclxuICAgICAgICAgICAgICAgIDwvbGliLWdyb3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGgyIGNsYXNzPVwic3RvcmUtaW5mbyBmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgIEBpZihzZWxlY3QgPT09J3N0b3JlcycpIHtcclxuICAgICAgICAgICAgICAgIFN0b3JlIFxyXG4gICAgICAgICAgICB9IEBlbHNlIGlmKHNlbGVjdCA9PT0nY2x1c3RlcnMnKSB7XHJcbiAgICAgICAgICAgICAgICBDbHVzdGVyXHJcbiAgICAgICAgICAgIH1AZWxzZSBpZihzZWxlY3QgPT09J3RlYW1zJykge1xyXG4gICAgICAgICAgICAgICAgVGVhbXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIDwvaDI+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uICAqbmdJZj1cInNlbGVjdCA9PT0nc3RvcmVzJ1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgaC0yMDBweCBtYi0zIHNjcm9sbFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyICBtdC0yIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TUE9DIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+QXBwbGljYXRpb24gSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TG9jYXRpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBzdG9yZXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3N0b3JlPy5zcG9jTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3N0b3JlPy5zdG9yZUlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c3RvcmU/LmFwcElkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c3RvcmU/LmxvY2F0aW9ufX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPiAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBAaWYgKHNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy1hc3NpZ24tdXNlciB3LTEwMCBtYi01IG14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48c3ZnIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjMuMzMyNyAyNFYyMi42NjY3QzIzLjMzMjcgMjEuOTU5NCAyMy4wNTE3IDIxLjI4MTEgMjIuNTUxNiAyMC43ODFDMjIuMDUxNSAyMC4yODEgMjEuMzczMyAyMCAyMC42NjYgMjBIMTUuMzMyN0MxNC42MjU0IDIwIDEzLjk0NzIgMjAuMjgxIDEzLjQ0NzEgMjAuNzgxQzEyLjk0NyAyMS4yODExIDEyLjY2NiAyMS45NTk0IDEyLjY2NiAyMi42NjY3VjI0TTIwLjY2NiAxNC42NjY3QzIwLjY2NiAxNi4xMzk0IDE5LjQ3MjEgMTcuMzMzMyAxNy45OTkzIDE3LjMzMzNDMTYuNTI2NiAxNy4zMzMzIDE1LjMzMjcgMTYuMTM5NCAxNS4zMzI3IDE0LjY2NjdDMTUuMzMyNyAxMy4xOTM5IDE2LjUyNjYgMTIgMTcuOTk5MyAxMkMxOS40NzIxIDEyIDIwLjY2NiAxMy4xOTM5IDIwLjY2NiAxNC42NjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIGZvcm0tY2hlY2stbGFiZWwgbXMtNVwiPlRoZSB1c2VyIHt7dXNlcj8udXNlck5hbWV9fSBpcyBhc3NpZ25lZCB0byB0aGUgYWJvdmUgc3RvcmVzLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxzZWN0aW9uICpuZ0lmPVwic2VsZWN0ID09PSdjbHVzdGVycydcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIGgtMjAwcHggbWItMyBzY3JvbGxcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciBtdC0yIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1zLTVcIj5DbHVzdGVyIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGNsdXN0ZXIgb2YgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtcy01XCI+e3tjbHVzdGVyPy5jbHVzdGVyTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7Y2x1c3Rlcj8uc3RvcmVOYW1lc319IDxzcGFuICpuZ0lmPVwiY2x1c3Rlcj8uc3RvcmVMaXN0Q291bnQgPiAyXCIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBibGVuZC1tb2RlIG1zLTNcIj4re3tjbHVzdGVyPy5zdG9yZUxpc3RDb3VudCAtIDJ9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgQGlmIChzZWxlY3RlZFZhbHVlc0FycmF5WzFdLmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy1hc3NpZ24tdXNlciB3LTEwMCBtYi01IG14LTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjxzdmcgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAzNiAzNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIzLjMzMjcgMjRWMjIuNjY2N0MyMy4zMzI3IDIxLjk1OTQgMjMuMDUxNyAyMS4yODExIDIyLjU1MTYgMjAuNzgxQzIyLjA1MTUgMjAuMjgxIDIxLjM3MzMgMjAgMjAuNjY2IDIwSDE1LjMzMjdDMTQuNjI1NCAyMCAxMy45NDcyIDIwLjI4MSAxMy40NDcxIDIwLjc4MUMxMi45NDcgMjEuMjgxMSAxMi42NjYgMjEuOTU5NCAxMi42NjYgMjIuNjY2N1YyNE0yMC42NjYgMTQuNjY2N0MyMC42NjYgMTYuMTM5NCAxOS40NzIxIDE3LjMzMzMgMTcuOTk5MyAxNy4zMzMzQzE2LjUyNjYgMTcuMzMzMyAxNS4zMzI3IDE2LjEzOTQgMTUuMzMyNyAxNC42NjY3QzE1LjMzMjcgMTMuMTkzOSAxNi41MjY2IDEyIDE3Ljk5OTMgMTJDMTkuNDcyMSAxMiAyMC42NjYgMTMuMTkzOSAyMC42NjYgMTQuNjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBmb3JtLWNoZWNrLWxhYmVsIG1zLTVcIj5UaGUgdXNlciB7e3VzZXI/LnVzZXJOYW1lfX0gaXMgYXNzaWduZWQgYXMgYSBtZW1iZXIgdG8gdGhlIGFib3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgY2x1c3RlcnMuPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8c2VjdGlvbiAqbmdJZj1cInNlbGVjdCA9PT0ndGVhbXMnXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBoLTIwMHB4IG1iLTMgc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgbXQtMiBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtcy01XCI+VGVhbSBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlVzZXJzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHRlYW0gb2YgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtcy01XCI+e3t0ZWFtPy50ZWFtTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dGVhbT8udXNlck5hbWVzfX0gPHNwYW4gKm5nSWY9XCJ0ZWFtPy51c2VyTGlzdENvdW50ID4gMlwiIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYmxlbmQtbW9kZSBtcy0zXCI+K3t7dGVhbT8udXNlckxpc3RDb3VudCAtIDJ9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgQGlmIChzZWxlY3RlZFZhbHVlc0FycmF5WzJdLmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy1hc3NpZ24tdXNlciB3LTEwMCBtYi01IG14LTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjxzdmcgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAzNiAzNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIzLjMzMjcgMjRWMjIuNjY2N0MyMy4zMzI3IDIxLjk1OTQgMjMuMDUxNyAyMS4yODExIDIyLjU1MTYgMjAuNzgxQzIyLjA1MTUgMjAuMjgxIDIxLjM3MzMgMjAgMjAuNjY2IDIwSDE1LjMzMjdDMTQuNjI1NCAyMCAxMy45NDcyIDIwLjI4MSAxMy40NDcxIDIwLjc4MUMxMi45NDcgMjEuMjgxMSAxMi42NjYgMjEuOTU5NCAxMi42NjYgMjIuNjY2N1YyNE0yMC42NjYgMTQuNjY2N0MyMC42NjYgMTYuMTM5NCAxOS40NzIxIDE3LjMzMzMgMTcuOTk5MyAxNy4zMzMzQzE2LjUyNjYgMTcuMzMzMyAxNS4zMzI3IDE2LjEzOTQgMTUuMzMyNyAxNC42NjY3QzE1LjMzMjcgMTMuMTkzOSAxNi41MjY2IDEyIDE3Ljk5OTMgMTJDMTkuNDcyMSAxMiAyMC42NjYgMTMuMTkzOSAyMC42NjYgMTQuNjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBmb3JtLWNoZWNrLWxhYmVsIG1zLTVcIj5UaGUgdXNlciB7e3VzZXI/LnVzZXJOYW1lfX0gaXMgYXNzaWduZWQgYXMgYSBtZW1iZXIgdG8gdGhlIGFib3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgdGVhbXMuPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8c2VjdGlvbiAqbmdJZj1cInNlbGVjdCA9PT0nc3RvcmVzJ1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIG15LTVcIj5cclxuICAgICAgICAgICAgICAgIDxociBjbGFzcz1cImhyIG0tMCBib3JkZXIgYm9yZGVyLWdyYXktNDAwIGJvcmRlci0xXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tb3IgcHgtMTBcIj5vcjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNTAwIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b2wgY2xhc3M9XCJjdXN0b20tb3JkZXJlZC1saXN0IHRleHQtZ3JheS00MDAgZnctYm9sZCBmcy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItdGV4dFwiPlVzZSB0aGUgdGVtcGxhdGUgdG8gdXBsb2FkIG11bHRpcGxlIHN0b3JlcyB0byB1c2VycyBhdCBvbmNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItdGV4dCBteS0yXCI+PHNwYW4gY2xhc3M9XCJ1c2VyLXRleHRcIj5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgaGVyZSAtIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibXMtMVwiIGhyZWY9XCIuLi8uLi8uLi9hc3NldHMvZmlsZXMvc3RvcmVMaXN0VGVtcGxhdGUueGxzeFwiIGRvd25sb2FkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTUuODMzMzMgOC4zMzMzM0wxMCAxMi41TTEwIDEyLjVMMTQuMTY2NyA4LjMzMzMzTTEwIDEyLjVWMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlbXBsYXRlIG1zLTJcIj5Eb3dubG9hZCBUZW1wbGF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0IG15LTNcIj5BZGQgeW91ciBkYXRhIHRvIHRoZSBUZW1wbGF0ZSBGaWxlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0IG15LTNcIj5VcGxvYWQgaXQgYmVsb3cgZm9yIHByb2Nlc3Npbmc8L2xpPiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9vbD5cclxuICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIG1zLTMgcmlnaHQtYmFyIHB5LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCIgPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJhY2NvdW50VHlwZVwiIHR5cGU9XCJyYWRpb1wiIGlkPVwia3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIiBhY2NlcHQgPSBcIi5jc3YsIGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIiB2YWx1ZT1cInBlcnNvbmFsXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25VcGxvYWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBuZy1yZWZsZWN0LXZhbHVlPVwicGVyc29uYVwiIHR5cGU9XCJmaWxlXCIgI2lucHV0RmlsZSAvPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIgY2xhc3M9XCIgdy01MCBwLTRcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWNlbnRlciB3LTEwMCBmcy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDZcIiBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNDYgNDZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgc3Ryb2tlPVwiI0Y5RkFGQlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiNlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQwNDdfNDA1NjYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNi4zMzMzIDI2LjMzMzRMMjMgMjNNMjMgMjNMMTkuNjY2NiAyNi4zMzM0TTIzIDIzVjMwLjVNMjkuOTkxNiAyOC4zMjVDMzAuODA0NCAyNy44ODE5IDMxLjQ0NjUgMjcuMTgwOCAzMS44MTY1IDI2LjMzMjJDMzIuMTg2NiAyNS40ODM3IDMyLjI2MzUgMjQuNTM2MSAzMi4wMzUxIDIzLjYzODlDMzEuODA2OCAyMi43NDE4IDMxLjI4NjIgMjEuOTQ2MyAzMC41NTU1IDIxLjM3NzlDMjkuODI0OCAyMC44MDk1IDI4LjkyNTcgMjAuNTAwNiAyOCAyMC41SDI2Ljk1QzI2LjY5NzcgMTkuNTI0NCAyNi4yMjc2IDE4LjYxODYgMjUuNTc0OSAxNy44NTA5QzI0LjkyMjIgMTcuMDgzMSAyNC4xMDQgMTYuNDczMiAyMy4xODE3IDE2LjA2NzJDMjIuMjU5NCAxNS42NjEyIDIxLjI1NzEgMTUuNDY5NSAyMC4yNTAxIDE1LjUwNjZDMTkuMjQzIDE1LjU0MzcgMTguMjU3NSAxNS44MDg2IDE3LjM2NzYgMTYuMjgxNEMxNi40Nzc3IDE2Ljc1NDIgMTUuNzA2NiAxNy40MjI2IDE1LjExMjIgMTguMjM2M0MxNC41MTc3IDE5LjA1MDEgMTQuMTE1NSAxOS45ODggMTMuOTM1OCAyMC45Nzk1QzEzLjc1NiAyMS45NzExIDEzLjgwMzQgMjIuOTkwNSAxNC4wNzQzIDIzLjk2MTFDMTQuMzQ1MiAyNC45MzE3IDE0LjgzMjcgMjUuODI4MiAxNS41IDI2LjU4MzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MDQ3XzQwNTY2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTMgMTMpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+PHNwYW4gY2xhc3M9XCJjbGljay11cGxvYWQgY3Vyc29yLXBvaW50ZXJcIj5DbGljayB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIm1zLTJcIj5vciBkcmFnIGFuZCBkcm9wPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj50aGUgZGF0YSBhZGRlZCB0ZW1wbGF0ZSBmaWxlIGZvciBwcm9jZXNzaW5nLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItMTAgdy0xMDAgbXQtMTBcIiByb2xlPVwiY2x1c3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwIG14LTNcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgbXgtM1wiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+U3VibWl0PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYWZ0ZXJWYWxpZGF0aW9uIGxldC1tb2RlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIG10LTBcIj5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIG10LTNcIj48c3BhbiBjbGFzcz1cImNvbmZpZy1oZWFkaW5nIGZ3LXNlbWlib2xkIHctYXV0b1wiPkJ1bGsgQXNzaWduPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMCBwb3B1cC1zY3JvbGxcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGNvbmZpZy1oZWFkaW5nIHctMTAwXCI+e3tnZXRTdG9yZUNvdW50cyhleGNlbERhdGEpfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+VG90YWwgUmVjb3JkczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC03MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7ZXhjZWxEYXRhPy5sZW5ndGh9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlJvd3MgcHJvY2Vzc2VkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV4Y2VsRXJyb3IgPyAnZXJyb3ItaGVhZGluZyc6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIGNvbmZpZy1oZWFkaW5nIHctMTAwXCI+e3tleGNlbEVycm9yPy5lcnJvcj8ubGVuZ3RoIHx8IDB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV4Y2VsRXJyb3IgPyAnZXhjZWwtZXJyb3InOicnXCIgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+RXJyb3I8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZXhjZWxFcnJvclwiIGNsYXNzPVwidGFibGUtaGVhZGVyIG10LTVcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ID5Zb3UncmUgYWJvdXQgdG8gYXNzaWduIHt7Z2V0U3RvcmVDb3VudHMoZXhjZWxEYXRhKX19IHt7Z2V0U3RvcmVDb3VudHMoZXhjZWxEYXRhKSA+IDEgPyAnU3RvcmVzJyA6ICdTdG9yZSd9fS4gQXJlIHlvdSBzdXJlIHdhbnQgdG8gcHJvY2VlZD88L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXhjZWxFcnJvclwiIGNsYXNzPVwiZmxleC1jb2x1bW4gbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1oZWFkaW5nIGZ3LWJvbGRcIj5JbnZhbGlkIERldGFpbHMgITwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlIG10LTVcIj5QbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGluZm9ybWF0aW9uLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB3LTEwMCByb3VuZGVkLTMgYm9yZGVyLWVycm9yIG10LTUgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlcnJvciBvZiBleGNlbEVycm9yPy5lcnJvcjsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCIgW25nQ2xhc3NdPVwiIWxhc3QgPyAnbWItMicgOiAnJ1wiIGNsYXNzPVwidGV4dC1lcnJvclwiPnt7aSArIDF9fSkge3tlcnJvcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMCB0ZXh0LWVuZCBwdC0wXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlYWN0aXZlcG9wdXAoKTttb2RlbC5jbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZXhjZWxFcnJvclwiIGNsYXNzPVwiYnRuIGJ0bi1tZCBweS0zIGJ0bi1kZWZhdWx0IG1zLTMgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwicHJvY2VlZFN1Ym1pdCgpO21vZGVsLmNsb3NlKClcIj5Qcm9jZWVkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gcHktMyBidG4tbWQgYnRuLWRlZmF1bHQgbXMtMyBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cImZpbGUxLmNsaWNrKCk7XCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlMSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIiBhY2NlcHQgPSBcIi5jc3YsIGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25VcGxvYWQoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
550
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS11c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tbWFuYWdlLXVzZXJzL2Fzc2lnbi1zdG9yZS1wb3B1cC9hc3NpZ24tc3RvcmUtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvYXNzaWduLXN0b3JlLXBvcHVwL2Fzc2lnbi1zdG9yZS1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFDRyxTQUFTLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBWSxJQUFJLEVBQUUsS0FBSyxFQUFhLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBV3hELE1BQU0sT0FBTyx5QkFBeUI7SUFtQjFCO0lBQ0E7SUFDQTtJQUNEO0lBQ0M7SUF0QkQsSUFBSSxDQUFNO0lBQ25CLE1BQU0sR0FBVyxRQUFRLENBQUM7SUFDMUIsTUFBTSxHQUFVLEVBQUUsQ0FBQztJQUNuQixRQUFRLEdBQVUsRUFBRSxDQUFDO0lBQ3JCLEtBQUssR0FBTyxFQUFFLENBQUM7SUFDZixjQUFjLENBQU07SUFDcEIsUUFBUSxDQUFjO0lBQ3RCLFFBQVEsQ0FBTTtJQUNkLFFBQVEsQ0FBUztJQUNqQixrQkFBa0IsQ0FBSTtJQUN0QixvQkFBb0IsQ0FBSTtJQUN4QixpQkFBaUIsQ0FBSztJQUNFLFNBQVMsQ0FBYTtJQUNoQixlQUFlLENBQU07SUFFbkQsV0FBVyxDQUFNO0lBRWpCLFlBQ1UsV0FBd0IsRUFDeEIsRUFBcUIsRUFDckIsRUFBZ0IsRUFDakIsV0FBMkIsRUFDMUIsWUFB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O1lBQ3ZFLElBQUksTUFBTSxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLG9CQUFvQixDQUFDO0lBQ3hGLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQzt3R0F0a0JVLHlCQUF5Qjs0RkFBekIseUJBQXlCLG1XQ3JCdEMsbzluQkErUmM7OzRGRDFRRCx5QkFBeUI7a0JBVHJDLFNBQVM7K0JBQ0Usd0JBQXdCLFFBSTVCO3dCQUNKLGtCQUFrQixFQUFFLGlCQUFpQjtxQkFDdEM7K0xBR1EsSUFBSTtzQkFBWixLQUFLO2dCQVlrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1EsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LCBWaWV3Q2hpbGQsRWxlbWVudFJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCwgTmdiTW9kYWwsIE5nYk1vZGFsUmVmIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IFdvcmtCb29rLCByZWFkLCB1dGlscywgV29ya1NoZWV0IH0gZnJvbSBcInhsc3hcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1hc3NpZ24tc3RvcmUtcG9wdXBcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Fzc2lnbi1zdG9yZS1wb3B1cC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudC5zY3NzXCIsXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XHJcbiAgaG9zdDoge1xyXG4gICAgJyhkb2N1bWVudDpjbGljayknOiAnb25DbGljaygkZXZlbnQpJyxcclxuICB9LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzaWduU3RvcmVQb3B1cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgdXNlcjogYW55O1xyXG4gIHNlbGVjdDogc3RyaW5nID0gXCJzdG9yZXNcIjtcclxuICBzdG9yZXM6IGFueVtdID0gW107XHJcbiAgY2x1c3RlcnM6IGFueVtdID0gW107XHJcbiAgdGVhbXM6YW55W109W107XHJcbiAgJGhlYWRlckZpbHRlcnM6IGFueTtcclxuICBtb2RhbFJlZjogTmdiTW9kYWxSZWY7XHJcbiAgdXNlckRhdGE6IGFueTtcclxuICB1c2VyVHlwZTogc3RyaW5nO1xyXG4gIHNlbGVjdGVkVGV4dHN0b3JlczphbnlcclxuICBzZWxlY3RlZFRleHRjbHVzdGVyczphbnlcclxuICBzZWxlY3RlZFRleHR0ZWFtczogYW55XHJcbiAgQFZpZXdDaGlsZChcImlucHV0RmlsZVwiKSBpbnB1dEZpbGU6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYWZ0ZXJWYWxpZGF0aW9uJykgYWZ0ZXJWYWxpZGF0aW9uOiBhbnk7XHJcblxyXG4gIHVwbG9hZFBvcFVwOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgdHM6IFRvYXN0U2VydmljZSxcclxuICAgIHB1YmxpYyBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcclxuICApIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuZGF0YVN1YmplY3Quc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMudXNlclR5cGUgPSBkYXRhID09IFwiVGFuZ28gVXNlclwiID8gXCJ0YW5nb1wiIDogXCJjbGllbnRcIjtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgbGV0IGRhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSB8fCBcIlwiKTtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIHRoaXMuJGhlYWRlckZpbHRlcnMgPSBkYXRhO1xyXG4gICAgfSBlbHNlIGlmKCFkYXRhKXtcclxuICAgICAgbGV0IHVzZXI6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIHx8ICcnKTtcclxuICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IHVzZXI7XHJcbiAgICAgIHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50ID0gdXNlci5jbGllbnRJZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRBc3NpZ25TdG9yZUxpc3QoKTtcclxuICAgIHRoaXMuZ2V0Y2x1c3Rlckxpc3QoKTtcclxuICAgIHRoaXMuZ2V0dGVhbXNMaXN0KCkgICAgXHJcbiAgfVxyXG5cclxuICBsb2FkVXNlckFzc2lnbkRldGFpbHMoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRVc2VyQXNzaWduRGF0YSh7XHJcbiAgICAgICAgZW1haWw6IHRoaXMudXNlci5lbWFpbCwgICAgICBcclxuICAgICAgfSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRTZWxlY3RlZFN0b3JlcyhyZXMuZGF0YS5zdG9yZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRTZWxlY3RlZGNsdXN0ZXJzKHJlcy5kYXRhLmNsdXN0ZXJzKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkU2VsZWN0ZWR0ZWFtcyhyZXMuZGF0YS50ZWFtcyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4geyAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFzc2lnblN0b3JlTGlzdCgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLmdldEFzc2lnblN0b3Jlcyh7IGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFswXS5TdG9yZXMgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFVzZXJBc3NpZ25EZXRhaWxzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzBdLlN0b3JlcyA9IFtdO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldGNsdXN0ZXJMaXN0KCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAuZ2V0QXNzaWduY2x1c3RlcnMoeyBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQgfSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbMV0uY2x1c3RlcnMgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFsxXS5jbHVzdGVycyA9IFtdO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0dGVhbXNMaXN0KCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAuZ2V0QXNzaWdudGVhbXMoeyBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsIHVzZXJFbWFpbDp0aGlzLnVzZXI/LmVtYWlsIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzJdLnRlYW1zID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gaWYgKHRoaXMudXNlci5hc3NpZ25lZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5sb2FkU2VsZWN0ZWR0ZWFtcyh0aGlzLnVzZXIuYXNzaWduZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbMl0uY2x1c3RlcnMgPSBbXTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9yZXNUeXBlKGU6IGFueSkge1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICAgIC8vIHRoaXMucmVzZXRjbHVzdGVycygpO1xyXG4gICAgLy8gdGhpcy5yZXNldFN0b3JlKCk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3QgPT0gXCJzdG9yZXNcIikge1xyXG4gICAgICBpZih0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RoPT0wKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGV4dHN0b3JlcyA9IFwiU2VsZWN0IFN0b3Jlc1wiO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGV4dHN0b3JlcyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5sZW5ndGh9IFN0b3JlcyBTZWxlY3RlZGA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZih0aGlzLnNlbGVjdCA9PSdjbHVzdGVycycpIHtcclxuICAgICAgaWYodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLmxlbmd0aD09MCl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHRjbHVzdGVycyA9IFwiU2VsZWN0IENsdXN0ZXJzXCI7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXh0Y2x1c3RlcnMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0ubGVuZ3RofSBDbHVzdGVycyBTZWxlY3RlZGA7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH1lbHNlIGlmKHRoaXMuc2VsZWN0ID09J3RlYW1zJykge1xyXG4gICAgICBpZih0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ubGVuZ3RoPT0wKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGV4dHRlYW1zID0gXCJTZWxlY3QgVGVhbXNcIjtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHR0ZWFtcyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5sZW5ndGh9IFRlYW1zIFNlbGVjdGVkYDtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRTdG9yZSgpIHtcclxuICAgIHRoaXMuZGF0YU9iamVjdFswXS5TdG9yZXMgPSBbXTtcclxuICAgIHRoaXMuc3RvcmVzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSBbXTtcclxuICB9XHJcblxyXG4gIHJlc2V0Y2x1c3RlcnMoKSB7XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMV0uY2x1c3RlcnMgPSBbXTtcclxuICAgIHRoaXMuY2x1c3RlcnMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXSA9IFtdO1xyXG4gIH1cclxuICByZXNldFRlYW1zKCkge1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0WzJdLnRlYW1zID0gW107XHJcbiAgICB0aGlzLnRlYW1zID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0gPSBbXTtcclxuICB9XHJcbiAgT3BlbmRyb3Bkb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGF0YU9iamVjdDogYW55W10gPSBbXHJcbiAgICB7IERlc2NyaXB0aW9uOiBcIlN0b3Jlc1wiLCBTdG9yZXM6IFtdIH0sXHJcbiAgICB7IERlc2NyaXB0aW9uOiBcIkNsdXN0ZXJzXCIsIGNsdXN0ZXJzOiBbXSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogXCJUZWFtc1wiLCB0ZWFtczogW10gfSxcclxuXHJcbiAgXTtcclxuICBzZWxlY3RlZFZhbHVlc0FycmF5OiBhbnlbXSA9IFtbXSwgW10sW11dO1xyXG4gIHNlbGVjdGVkVGV4dDogc3RyaW5nO1xyXG5cclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KFwiLmRyb3Bkb3duMVwiKSkge1xyXG4gICAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdChcIi5kcm9wZG93bi1jb250ZW50XCIpKSB7XHJcbiAgICAgIHRoaXMuZGF0YU9iamVjdC5mb3JFYWNoKChpdGVtOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRHJvcGRvd24odmFsdWU6IGFueSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0LmZvckVhY2goKGl0ZW06IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpICE9PSBpbmRleCkge1xyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5pc09wZW4gPSAhdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5pc09wZW47XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja2JveFN0b3JlcyhcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBzdG9yZTogYW55LFxyXG4gICAgaW5kZXg6IG51bWJlcixcclxuICAgIHN1YkluZGV4OiBudW1iZXJcclxuICApIHtcclxuICAgIGNvbnN0IHN0b3JlcyA9IHRoaXMuZGF0YU9iamVjdFswXS5TdG9yZXM7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gfHwgW107XHJcblxyXG4gICAgaWYgKHN0b3JlID09PSBcIlNlbGVjdCBBbGxcIikge1xyXG4gICAgICBjb25zdCBjaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHN0b3Jlcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IChpdGVtLmNoZWNrZWQgPSBjaGVja2VkKSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXSA9IGNoZWNrZWQgPyBbLi4uc3RvcmVzXSA6IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaXNDaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIGNvbnN0IHN0b3JlSW5kZXggPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0uZmluZEluZGV4KFxyXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uc3RvcmVOYW1lID09PSBzdG9yZS5zdG9yZU5hbWVcclxuICAgICAgKTtcclxuICAgICAgaXNDaGVja2VkXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ucHVzaChzdG9yZSlcclxuICAgICAgICA6IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5zcGxpY2Uoc3RvcmVJbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuZGF0YU9iamVjdFtpbmRleF0uU3RvcmVzW3N1YkluZGV4XS5jaGVja2VkID0gaXNDaGVja2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrZWQgPSBzdG9yZXMuZXZlcnkoKGl0ZW06IGFueSkgPT4gaXRlbS5jaGVja2VkKTtcclxuICAgIChcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHNlbGVjdGFsbCR7aW5kZXh9YCkgYXMgSFRNTElucHV0RWxlbWVudFxyXG4gICAgKT8uc2V0QXR0cmlidXRlKFwiY2hlY2tlZFwiLCBTdHJpbmcoc2VsZWN0QWxsQ2hlY2tlZCkpO1xyXG4gICAgKFxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgb3B0aW9uJHtzdG9yZS5zdG9yZU5hbWV9YCkgYXMgSFRNTElucHV0RWxlbWVudFxyXG4gICAgKT8uc2V0QXR0cmlidXRlKFwiY2hlY2tlZFwiLCBTdHJpbmcoZXZlbnQudGFyZ2V0LmNoZWNrZWQpKTtcclxuXHJcbiAgICB0aGlzLmxvYWRUYWJsZSh0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRleHRzdG9yZXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RofSBTdG9yZXMgU2VsZWN0ZWRgO1xyXG4gIH1cclxuICB0b2dnbGVDaGVja2JveFRlYW1zKFxyXG4gICAgZXZlbnQ6IGFueSxcclxuICAgIHRlYW06IGFueSxcclxuICAgIGluZGV4OiBudW1iZXIsXHJcbiAgICBzdWJJbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IHRlYW1zID0gdGhpcy5kYXRhT2JqZWN0WzJdLnRlYW1zO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdIHx8IFtdO1xyXG5cclxuICAgIGlmICh0ZWFtID09PSBcIlNlbGVjdCBBbGxcIikge1xyXG4gICAgICBjb25zdCBjaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHRlYW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4gKGl0ZW0uY2hlY2tlZCA9IGNoZWNrZWQpKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdID0gY2hlY2tlZCA/IFsuLi50ZWFtc10gOiBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICBjb25zdCBzdG9yZUluZGV4ID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLmZpbmRJbmRleChcclxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnVzZXJOYW1lID09PSB0ZWFtLnVzZXJOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGlzQ2hlY2tlZFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLnB1c2godGVhbSlcclxuICAgICAgICA6IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5zcGxpY2Uoc3RvcmVJbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuZGF0YU9iamVjdFtpbmRleF0udGVhbXNbc3ViSW5kZXhdLmNoZWNrZWQgPSBpc0NoZWNrZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0QWxsQ2hlY2tlZCA9IHRlYW1zLmV2ZXJ5KChpdGVtOiBhbnkpID0+IGl0ZW0uY2hlY2tlZCk7XHJcbiAgICAoXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWxlY3RhbGwke2luZGV4fWApIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICAgICk/LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgU3RyaW5nKHNlbGVjdEFsbENoZWNrZWQpKTtcclxuICAgIChcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYG9wdGlvbiR7dGVhbXMuc3RvcmVOYW1lfWApIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICAgICk/LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgU3RyaW5nKGV2ZW50LnRhcmdldC5jaGVja2VkKSk7XHJcblxyXG4gICAgdGhpcy5sb2FkVGFibGUodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0dGVhbXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ubGVuZ3RofSBUZWFtcyBTZWxlY3RlZGA7XHJcbiAgfVxyXG5cclxuICBsb2FkVGFibGUodmFsdWVzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ID09IFwic3RvcmVzXCIpIHtcclxuICAgICAgdGhpcy5zdG9yZXMgPSB2YWx1ZXM7XHJcbiAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3QgPT0gXCJjbHVzdGVyc1wiKSB7XHJcbiAgICAgIHRoaXMuY2x1c3RlcnMgPSB2YWx1ZXM7XHJcbiAgICB9ZWxzZSBpZih0aGlzLnNlbGVjdCA9PSBcInRlYW1zXCIpIHtcclxuICAgICAgdGhpcy50ZWFtcyA9IHZhbHVlcztcclxuICAgIH1cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25zdG9yZVNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gID0gZXZlbnRcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBvbmdyb3VwU2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXSAgPSBldmVudFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfSAgXHJcbiAgb25UZWFtc1NlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0gID0gZXZlbnRcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBcclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyLmFzc2lnbmVkVmFsdWUgJiYgdGhpcy51c2VyLmFzc2lnbmVkVmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmVBc3NpZ25TdWJtaXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXNzaWduU3VibWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAgZXhjZWxFcnJvcjogYW55O1xyXG4gIGV4Y2VsRGF0YTogYW55ID0gW11cclxuICB2YWxpZGF0ZWRPdXRwdXQ6IGFueSA9IFtdO1xyXG5cclxuICBnZXRTdG9yZUNvdW50cyhkYXRhOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCB1bmlxdWVVc2VyTmFtZXMgPSBuZXcgU2V0KGRhdGE/Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtWydTdG9yZSBOYW1lL1N0b3JlIElkJ10pKTtcclxuICAgIHJldHVybiB1bmlxdWVVc2VyTmFtZXMuc2l6ZTtcclxuXHJcbiAgfVxyXG5cclxuICBmaWxlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhcGlEYXRhOiBhbnkgPSBbXTtcclxuXHJcbiAgb25VcGxvYWQoZTphbnkpIHtcclxuICAgIGxldCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGxldCBlcnJvcjogYW55ID0gW107XHJcbiAgICBsZXQgc2hlZXROYW1lOiBhbnkgPSAnJztcclxuXHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZS50YXJnZXQuZmlsZXNbMF07XHJcbiAgY29uc3QgYWxsb3dlZEV4dGVuc2lvbnMgPSAvXFwuKHhsc3x4bHN4fGNzdikkL2k7XHJcbiAgY29uc3QgYWxsb3dlZFR5cGVzID0gW1xyXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiLCBcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcInRleHQvY3N2XCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcImFwcGxpY2F0aW9uL2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gIF07XHJcblxyXG4gIGlmICghYWxsb3dlZEV4dGVuc2lvbnMudGVzdChmaWxlLm5hbWUpIHx8ICFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZmlsZS50eXBlKSkge1xyXG4gICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiT25seSAueGxzeCwgb3IgLmNzdiBmaWxlcyBhcmUgYWxsb3dlZC5cIik7XHJcbiAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSA8RGF0YVRyYW5zZmVyPmUudGFyZ2V0O1xyXG4gICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhdGFyZ2V0LmZpbGVzWzBdLm5hbWUubWF0Y2goLygueGxzfC54bHN4KS8pKSB7XHJcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnN0cjogc3RyaW5nID0gZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IHdiOiBXb3JrQm9vayA9IHJlYWQoYnN0ciwgeyB0eXBlOiBcImJpbmFyeVwiIH0pO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICBjb25zdCB3czogV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcblxyXG4gICAgICAgIGRhdGEgPSB1dGlscy5zaGVldF90b19qc29uKHdzLCB7ZGVmdmFsOiBcIlwiLHJhdzp0cnVlfSk7XHJcbiAgICAgICAgdGhpcy5leGNlbERhdGEgPSBkYXRhO1xyXG4gICAgICAgIHNoZWV0TmFtZSA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyAoZSkgPT4ge1xyXG4gICAgICAgIGxldCBwcm9jZXNzZWRBcnJheTogYW55W10gPSBbXTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoc2hlZXROYW1lICE9IFwiU3RvcmVEYXRhXCIpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZUVycm9yID0gIHRydWVcclxuICAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJDYW4geW91IGNvbmZpcm0gd2hldGhlciB0aGUgc2hlZXQgbmFtZSBpcyBTdG9yZURhdGEgP1wiKTtcclxuICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkYXRhPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGVcIik7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWlyZWRLZXlzID0gWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gLy8gTXVzdCBhbHdheXMgYmUgcHJlc2VudFxyXG4gICAgICAgIC8vIGNvbnN0IG9wdGlvbmFsS2V5cyA9IFsndXNlclBob25lJywgJ2NpdHknXSA6IFsnY2l0eSddO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSBkYXRhLnNvbWUoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGl0ZW0pO1xyXG4gICAgICAgICAgY29uc3QgaGFzUmVxdWlyZWRLZXlzID0gcmVxdWlyZWRLZXlzLmV2ZXJ5KGtleSA9PiBrZXlzLmluY2x1ZGVzKGtleSkpO1xyXG4gICAgICAgICAgY29uc3QgYWxsS2V5c0FyZUFsbG93ZWQgPSBrZXlzLmV2ZXJ5KGtleSA9PiBcclxuICAgICAgICAgICAgcmVxdWlyZWRLZXlzLmluY2x1ZGVzKGtleSlcclxuICAgICAgICAgICAgLy8gfHwgb3B0aW9uYWxLZXlzLmluY2x1ZGVzKGtleSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gaGFzUmVxdWlyZWRLZXlzICYmIGFsbEtleXNBcmVBbGxvd2VkO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGUuJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRhPy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICggIWVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddIHx8IGVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddID09ICcnIHx8IGVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddID09IG51bGwpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBTdG9yZSBOYW1lL1N0b3JlIElkIC0gQSR7aW5kZXggKyAyfWApXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwcm9jZXNzZWRBcnJheS5wdXNoKHtcclxuICAgICAgICAgICAgICB2YWx1ZTogZGF0YVtpbmRleF1bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXVxyXG4gICAgICAgICAgICB9KSBcclxuICAgICAgICAgIH0gXHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoZXJyb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gICAgICAgICAgICB0aXRsZTogYEludmFsaWQgZGV0YWlscyFgLFxyXG4gICAgICAgICAgICBjb250ZW50OiBgUGxlYXNlIHByb3ZpZGUgY29ycmVjdCBhbmQgY29tcGxldGUgc3RvcmUgaW5mb3JtYXRpb24uYCxcclxuICAgICAgICAgICAgYnV0dG9udHlwZTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgZXJyb3I6IGVycm9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZChwb3B1cGNvbnRlbnQpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZih0aGlzLmZpbGVFcnJvcil7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICBwcm9jZXNzZWRBcnJheSA9IHByb2Nlc3NlZEFycmF5Lm1hcCgoZWw6IGFueSkgPT4geyByZXR1cm4geyBzdG9yZTogZWw/LnZhbHVlIH0gfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgICAgICAgICAuYnVsa3N0b3JlQXNzaWduKHtcclxuICAgICAgICAgICAgICAgIHVzZXJFbWFpbDp0aGlzLnVzZXIuZW1haWwsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBwcm9jZXNzZWRBcnJheVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcGlEYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXSA9IHJlcz8uZGF0YT8ucmVzdWx0Lm1hcCgoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlcyA9IHRoaXMuZGF0YU9iamVjdD8uWzBdPy5TdG9yZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdG9yZXM/LmZpbmQoKHZhbDogYW55KSA9PiB2YWwuX2lkID09PSBlbD8uX2lkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9KS5maWx0ZXIoKGl0ZW06YW55KSA9PiBpdGVtICE9PSBudWxsKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZnRlclVwbGxvYWQoKTtcclxuICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVGhlIGdpdmVuIFN0b3JlIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBicmFuZFwiKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGVyci5lcnJvci5jb2RlID09IDQwMCkgeyAvLyB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9udHlwZTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnIuZXJyb3IuZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZnRlclVwbGxvYWQocG9wdXBjb250ZW50KVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG4gICAgICAvLyAkKFwiI2t0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIpLnZhbChcIlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb2NlZWRTdWJtaXQoKSB7XHJcbiAgICB0aGlzLmxvYWRUYWJsZSh0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRleHRzdG9yZXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RofSBTdG9yZXMgU2VsZWN0ZWRgO1xyXG4gIH1cclxuXHJcbiAgIGNsb3NlYWN0aXZlcG9wdXAoKSB7XHJcbiAgICAvLyB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgfVxyXG5cclxuICBhZnRlclVwbGxvYWQoZGF0YT86IGFueSkge1xyXG4gICAgdGhpcy5leGNlbEVycm9yID0gZGF0YTtcclxuICAgIGlmICh0aGlzLnVwbG9hZFBvcFVwKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkUG9wVXAuZGlzbWlzcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGxvYWRQb3BVcCA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5hZnRlclZhbGlkYXRpb24sIHsgY2VudGVyZWQ6IHRydWUsIGJhY2tkcm9wOiAnc3RhdGljJyB9KVxyXG4gIH1cclxuXHJcbiAgYXNzaWduU3VibWl0KCkge1xyXG4gICAgXHJcbiAgICB0aGlzLmFwaURhdGEgPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubWFwKChlbDogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgX2lkOiBlbD8uX2lkLFxyXG4gICAgICAgIHN0b3JlTmFtZTplbD8uc3RvcmVOYW1lLFxyXG4gICAgICAgIHN0b3JlSWQ6ZWw/LnN0b3JlSWRcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgZGF0YTogW3tcclxuICAgICAgICB1c2VyRW1haWw6IHRoaXMudXNlci5lbWFpbCxcclxuICAgICAgICBzdG9yZXM6IHRoaXMuYXBpRGF0YSxcclxuICAgICAgICBjbHVzdGVyczp0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0sXHJcbiAgICAgICAgdGVhbXM6dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdIFxyXG4gICAgICB9XVxyXG4gICAgICAvLyB1c2VySWQ6dGhpcy51c2VyLl9pZCxcclxuICAgICAgLy8gY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICAvLyB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgIH0gIFxyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAuYXNzaWduRGF0YShwYXlsb2FkKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KGAke3RoaXMuc2VsZWN0ID09ICdzdG9yZXMnID8gJ1N0b3JlcycgOiAnQ2x1c3RlcnMnfSBBc3NpZ25lZCB0byBVc2VyIFN1Y2Nlc3NmdWxseSFgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChgVW5hYmxlIHRvIGFzc2lnbiAke3RoaXMuc2VsZWN0ID09ICdzdG9yZXMnID8gJ3N0b3JlcycgOiAnQ2x1c3RlcnMnfSB0byB1c2VyIWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gQXNzaWduIFN0b3JlcyB0byBVc2VyIVwiKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICByZUFzc2lnblN1Ym1pdCgpIHtcclxuICAgIGxldCBwYXlsb2FkPSB7XHJcbiAgICAgIHVzZXJJZDp0aGlzLnVzZXIuX2lkLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIHVzZXJFbWFpbDogdGhpcy51c2VyLmVtYWlsLFxyXG4gICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICAgc3RvcmVzOnRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXSxcclxuICAgICAgY2x1c3RlcnM6dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLFxyXG4gICAgICB0ZWFtczp0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl1cclxuICAgIH1cclxuICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLnJlQXNzaWduU3RvcmVzKHBheWxvYWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoYCR7dGhpcy5zZWxlY3QgPT0gJ3N0b3JlcycgPyAnU3RvcmVzJyA6ICdDbHVzdGVycyd9IEFzc2lnbmVkIHRvIFVzZXIgU3VjY2Vzc2Z1bGx5IWApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGBVbmFibGUgdG8gYXNzaWduICR7dGhpcy5zZWxlY3QgPT0gJ3N0b3JlcycgPyAnc3RvcmVzJyA6ICdDbHVzdGVycyd9IHRvIHVzZXIhYClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBBc3NpZ24gU3RvcmVzIHRvIFVzZXIhXCIpO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRTZWxlY3RlZFN0b3JlcyhzdG9yZXM6IGFueVtdKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSBbXTtcclxuICAgIHRoaXMuZGF0YU9iamVjdFswXS5TdG9yZXMuZm9yRWFjaCgoc3RvcmU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdHMgPSBzdG9yZXMuc29tZSggKCBvYmo6YW55ICkgPT4gb2JqLnN0b3JlSWQgPT09IHN0b3JlLnN0b3JlSWQgKTtcclxuICAgICAgaWYgKGV4aXN0cykgeyAgICAgICAgXHJcbiAgICAgICAgc3RvcmUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLnB1c2goc3RvcmUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3RvcmVzID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRleHRzdG9yZXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RofSBTdG9yZXMgU2VsZWN0ZWRgO1xyXG4gIH1cclxuICBsb2FkU2VsZWN0ZWR0ZWFtcyh0ZWFtczogYW55W10pe1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdID0gW107XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMl0udGVhbXMuZm9yRWFjaCgodGVhbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHRlYW1zLnNvbWUoICggb2JqOmFueSApID0+IG9iai5faWQgPT09IHRlYW0uX2lkICk7XHJcbiAgICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgICB0ZWFtLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5wdXNoKHRlYW0pO1xyXG4gICAgICAgIHRoaXMudGVhbXMucHVzaCh0ZWFtLl9pZClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGV4dHRlYW1zID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLmxlbmd0aH0gVGVhbXMgU2VsZWN0ZWRgO1xyXG4gIH1cclxuICBsb2FkU2VsZWN0ZWRjbHVzdGVycyhjbHVzdGVyczogYW55W10pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0WzFdLmNsdXN0ZXJzLmZvckVhY2goKGNsdXN0ZXI6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdHMgPSBjbHVzdGVycy5zb21lKCAoIG9iajphbnkgKSA9PiBvYmouX2lkID09PSBjbHVzdGVyLl9pZCApO1xyXG4gICAgICBpZiAoZXhpc3RzKSB7XHJcbiAgICAgICAgY2x1c3Rlci5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0ucHVzaChjbHVzdGVyKTtcclxuICAgICAgICB0aGlzLmNsdXN0ZXJzLnB1c2goY2x1c3Rlci5faWQpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRleHRjbHVzdGVycyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXS5sZW5ndGh9IENsdXN0ZXJzIFNlbGVjdGVkYDtcclxuICB9XHJcblxyXG4gIGNsb3NlTW9kYWwoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYXNzaWduLXN0b3JlIHB5LTAgc2Nyb2xsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS01XCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtNzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlBpY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL2Fzc2lnbi1hZGR1c2VyLnN2Z1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPlxyXG48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjREFGMUZGXCIvPlxyXG48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIvPlxyXG48cGF0aCBkPVwiTTMyIDM3VjM1QzMyIDMzLjkzOTEgMzEuNTc4NiAzMi45MjE3IDMwLjgyODQgMzIuMTcxNkMzMC4wNzgzIDMxLjQyMTQgMjkuMDYwOSAzMSAyOCAzMUgyMUMxOS45MzkxIDMxIDE4LjkyMTcgMzEuNDIxNCAxOC4xNzE2IDMyLjE3MTZDMTcuNDIxNCAzMi45MjE3IDE3IDMzLjkzOTEgMTcgMzVWMzdNMzYgMjRWMzBNMzkgMjdIMzNNMjguNSAyM0MyOC41IDI1LjIwOTEgMjYuNzA5MSAyNyAyNC41IDI3QzIyLjI5MDkgMjcgMjAuNSAyNS4yMDkxIDIwLjUgMjNDMjAuNSAyMC43OTA5IDIyLjI5MDkgMTkgMjQuNSAxOUMyNi43MDkxIDE5IDI4LjUgMjAuNzkwOSAyOC41IDIzWlwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YSBjbGFzcz1cInRpdGxlIG1iLTNcIj5Bc3NpZ24ge3soc2VsZWN0ID09PSdjbHVzdGVycycgPyAnYXMgbGVhZCB0bycgOiAnYXMgdXNlciB0bycpIHwgdGl0bGVjYXNlfX08L2E+XHJcbiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInN1Yi10aXRsZSBteS0yXCI+UGxlYXNlIGFzc2lnbiB0aGUge3tzZWxlY3QgPT09ICdzdG9yZXMnID8gJ3N0b3JlJyA6KHNlbGVjdCA9PT0ndXNlcnMnID8gJ3VzZXInIDogJ2NsdXN0ZXInKX19PC9zcGFuPiAtLT5cclxuICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXAgXCI+XHJcblxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbTFcIiAoY2xpY2spPVwic2VsZWN0PSdzdG9yZXMnOyBzdG9yZXNUeXBlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInNlbGVjdCA9PT0gJ3N0b3JlcycgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rMSBjdXJzb3ItcG9pbnRlciB0YWItdGl0bGUgbWUtNlwiPlN0b3JlczwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdD0nY2x1c3RlcnMnOyBzdG9yZXNUeXBlKCRldmVudClcIj48YVxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ID09PSAnY2x1c3RlcnMnID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIHRhYi10aXRsZSBtZS02XCI+Q2x1c3RlcjwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdD0ndGVhbXMnOyBzdG9yZXNUeXBlKCRldmVudClcIj48YVxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ID09PSAndGVhbXMnID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIHRhYi10aXRsZSBtZS02XCI+VGVhbXM8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ID09PSdzdG9yZXMnXCIgY2xhc3M9XCJ3LTEwMCBteS01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZGF0YU9iamVjdFswXT8uU3RvcmVzPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIFNlbGVjdCBTdG9yZXNcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGxpYi1ncm91cC1zZWxlY3QgW2l0ZW1zXT1cImRhdGFPYmplY3RbMF0/LlN0b3Jlc1wiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIidzdG9yZU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInc3RvcmVJZCdcIiAoc2VsZWN0ZWQpPVwib25zdG9yZVNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwic2VsZWN0ZWRWYWx1ZXNBcnJheVswXVwiPlxyXG4gICAgICAgICAgICAgICAgPC9saWItZ3JvdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3QgPT09J2NsdXN0ZXJzJ1wiIGNsYXNzPVwidy0xMDAgbXktNVwiPiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlci1vdmVybGF5XCIgKm5nSWY9XCIhKGRhdGFPYmplY3RbMV0/LmNsdXN0ZXJzPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgY2x1c3RlclxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaWItZ3JvdXAtc2VsZWN0IFtpdGVtc109XCJkYXRhT2JqZWN0WzFdPy5jbHVzdGVyc1wiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIidjbHVzdGVyTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInY2x1c3Rlck5hbWUnXCIgKHNlbGVjdGVkKT1cIm9uZ3JvdXBTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlc109XCJzZWxlY3RlZFZhbHVlc0FycmF5WzFdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saWItZ3JvdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ID09PSd0ZWFtcydcIiBjbGFzcz1cInctMTAwIG15LTVcIj4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShkYXRhT2JqZWN0WzJdPy50ZWFtcz8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICBTZWxlY3QgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxsaWItZ3JvdXAtc2VsZWN0IFtpdGVtc109XCJkYXRhT2JqZWN0WzJdPy50ZWFtc1wiIFtkaXNhYmxlZF09XCJmYWxzZVwiIFttdWx0aV09XCJ0cnVlXCIgW3NlYXJjaEZpZWxkXT1cIid0ZWFtTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid0ZWFtTmFtZSdcIiAoc2VsZWN0ZWQpPVwib25UZWFtc1NlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwic2VsZWN0ZWRWYWx1ZXNBcnJheVsyXVwiPlxyXG4gICAgICAgICAgICAgICAgPC9saWItZ3JvdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aDIgY2xhc3M9XCJzdG9yZS1pbmZvIGZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgQGlmKHNlbGVjdCA9PT0nc3RvcmVzJykge1xyXG4gICAgICAgICAgICAgICAgU3RvcmUgXHJcbiAgICAgICAgICAgIH0gQGVsc2UgaWYoc2VsZWN0ID09PSdjbHVzdGVycycpIHtcclxuICAgICAgICAgICAgICAgIENsdXN0ZXJcclxuICAgICAgICAgICAgfUBlbHNlIGlmKHNlbGVjdCA9PT0ndGVhbXMnKSB7XHJcbiAgICAgICAgICAgICAgICBUZWFtc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgPC9oMj5cclxuXHJcbiAgICAgICAgPHNlY3Rpb24gICpuZ0lmPVwic2VsZWN0ID09PSdzdG9yZXMnXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBoLTIwMHB4IG1iLTMgc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgIG10LTIgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlNQT0MgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TdG9yZSBJRDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BcHBsaWNhdGlvbiBJRDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Mb2NhdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIHN0b3JlcztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c3RvcmU/LnNwb2NOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c3RvcmU/LnN0b3JlSWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzdG9yZT8uYXBwSWR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzdG9yZT8ubG9jYXRpb259fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJnLWFzc2lnbi11c2VyIHctMTAwIG1iLTUgbXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjxzdmcgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAzNiAzNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMy4zMzI3IDI0VjIyLjY2NjdDMjMuMzMyNyAyMS45NTk0IDIzLjA1MTcgMjEuMjgxMSAyMi41NTE2IDIwLjc4MUMyMi4wNTE1IDIwLjI4MSAyMS4zNzMzIDIwIDIwLjY2NiAyMEgxNS4zMzI3QzE0LjYyNTQgMjAgMTMuOTQ3MiAyMC4yODEgMTMuNDQ3MSAyMC43ODFDMTIuOTQ3IDIxLjI4MTEgMTIuNjY2IDIxLjk1OTQgMTIuNjY2IDIyLjY2NjdWMjRNMjAuNjY2IDE0LjY2NjdDMjAuNjY2IDE2LjEzOTQgMTkuNDcyMSAxNy4zMzMzIDE3Ljk5OTMgMTcuMzMzM0MxNi41MjY2IDE3LjMzMzMgMTUuMzMyNyAxNi4xMzk0IDE1LjMzMjcgMTQuNjY2N0MxNS4zMzI3IDEzLjE5MzkgMTYuNTI2NiAxMiAxNy45OTkzIDEyQzE5LjQ3MjEgMTIgMjAuNjY2IDEzLjE5MzkgMjAuNjY2IDE0LjY2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgZm9ybS1jaGVjay1sYWJlbCBtcy01XCI+VGhlIHVzZXIge3t1c2VyPy51c2VyTmFtZX19IGlzIGFzc2lnbmVkIHRvIHRoZSBhYm92ZSBzdG9yZXMuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJzZWxlY3QgPT09J2NsdXN0ZXJzJ1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgaC0yMDBweCBtYi0zIHNjcm9sbFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyIG10LTIgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibXMtNVwiPkNsdXN0ZXIgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TdG9yZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgY2x1c3RlciBvZiB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV07bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1zLTVcIj57e2NsdXN0ZXI/LmNsdXN0ZXJOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tjbHVzdGVyPy5zdG9yZU5hbWVzfX0gPHNwYW4gKm5nSWY9XCJjbHVzdGVyPy5zdG9yZUxpc3RDb3VudCA+IDJcIiBjbGFzcz1cImp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJsZW5kLW1vZGUgbXMtM1wiPit7e2NsdXN0ZXI/LnN0b3JlTGlzdENvdW50IC0gMn19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBAaWYgKHNlbGVjdGVkVmFsdWVzQXJyYXlbMV0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJnLWFzc2lnbi11c2VyIHctMTAwIG1iLTUgbXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PHN2ZyB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiB2aWV3Qm94PVwiMCAwIDM2IDM2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjMuMzMyNyAyNFYyMi42NjY3QzIzLjMzMjcgMjEuOTU5NCAyMy4wNTE3IDIxLjI4MTEgMjIuNTUxNiAyMC43ODFDMjIuMDUxNSAyMC4yODEgMjEuMzczMyAyMCAyMC42NjYgMjBIMTUuMzMyN0MxNC42MjU0IDIwIDEzLjk0NzIgMjAuMjgxIDEzLjQ0NzEgMjAuNzgxQzEyLjk0NyAyMS4yODExIDEyLjY2NiAyMS45NTk0IDEyLjY2NiAyMi42NjY3VjI0TTIwLjY2NiAxNC42NjY3QzIwLjY2NiAxNi4xMzk0IDE5LjQ3MjEgMTcuMzMzMyAxNy45OTkzIDE3LjMzMzNDMTYuNTI2NiAxNy4zMzMzIDE1LjMzMjcgMTYuMTM5NCAxNS4zMzI3IDE0LjY2NjdDMTUuMzMyNyAxMy4xOTM5IDE2LjUyNjYgMTIgMTcuOTk5MyAxMkMxOS40NzIxIDEyIDIwLjY2NiAxMy4xOTM5IDIwLjY2NiAxNC42NjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIGZvcm0tY2hlY2stbGFiZWwgbXMtNVwiPlRoZSB1c2VyIHt7dXNlcj8udXNlck5hbWV9fSBpcyBhc3NpZ25lZCBhcyBhIG1lbWJlciB0byB0aGUgYWJvdmVcclxuICAgICAgICAgICAgICAgICAgICBjbHVzdGVycy48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxzZWN0aW9uICpuZ0lmPVwic2VsZWN0ID09PSd0ZWFtcydcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIGgtMjAwcHggbWItMyBzY3JvbGxcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciBtdC0yIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1zLTVcIj5UZWFtIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+VXNlcnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdGVhbSBvZiB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl07bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1zLTVcIj57e3RlYW0/LnRlYW1OYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t0ZWFtPy51c2VyTmFtZXN9fSA8c3BhbiAqbmdJZj1cInRlYW0/LnVzZXJMaXN0Q291bnQgPiAyXCIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBibGVuZC1tb2RlIG1zLTNcIj4re3t0ZWFtPy51c2VyTGlzdENvdW50IC0gMn19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBAaWYgKHNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJnLWFzc2lnbi11c2VyIHctMTAwIG1iLTUgbXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PHN2ZyB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiB2aWV3Qm94PVwiMCAwIDM2IDM2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjMuMzMyNyAyNFYyMi42NjY3QzIzLjMzMjcgMjEuOTU5NCAyMy4wNTE3IDIxLjI4MTEgMjIuNTUxNiAyMC43ODFDMjIuMDUxNSAyMC4yODEgMjEuMzczMyAyMCAyMC42NjYgMjBIMTUuMzMyN0MxNC42MjU0IDIwIDEzLjk0NzIgMjAuMjgxIDEzLjQ0NzEgMjAuNzgxQzEyLjk0NyAyMS4yODExIDEyLjY2NiAyMS45NTk0IDEyLjY2NiAyMi42NjY3VjI0TTIwLjY2NiAxNC42NjY3QzIwLjY2NiAxNi4xMzk0IDE5LjQ3MjEgMTcuMzMzMyAxNy45OTkzIDE3LjMzMzNDMTYuNTI2NiAxNy4zMzMzIDE1LjMzMjcgMTYuMTM5NCAxNS4zMzI3IDE0LjY2NjdDMTUuMzMyNyAxMy4xOTM5IDE2LjUyNjYgMTIgMTcuOTk5MyAxMkMxOS40NzIxIDEyIDIwLjY2NiAxMy4xOTM5IDIwLjY2NiAxNC42NjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIGZvcm0tY2hlY2stbGFiZWwgbXMtNVwiPlRoZSB1c2VyIHt7dXNlcj8udXNlck5hbWV9fSBpcyBhc3NpZ25lZCBhcyBhIG1lbWJlciB0byB0aGUgYWJvdmVcclxuICAgICAgICAgICAgICAgICAgICB0ZWFtcy48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxzZWN0aW9uICpuZ0lmPVwic2VsZWN0ID09PSdzdG9yZXMnXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgbXktNVwiPlxyXG4gICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwiaHIgbS0wIGJvcmRlciBib3JkZXItZ3JheS00MDAgYm9yZGVyLTFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBwb3NpdGlvbi1vciBweC0xMFwiPm9yPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS01MDAgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvbCBjbGFzcz1cImN1c3RvbS1vcmRlcmVkLWxpc3QgdGV4dC1ncmF5LTQwMCBmdy1ib2xkIGZzLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0XCI+VXNlIHRoZSB0ZW1wbGF0ZSB0byB1cGxvYWQgbXVsdGlwbGUgc3RvcmVzIHRvIHVzZXJzIGF0IG9uY2UuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0IG15LTJcIj48c3BhbiBjbGFzcz1cInVzZXItdGV4dFwiPkRvd25sb2FkIHRoZSB0ZW1wbGF0ZSBoZXJlIC0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJtcy0xXCIgaHJlZj1cIi4uLy4uLy4uL2Fzc2V0cy9maWxlcy9zdG9yZUxpc3RUZW1wbGF0ZS54bHN4XCIgZG93bmxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNNS44MzMzMyA4LjMzMzMzTDEwIDEyLjVNMTAgMTIuNUwxNC4xNjY3IDguMzMzMzNNMTAgMTIuNVYyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVtcGxhdGUgbXMtMlwiPkRvd25sb2FkIFRlbXBsYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPkFkZCB5b3VyIGRhdGEgdG8gdGhlIFRlbXBsYXRlIEZpbGU8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPlVwbG9hZCBpdCBiZWxvdyBmb3IgcHJvY2Vzc2luZzwvbGk+ICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L29sPlxyXG4gICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbXMtMyByaWdodC1iYXIgcHktNSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiA+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cImFjY291bnRUeXBlXCIgdHlwZT1cInJhZGlvXCIgaWQ9XCJrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbFwiIGFjY2VwdCA9IFwiLmNzdiwgYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQsIGFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiIHZhbHVlPVwicGVyc29uYWxcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblVwbG9hZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIG5nLXJlZmxlY3QtdmFsdWU9XCJwZXJzb25hXCIgdHlwZT1cImZpbGVcIiAjaW5wdXRGaWxlIC8+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwia3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIiBjbGFzcz1cIiB3LTUwIHAtNFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdy1ib2xkIHRleHQtY2VudGVyIHctMTAwIGZzLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0NlwiIGhlaWdodD1cIjQ2XCIgdmlld0JveD1cIjAgMCA0NiA0NlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNGMkY0RjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBzdHJva2U9XCIjRjlGQUZCXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCI2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDA0N180MDU2NilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI2LjMzMzMgMjYuMzMzNEwyMyAyM00yMyAyM0wxOS42NjY2IDI2LjMzMzRNMjMgMjNWMzAuNU0yOS45OTE2IDI4LjMyNUMzMC44MDQ0IDI3Ljg4MTkgMzEuNDQ2NSAyNy4xODA4IDMxLjgxNjUgMjYuMzMyMkMzMi4xODY2IDI1LjQ4MzcgMzIuMjYzNSAyNC41MzYxIDMyLjAzNTEgMjMuNjM4OUMzMS44MDY4IDIyLjc0MTggMzEuMjg2MiAyMS45NDYzIDMwLjU1NTUgMjEuMzc3OUMyOS44MjQ4IDIwLjgwOTUgMjguOTI1NyAyMC41MDA2IDI4IDIwLjVIMjYuOTVDMjYuNjk3NyAxOS41MjQ0IDI2LjIyNzYgMTguNjE4NiAyNS41NzQ5IDE3Ljg1MDlDMjQuOTIyMiAxNy4wODMxIDI0LjEwNCAxNi40NzMyIDIzLjE4MTcgMTYuMDY3MkMyMi4yNTk0IDE1LjY2MTIgMjEuMjU3MSAxNS40Njk1IDIwLjI1MDEgMTUuNTA2NkMxOS4yNDMgMTUuNTQzNyAxOC4yNTc1IDE1LjgwODYgMTcuMzY3NiAxNi4yODE0QzE2LjQ3NzcgMTYuNzU0MiAxNS43MDY2IDE3LjQyMjYgMTUuMTEyMiAxOC4yMzYzQzE0LjUxNzcgMTkuMDUwMSAxNC4xMTU1IDE5Ljk4OCAxMy45MzU4IDIwLjk3OTVDMTMuNzU2IDIxLjk3MTEgMTMuODAzNCAyMi45OTA1IDE0LjA3NDMgMjMuOTYxMUMxNC4zNDUyIDI0LjkzMTcgMTQuODMyNyAyNS44MjgyIDE1LjUgMjYuNTgzNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzQwNDdfNDA1NjZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMyAxMylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj48c3BhbiBjbGFzcz1cImNsaWNrLXVwbG9hZCBjdXJzb3ItcG9pbnRlclwiPkNsaWNrIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMlwiPm9yIGRyYWcgYW5kIGRyb3A8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPnRoZSBkYXRhIGFkZGVkIHRlbXBsYXRlIGZpbGUgZm9yIHByb2Nlc3NpbmcuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi0xMCB3LTEwMCBtdC0xMFwiIHJvbGU9XCJjbHVzdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbXgtM1wiIChjbGljayk9XCJjbG9zZU1vZGFsKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBteC0zXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj5TdWJtaXQ8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNhZnRlclZhbGlkYXRpb24gbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgbXQtMFwiPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgbXQtM1wiPjxzcGFuIGNsYXNzPVwiY29uZmlnLWhlYWRpbmcgZnctc2VtaWJvbGQgdy1hdXRvXCI+QnVsayBBc3NpZ248L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwdC0wIHBvcHVwLXNjcm9sbFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC03MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2dldFN0b3JlQ291bnRzKGV4Y2VsRGF0YSl9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5Ub3RhbCBSZWNvcmRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGNvbmZpZy1oZWFkaW5nIHctMTAwXCI+e3tleGNlbERhdGE/Lmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+Um93cyBwcm9jZXNzZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC03MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdlcnJvci1oZWFkaW5nJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2V4Y2VsRXJyb3I/LmVycm9yPy5sZW5ndGggfHwgMH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdleGNlbC1lcnJvcic6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5FcnJvcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFleGNlbEVycm9yXCIgY2xhc3M9XCJ0YWJsZS1oZWFkZXIgbXQtNVwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgPllvdSdyZSBhYm91dCB0byBhc3NpZ24ge3tnZXRTdG9yZUNvdW50cyhleGNlbERhdGEpfX0ge3tnZXRTdG9yZUNvdW50cyhleGNlbERhdGEpID4gMSA/ICdTdG9yZXMnIDogJ1N0b3JlJ319LiBBcmUgeW91IHN1cmUgd2FudCB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJmbGV4LWNvbHVtbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWhlYWRpbmcgZnctYm9sZFwiPkludmFsaWQgRGV0YWlscyAhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGUgbXQtNVwiPlBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaW5mb3JtYXRpb24uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHctMTAwIHJvdW5kZWQtMyBib3JkZXItZXJyb3IgbXQtNSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yIG9mIGV4Y2VsRXJyb3I/LmVycm9yOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIiBbbmdDbGFzc109XCIhbGFzdCA/ICdtYi0yJyA6ICcnXCIgY2xhc3M9XCJ0ZXh0LWVycm9yXCI+e3tpICsgMX19KSB7e2Vycm9yfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wIHRleHQtZW5kIHB0LTBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbWQgYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2xvc2VhY3RpdmVwb3B1cCgpO21vZGVsLmNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gYnRuLW1kIHB5LTMgYnRuLWRlZmF1bHQgbXMtMyBidG4tcHJpbWFyeVwiIChjbGljayk9XCJwcm9jZWVkU3VibWl0KCk7bW9kZWwuY2xvc2UoKVwiPlByb2NlZWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImV4Y2VsRXJyb3JcIiBjbGFzcz1cImJ0biBweS0zIGJ0bi1tZCBidG4tZGVmYXVsdCBtcy0zIGJ0bi1kYW5nZXJcIiAoY2xpY2spPVwiZmlsZTEuY2xpY2soKTtcIj5SZXVwbG9hZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW47XCIgI2ZpbGUxIHR5cGU9XCJmaWxlXCIgaWQ9XCJrdF9hY2NvdW50X3RlYW1fc2l6ZV9zZWxlY3RfMlwiIGFjY2VwdCA9IFwiLmNzdiwgYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQsIGFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblVwbG9hZCgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|