brainloper-ui 14.0.41 → 14.0.42
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/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs
CHANGED
|
@@ -172,12 +172,14 @@ export class DataTableComponent {
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
validateRolAndPermission() {
|
|
175
|
+
console.log('rol', this.roleId, 'rolesAndPermissions', rolesAndPermissions);
|
|
175
176
|
if (this.roleId != 0) {
|
|
176
177
|
let rolePermissions = rolesAndPermissions?.find(x => x.id == this.roleId);
|
|
177
178
|
this.hasAccessToAll = rolePermissions?.hasAccessToAll ?? rolePermissions.modules?.find(x => x.id == this.moduleId)?.hasAccessToAll ?? false;
|
|
178
179
|
}
|
|
179
180
|
;
|
|
180
181
|
this.rolesAndPermissionUser = rolesAndPermissions?.find(x => x.id == this.roleId)?.modules?.find(x => x.id == this.moduleId)?.subModules?.find(x => x.id == this.subModuleId)?.permissions ?? {};
|
|
182
|
+
console.log('rolesAndPermissionsbyUser', this.rolesAndPermissionUser);
|
|
181
183
|
if (!this.hasAccessToAll && !this.rolesAndPermissionUser.readAll && this.rolesAndPermissionUser.readOwn == true) {
|
|
182
184
|
this.params = [...this.params, { id: 'readOwn', value: true }];
|
|
183
185
|
}
|
|
@@ -305,6 +307,8 @@ export class DataTableComponent {
|
|
|
305
307
|
];
|
|
306
308
|
}
|
|
307
309
|
hasPermission(permission) {
|
|
310
|
+
if (permission == 'addComment')
|
|
311
|
+
console.log('rolesAndPermissionUserinhaspermission', this.rolesAndPermissionUser);
|
|
308
312
|
if (this.hasAccessToAll)
|
|
309
313
|
return true;
|
|
310
314
|
return this.rolesAndPermissionUser?.[permission] ?? false;
|
|
@@ -725,4 +729,4 @@ var enumActions;
|
|
|
725
729
|
enumActions[enumActions["REMOVE"] = 2] = "REMOVE";
|
|
726
730
|
enumActions[enumActions["SHOW_FILE_ICON"] = 3] = "SHOW_FILE_ICON";
|
|
727
731
|
})(enumActions || (enumActions = {}));
|
|
728
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFFckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSzNELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUczRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDM0UsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7UUFDaEMsT0FBTyxRQUFRLE1BQU0sRUFBRSxDQUFDO0tBQ3pCO0lBRUQsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTdCLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUM7SUFFbkMsTUFBTSxRQUFRLEdBQ1osVUFBVSxHQUFHLE1BQU07UUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMs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Q0FBQTtJQUNILG1DQUFHLENBQUE7SUFDSCxxQ0FBSSxDQUFBO0lBQ0oscUNBQUksQ0FBQTtBQUNOLENBQUMsRUFMSSxTQUFTLEtBQVQsU0FBUyxRQUtiO0FBRUQsSUFBSyxXQUtKO0FBTEQsV0FBSyxXQUFXO0lBQ2QsbURBQU8sQ0FBQTtJQUNQLDJDQUFHLENBQUE7SUFDSCxpREFBTSxDQUFBO0lBQ04saUVBQWMsQ0FBQTtBQUNoQixDQUFDLEVBTEksV0FBVyxLQUFYLFdBQVcsUUFLZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjcmVlblNpemVVdGlsIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9zY3JlZW4tc2l6ZS11dGlsJztcbmltcG9ydCB7IEV4cG9ydERhdGFTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBUYWJsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvdGFibGUtbW9kYWwvdGFibGUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBGdW5jdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZnVuY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9ySW50bCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IElQZXJtaXNzaW9ucywgbW9kdWxlc0J5Um9sIH0gZnJvbSAnQGVkZ2Fyem9uOTMvYnJhaW5sb3Blci1zaGFyZWQnO1xuXG5cbmNvbnN0IHNwYW5pc2hSYW5nZUxhYmVsID0gKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpID0+IHtcbiAgaWYgKGxlbmd0aCA9PSAwIHx8IHBhZ2VTaXplID09IDApIHtcbiAgICByZXR1cm4gYDAgZGUgJHtsZW5ndGh9YDtcbiAgfVxuXG4gIGxlbmd0aCA9IE1hdGgubWF4KGxlbmd0aCwgMCk7XG5cbiAgY29uc3Qgc3RhcnRJbmRleCA9IHBhZ2UgKiBwYWdlU2l6ZTtcblxuICBjb25zdCBlbmRJbmRleCA9XG4gICAgc3RhcnRJbmRleCA8IGxlbmd0aFxuICAgICAgPyBNYXRoLm1pbihzdGFydEluZGV4ICsgcGFnZVNpemUsIGxlbmd0aClcbiAgICAgIDogc3RhcnRJbmRleCArIHBhZ2VTaXplO1xuXG4gIHJldHVybiBgJHtzdGFydEluZGV4ICsgMX0gLSAke2VuZEluZGV4fSBkZSAke2xlbmd0aH1gO1xufTtcblxuY29uc3Qgcm9sZXNBbmRQZXJtaXNzaW9ucyA9IG1vZHVsZXNCeVJvbFxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHRpdGxlO1xuICBASW5wdXQoKSBjb2x1bW5zO1xuICBASW5wdXQoKSBkYXRhOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgY29tYm87XG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24gPSB7XG4gICAgYWRkOiBmYWxzZSxcbiAgICBlZGl0OiBmYWxzZSxcbiAgICBkZWxldGU6IGZhbHNlLFxuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgcHJpbnQ6IGZhbHNlLFxuICAgIGFkZFBlcjogZmFsc2UsXG4gICAgZWRpdFBlcjogZmFsc2UsXG4gICAgcHJpbWFyeUtleTogJ2lkJyxcbiAgICBleHBvcnRYc2x4OiBmYWxzZSxcbiAgICBoaWRlVGl0bGU6IHRydWUsXG4gICAgaGlkZUZpbHRlcjogdHJ1ZSxcbiAgICBub3RJbml0aWFsaXplOiBmYWxzZSxcbiAgICBleHBvcnRYc2x4QnlSb3c6IGZhbHNlLFxuICAgIGV4cG9ydFhzbHhXaXRoUGFnZXM6IGZhbHNlLFxuICAgIHZpZXc6IGZhbHNlLFxuICAgIGNsb3NlT3JkZXI6IGZhbHNlLFxuICAgIHBhY2tPZmY6IGZhbHNlLFxuICAgIGFkdmFuY2U6IHRydWUsXG4gICAgYWR2YW5jZUxhYmVsOiBudWxsLFxuICAgIGluY29tZTogZmFsc2UsXG4gICAgZXhpdDogZmFsc2UsXG4gICAgc2VuZEVtYWlsOiBmYWxzZSxcbiAgICBhZGRDb21tZW50OiBmYWxzZSxcbiAgfTtcblxuICBASW5wdXQoKSByZWxvYWRUYWJsZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICBASW5wdXQoKSBwYXJhbXM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHRpdGxlTG9hZGluZzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1lc3NhZ2VMb2FkaW5nOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGVhZGVyRmlsZVhsc206IEFycmF5PGFueT4gPSBbXTtcbiAgQElucHV0KCkgaGVhZGVyRmlsdGVyczogQXJyYXk8YW55PiA9IFtdO1xuICBASW5wdXQoKSB4c2x4VGl0bGVGaWVsZHM6IHN0cmluZ1tdO1xuICBASW5wdXQoKSB4c2x4U2hlZXROYW1lRmllbGRzOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgeHNseEJvZHlGaWVsZHM6IHN0cmluZztcbiAgQElucHV0KCkgeHNseFBhcmFtczogQXJyYXk8YW55PiA9IG51bGw7XG4gIEBJbnB1dCgpIHJvbGVJZDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbW9kdWxlSWQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHN1Yk1vZHVsZUlkOiBudW1iZXIgPSAwO1xuXG5cbiAgcHJpdmF0ZSBoYXNBY2Nlc3NUb0FsbCA9IHRydWU7XG4gIHByaXZhdGUgcm9sZXNBbmRQZXJtaXNzaW9uVXNlcjogSVBlcm1pc3Npb25zID0ge30gYXMgSVBlcm1pc3Npb25zO1xuXG4gIEBPdXRwdXQoKSBjbGlja1JvdyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWRkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHByaW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBleHBvcnRYc2x4QnlSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFjdGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNsb3NlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhY2tPZmYgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFkdmFuY2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGluY29tZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZXhpdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW50ZXJuYWxEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZW5kRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFkZENvbW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgXG4gIEBPdXRwdXQoKSBmaWxlSWNvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIG1vdmlsID0gU2NyZWVuU2l6ZVV0aWwuaXNNb2JpbGUoKTtcbiAgZmlsdGVyc1Bvc3Q6IEFycmF5PGFueT4gPSBbXTtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuXG4gIHNlbGVjdGVkUm93cyA9IFtdOyAvKiogYWxtYWNlbmEgbGFzIGZpbGFzIHNlbGVjY2lvbmFkYXMgKi9cbiAgY2hlY2tib3hzID0ge307XG4gIHNlbGVjdEFsbCA9IGZhbHNlO1xuICBpbmRldGVybWluYXRlU3RhdGUgPSBmYWxzZTtcbiAgZmlsdGVycztcbiAgb3JpZ2luYWxEYXRhID0gW107XG4gIHBhZ2luYXRvckFjdGl2ZSA9IHRydWU7XG4gIHNjcmVlbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgaWRfY29tcGFuaWE7XG5cbiAgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFs1LCAxMCwgMjUsIDUwLCAxMDBdO1xuXG4gIHBhZ2VTaXplID0gc2NyZWVuLndpZHRoID4gNTAwID8gMTAgOiA1O1xuICBsZW5ndGggPSAwO1xuXG4gIHBhZ2UgPSAwO1xuXG4gIGFib3ZlOiBUb29sdGlwUG9zaXRpb25bXSA9IFsnYWJvdmUnXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZnVuY3Rpb25FdGVyOiBGdW5jdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFnaW5hdG9yVHJhbnNsYXRlOiBNYXRQYWdpbmF0b3JJbnRsLFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0RGF0YVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuaXRlbXNQZXJQYWdlTGFiZWwgPSAnRWxlbWVudG9zIHBvciBww6FnaW5hJztcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5uZXh0UGFnZUxhYmVsID0gJ1NpZ3VpZW50ZSBww6FnaW5hJztcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5sYXN0UGFnZUxhYmVsID0gJ8OabHRpbWEgcMOhZ2luYSc7XG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUucHJldmlvdXNQYWdlTGFiZWwgPSAnUMOhZ2luYSBhbnRlcmlvcic7XG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuZmlyc3RQYWdlTGFiZWwgPSAnUHJpbWVyYSBww6FnaW5hJztcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5nZXRSYW5nZUxhYmVsID0gc3BhbmlzaFJhbmdlTGFiZWw7XG4gIH1cblxuICBidXR0b25zQ29uZmlnID0gW1xuICBdO1xuXG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52YWxpZGF0ZVJvbEFuZFBlcm1pc3Npb24oKVxuICAgIGlmICh3aW5kb3cuc2NyZWVuLndpZHRoID4gMTAwMCkge1xuICAgICAgdGhpcy5zY3JlZW4gPSB0cnVlO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgICAgd2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDBcbiAgICAgICAgICA/ICh0aGlzLnNjcmVlbiA9IHRydWUpXG4gICAgICAgICAgOiAodGhpcy5zY3JlZW4gPSBmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zY3JlZW4gPSBmYWxzZTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5zY3JlZW4ud2lkdGggPiAxMDAwXG4gICAgICAgICAgPyAodGhpcy5zY3JlZW4gPSB0cnVlKVxuICAgICAgICAgIDogKHRoaXMuc2NyZWVuID0gZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVsb2FkVGFibGUpIHtcbiAgICAgIHRoaXMucmVsb2FkVGFibGUuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5vcmlnaW5hbERhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxldGVjQWxsRXZlbnQoJycpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy50aXRsZUxvYWRpbmcgPT0gJycgPyAodGhpcy50aXRsZUxvYWRpbmcgPSAnQ2FyZ2FuZG8nKSA6ICcnO1xuICAgIHRoaXMubWVzc2FnZUxvYWRpbmcgPT0gJydcbiAgICAgID8gKHRoaXMubWVzc2FnZUxvYWRpbmcgPSAnT2J0ZW5pZW5kbyBkYXRvcy4uLicpXG4gICAgICA6ICcnO1xuICAgIHRoaXMudXJsICYmICF0aGlzLmNvbmZpZ3VyYXRpb24ubm90SW5pdGlhbGl6ZVxuICAgICAgPyB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcodGhpcy50aXRsZUxvYWRpbmcsIHRoaXMubWVzc2FnZUxvYWRpbmcpXG4gICAgICA6ICcnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnVybCAmJiAhdGhpcy5jb25maWd1cmF0aW9uLm5vdEluaXRpYWxpemUpIHtcbiAgICAgICAgbGV0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldERhdGVUYWJsZUJ5VXJsKCk7XG4gICAgICAgIHRoaXMuZGF0YSA9IHNlcnZpY2VbJ2RhdGEnXTtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBzZXJ2aWNlWydjb3VudCddO1xuXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrYm94c1tyb3dbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXSA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmludGVybmFsRGF0YS5lbWl0KHNlcnZpY2UpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKCk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgICB0aGlzLnZhbGlkYXRlUnVsZXMoKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXJsKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdG9yQWN0aXZlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVJvbEFuZFBlcm1pc3Npb24oKSB7XG4gICAgaWYgKHRoaXMucm9sZUlkICE9IDApIHtcbiAgICAgIGxldCByb2xlUGVybWlzc2lvbnMgPSByb2xlc0FuZFBlcm1pc3Npb25zPy5maW5kKHggPT4geC5pZCA9PSB0aGlzLnJvbGVJZClcbiAgICAgIHRoaXMuaGFzQWNjZXNzVG9BbGwgPSByb2xlUGVybWlzc2lvbnM/Lmhhc0FjY2Vzc1RvQWxsID8/IHJvbGVQZXJtaXNzaW9ucy5tb2R1bGVzPy5maW5kKHggPT4geC5pZCA9PSB0aGlzLm1vZHVsZUlkKT8uaGFzQWNjZXNzVG9BbGwgPz8gZmFsc2U7XG4gICAgfTtcblxuICAgIHRoaXMucm9sZXNBbmRQZXJtaXNzaW9uVXNlciA9IHJvbGVzQW5kUGVybWlzc2lvbnM/LmZpbmQoeCA9PiB4LmlkID09IHRoaXMucm9sZUlkKT8ubW9kdWxlcz8uZmluZCh4ID0+IHguaWQgPT0gdGhpcy5tb2R1bGVJZCk/LnN1Yk1vZHVsZXM/LmZpbmQoeCA9PiB4LmlkID09IHRoaXMuc3ViTW9kdWxlSWQpPy5wZXJtaXNzaW9ucyA/PyB7fSBhcyBJUGVybWlzc2lvbnM7XG4gICAgaWYgKCF0aGlzLmhhc0FjY2Vzc1RvQWxsICYmICF0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIucmVhZEFsbCAmJiB0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIucmVhZE93biA9PSB0cnVlKSB7XG4gICAgICB0aGlzLnBhcmFtcyA9IFsuLi50aGlzLnBhcmFtcywgeyBpZDogJ3JlYWRPd24nLCB2YWx1ZTogdHJ1ZSB9XTtcbiAgICB9XG4gICAgdGhpcy5jb25maWd1cmVCdXR0b25zKClcbiAgfVxuXG4gIGNvbmZpZ3VyZUJ1dHRvbnMoKSB7XG4gICAgdGhpcy5idXR0b25zQ29uZmlnID0gW1xuICAgICAge1xuICAgICAgICBhY3Rpb246ICdlZGl0JyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdCAmJlxuICAgICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbigndXBkYXRlJyksXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmVkaXQgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCd1cGRhdGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWVkaXQnLFxuICAgICAgICB0b29sdGlwOiAnRWRpdGFyJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ3ByaW50JyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24ucHJpbnQgJiZcbiAgICAgICAgICB0aGlzLnNjcmVlbiAmJlxuICAgICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbigncHJpbnQnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24ucHJpbnQgJiYgdGhpcy5zY3JlZW4gJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdwcmludCcpLFxuICAgICAgICBpY29uOiAnZmEtcHJpbnQnLFxuICAgICAgICB0b29sdGlwOiAnSW1wcmltaXInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAnYWN0aXZlJyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPiAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5hY3RpdmUgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdhY3RpdmF0ZUFuZEluYWN0aXZhdGUnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWN0aXZhdGVBbmRJbmFjdGl2YXRlJyksXG4gICAgICAgIGljb246ICdmYS1hZGp1c3QnLFxuICAgICAgICB0b29sdGlwOiAnQWN0aXZhci9EZXNhY3RpdmFyJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2FkZCcsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5hZGQgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCd3cml0ZScpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IGZhbHNlLFxuICAgICAgICBpY29uOiAnZmEtcGx1cy1jaXJjbGUnLFxuICAgICAgICB0b29sdGlwOiAnTnVldm8nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAnaW5jb21lJyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmluY29tZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3dyaXRlJyksXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gZmFsc2UsXG4gICAgICAgIGljb246ICdmYS11c2VyLXBsdXMnLFxuICAgICAgICB0b29sdGlwOiAnSW5ncmVzbycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdleGl0JyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmV4aXQgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCd3cml0ZScpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IGZhbHNlLFxuICAgICAgICBpY29uOiAnZmEtdXNlci10aW1lcycsXG4gICAgICAgIHRvb2x0aXA6ICdTYWxpZGEnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAndmlldycsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmIHRoaXMuY29uZmlndXJhdGlvbi52aWV3ICYmIHRoaXMuaGFzUGVybWlzc2lvbigncmVhZERldGFpbCcpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi52aWV3ICYmIHRoaXMuaGFzUGVybWlzc2lvbigncmVhZERldGFpbCcpLFxuICAgICAgICBpY29uOiAnZmEtZXllJyxcbiAgICAgICAgdG9vbHRpcDogJ1ZlciBkZXRhbGxlJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2Nsb3NlT3JkZXInLFxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxuICAgICAgICAgICh0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLmNsb3NlT3JkZXIpICYmIHRoaXMuaGFzUGVybWlzc2lvbignY2xvc2VPVCcpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5jbG9zZU9yZGVyICYmIHRoaXMuaGFzUGVybWlzc2lvbignY2xvc2VPVCcpLFxuICAgICAgICBpY29uOiAnZmEtY2hlY2stY2lyY2xlJyxcbiAgICAgICAgdG9vbHRpcDogJ0NlcnJhciBvcmRlbicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdwYWNrT2ZmJyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLnBhY2tPZmYgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdhbGxvY2F0ZVJlc291cmNlcycpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5wYWNrT2ZmICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWxsb2NhdGVSZXNvdXJjZXMnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWNhcnQtYXJyb3ctZG93bicsXG4gICAgICAgIHRvb2x0aXA6ICdEZXNwYWNoYXIgcmVjdXJzb3MnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAnYWR2YW5jZScsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmIHRoaXMuY29uZmlndXJhdGlvbi5hZHZhbmNlICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWR2YW5jZScpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5hZHZhbmNlICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWR2YW5jZScpLFxuICAgICAgICBpY29uOiAnZmEtYXJyb3ctcmlnaHQnLFxuICAgICAgICB0b29sdGlwOiB0aGlzLmNvbmZpZ3VyYXRpb24uYWR2YW5jZUxhYmVsLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAnc2VuZEVtYWlsJyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VuZEVtYWlsICYmXG4gICAgICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uKCdzZW5kRW1haWwnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uc2VuZEVtYWlsICYmIHRoaXMuaGFzUGVybWlzc2lvbignc2VuZEVtYWlsJyksXG4gICAgICAgIGljb246ICdmYS1tYWlsLWJ1bGsnLFxuICAgICAgICB0b29sdGlwOiAnRW52aWEgY29ycmVvJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2V4cG9ydFRvRXhjZWwnLFxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgIHRoaXMuZGF0YS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgKHRoaXMuY29uZmlndXJhdGlvbi5leHBvcnRYc2x4IHx8IHRoaXMuY29uZmlndXJhdGlvbi5leHBvcnRYc2x4V2l0aFBhZ2VzKSAmJlxuICAgICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbignZXhwb3J0JyksXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gZmFsc2UsXG4gICAgICAgIGljb246ICdmYS1kb3dubG9hZCcsXG4gICAgICAgIHRvb2x0aXA6ICdFeHBvcnRhciBUYWJsYScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdleHBvcnRUb0V4Y2VsQnlSb3cnLFxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseEJ5Um93ICYmIHRoaXMuaGFzUGVybWlzc2lvbignZXhwb3J0JyksXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhCeVJvdyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2V4cG9ydCcpLFxuICAgICAgICBpY29uOiAnZmEtZG93bmxvYWQnLFxuICAgICAgICB0b29sdGlwOiAnRXhwb3J0YXIgUmVnaXN0cm8nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAnYWRkQ29tbWVudCcsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmFkZENvbW1lbnQgJiZcbiAgICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb24oJ2FkZENvbW1lbnQnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkQ29tbWVudCAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2FkZENvbW1lbnQnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWNvbW1lbnRzJyxcbiAgICAgICAgdG9vbHRpcDogJ0FncmVnYXIgQ29tZW50YXJpbycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdkZWxldGUnLFxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmRlbGV0ZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2RlbGV0ZScpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5kZWxldGUgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdkZWxldGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLXRyYXNoJyxcbiAgICAgICAgdG9vbHRpcDogJ0VsaW1pbmFyJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG5cbiAgaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oYXNBY2Nlc3NUb0FsbCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHRoaXMucm9sZXNBbmRQZXJtaXNzaW9uVXNlcj8uW3Blcm1pc3Npb25dID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZ2V0RGF0ZVRhYmxlQnlVcmwoKSB7XG4gICAgdGhpcy52YWxpZGFyUGFyYW1zKCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cC5wb3N0RGF0YUJvZHkoXG4gICAgICB0aGlzLnVybCxcbiAgICAgIHRoaXMuZmlsdGVyc1Bvc3QsXG4gICAgICB0aGlzLnBhcmFtc1xuICAgICk7XG4gIH1cblxuICB2YWxpZGFyUGFyYW1zKCkge1xuICAgIHRoaXMucGFyYW1zID0gdGhpcy5mdW5jdGlvbkV0ZXIucmVtb3ZlRHVwbGljYXRlT2JqZWN0cyh0aGlzLnBhcmFtcyk7XG4gICAgaWYgKHRoaXMucGFyYW1zKSB7XG4gICAgICBpZiAoIXRoaXMucGFyYW1zLmZpbmQoKHgpID0+IHguaWQgPT0gJ3BhZ2UnKSkge1xuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHsgaWQ6ICdwYWdlJywgdmFsdWU6ICcwJyB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wYXJhbXMuZmluZCgoeCkgPT4geC5pZCA9PSAncGVyX3BhZ2UnKSkge1xuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHsgaWQ6ICdwZXJfcGFnZScsIHZhbHVlOiB0aGlzLnBhZ2VTaXplIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKCh4KSA9PiB4LmlkID09ICdmaWx0ZXInKSkge1xuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHsgaWQ6ICdmaWx0ZXInLCB2YWx1ZTogJycgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGVSdWxlcygpIHtcbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgY29sdW1uc10gb2YgdGhpcy5jb2x1bW5zLmVudHJpZXMoKSkge1xuICAgICAgZm9yIChjb25zdCBbaW5kZXhEYXRhLCBlbGVtZW50XSBvZiB0aGlzLmRhdGEuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChjb2x1bW5zLnJ1bGVzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIGNvbHVtbnMucnVsZXMpIHtcbiAgICAgICAgICAgIGlmIChydWxlLnJ1bGUgPT0gZW51bVJ1bGVzWyc9PSddKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBlbGVtZW50W2NvbHVtbnMuSURdICYmXG4gICAgICAgICAgICAgICAgZWxlbWVudFtjb2x1bW5zLklEXS50b1N0cmluZygpID09IHJ1bGUudmFsdWVSdWxlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPSBydWxlLnZhbHVlQWN0aW9uO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gZWxlbWVudFtjb2x1bW5zLklEXTtcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnZmVjaGEnIHx8IGNvbHVtbnMudHlwZSA9PSAnZGF0ZScpXG4gICAgICAgICAgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPVxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbkV0ZXIuZGF0ZUlzbyhjb2x1bW5WYWx1ZSk7XG4gICAgICAgIGlmIChjb2x1bW5zLnR5cGUgPT0gJ2RhdGVXaXRoVGltZScpXG4gICAgICAgICAgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPSB0aGlzLmZ1bmN0aW9uRXRlci5kYXRlV2l0aFRpbWUoXG4gICAgICAgICAgICBjb2x1bW5WYWx1ZT8udG9TdHJpbmcoKSA/PyBjb2x1bW5WYWx1ZVxuICAgICAgICAgICk7XG4gICAgICAgIGlmIChjb2x1bW5zLnR5cGUgPT0gJ2N1cnJlbmN5JylcbiAgICAgICAgICB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9XG4gICAgICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZXMtQ08nKS5mb3JtYXQoY29sdW1uVmFsdWUpO1xuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdib29sZWFuJylcbiAgICAgICAgICB0aGlzLmRhdGFbaW5kZXhEYXRhXVtjb2x1bW5zLklEXSA9IGNvbHVtblZhbHVlID09IDEgPyAnU2knIDogJ05vJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xuICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLm9yaWdpbmFsRGF0YS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICE9IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxEYXRhLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudmFsaWRhdGVSdWxlcygpO1xuICAgIH1cblxuICB9XG5cbiAgZXZhbHVhdGVSdWxlcyh2YWx1ZTogYW55LCBydWxlczogYW55W10pOiBib29sZWFuIHtcbiAgICBpZiAoIXJ1bGVzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IGFjdGl2ZSA9IGZhbHNlO1xuICAgIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gW1xuICAgICAgICAnLnBuZycsICcuanBlZycsICcuanBnJywgJy5naWYnLCAnLmJtcCcsICcud2VicCcsICcuc3ZnJyxcbiAgICAgICAgJy5wZGYnLCAnLmRvYycsICcuZG9jeCcsICcueGxzJywgJy54bHN4JywgJy5kb2N1bWVudCdcbiAgICBdO1xuICAgIHJ1bGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgIGlmIChydWxlLmFjdGlvbiA9PT0gZW51bUFjdGlvbnMuU0hPV19GSUxFX0lDT04gJiYgdmFsdWUgJiYgdmFsdWUuaW5jbHVkZXMoJy9kb2NzLycpKSB7XG4gICAgICAgICAgICBjb25zdCBsb3dlclZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXh0IG9mIGFsbG93ZWRFeHRlbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvd2VyVmFsdWUuaW5jbHVkZXMoZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZlO1xufVxuXG4gIG9uRmlsZUljb25DbGljayhldmVudCwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZmlsZUljb25DbGljay5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGNsaWNrT25Sb1cocm93RGF0YSkge1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2hlY2tib3hzW3Jvd0RhdGFbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXTtcblxuICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuY2xlYXJDaGVja2JveGVzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb24ocm93RGF0YSwgeyBjaGVja2VkOiAhc3RhdGUgfSwgdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUpO1xuICAgIHRoaXMuY2xpY2tSb3cuZW1pdChyb3dEYXRhKTtcbiAgfVxuXG4gIHNob3dNZW51KCRldmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGFjdGlvbihhY3Rpb24sIHJvdyA9IG51bGwpIHtcbiAgICB2YXIgY3VycmVudFJvdyA9IHJvdyA/IFtyb3ddIDogdGhpcy5zZWxlY3RlZFJvd3M7XG5cbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5hZGRQZXIpIHtcbiAgICAgICAgICB0aGlzLmFkZC5lbWl0KHRoaXMubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgLm9wZW4oVGFibGVNb2RhbENvbXBvbmVudCwge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb2x1bW5zKSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHdpZHRoOiAnNjB2aCcsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQuZW1pdChyZXN1bHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdlZGl0JzpcbiAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5lZGl0UGVyKSB7XG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQoY3VycmVudFJvdyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGNvbHVtbnM6IGFueTtcbiAgICAgICAgICBjb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuXG4gICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50Um93WzBdKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbi5JRCA9PSBrZXkpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5zW2luZGV4XS52YWx1ZSA9IGN1cnJlbnRSb3dbMF1ba2V5XTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgLm9wZW4oVGFibGVNb2RhbENvbXBvbmVudCwge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb2x1bW5zKSksXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBjdXJyZW50Um93WzBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB3aWR0aDogJzYwdmgnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdC5lbWl0KHsgbmV3OiByZXN1bHQsIG9sZDogY3VycmVudFJvd1swXSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5kZWxldGUuZW1pdChjdXJyZW50Um93KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcmludCc6XG4gICAgICAgIHRoaXMucHJpbnQuZW1pdChjdXJyZW50Um93KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhY3RpdmUnOlxuICAgICAgICB0aGlzLmFjdGl2ZS5lbWl0KGN1cnJlbnRSb3cpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4cG9ydFRvRXhjZWwnOlxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdleHBvcnRUb0V4Y2VsQnlSb3cnOlxuICAgICAgICB0aGlzLmV4cG9ydFhzbHhCeVJvdy5lbWl0KGN1cnJlbnRSb3cpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3ZpZXcnOlxuICAgICAgICB0aGlzLnZpZXcuZW1pdChjdXJyZW50Um93KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbG9zZU9yZGVyJzpcbiAgICAgICAgdGhpcy5jbG9zZU9yZGVyLmVtaXQoY3VycmVudFJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncGFja09mZic6XG4gICAgICAgIHRoaXMucGFja09mZi5lbWl0KGN1cnJlbnRSb3cpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FkdmFuY2UnOlxuICAgICAgICB0aGlzLmFkdmFuY2UuZW1pdChjdXJyZW50Um93KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbmNvbWUnOlxuICAgICAgICB0aGlzLmluY29tZS5lbWl0KHRoaXMubGVuZ3RoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdleGl0JzpcbiAgICAgICAgdGhpcy5leGl0LmVtaXQodGhpcy5sZW5ndGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbmRFbWFpbCc6XG4gICAgICAgIHRoaXMuc2VuZEVtYWlsLmVtaXQoY3VycmVudFJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWRkQ29tbWVudCc6XG4gICAgICAgIHRoaXMuYWRkQ29tbWVudC5lbWl0KGN1cnJlbnRSb3cpO1xuICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNob3VsZFNob3dNZW51KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvbnNDb25maWcuc29tZSgoYnRuKSA9PiBidG4uY29uZGl0aW9uKCkpO1xuICB9XG5cbiAgZXhwb3J0VG9FeGNlbCgpIHtcbiAgICBsZXQgcGFyYW1zID0gW107XG4gICAgaWYgKHRoaXMudXJsICYmIHRoaXMucGFyYW1zKSB7XG4gICAgICBwYXJhbXMgPSBbLi4udGhpcy5wYXJhbXNdO1xuXG4gICAgICBpZiAodGhpcy54c2x4UGFyYW1zKSB7XG4gICAgICAgIHBhcmFtcyA9IFsuLi5wYXJhbXMsIC4uLnRoaXMueHNseFBhcmFtc107XG4gICAgICB9XG4gICAgICBsZXQgaSA9IHBhcmFtcy5maW5kSW5kZXgoKHgpID0+IHguaWQgPT0gJ3Blcl9wYWdlJyk7XG4gICAgICBpZiAoaSAhPSAtMSkgcGFyYW1zW2ldLnZhbHVlID0gMTAwMDAwMDAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseFdpdGhQYWdlcykge1xuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmdlbmVyYXRlRXhjZWxXaXRoU2hlZXRzPGFueT4oXG4gICAgICAgIHRoaXMudGl0bGUsXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsZVhsc20sXG4gICAgICAgIHRoaXMudGl0bGUsXG4gICAgICAgIHRoaXMudXJsID8gbnVsbCA6IHRoaXMuZGF0YSxcbiAgICAgICAgdGhpcy51cmwsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgdGhpcy5maWx0ZXJzUG9zdCxcbiAgICAgICAgdGhpcy54c2x4VGl0bGVGaWVsZHMsXG4gICAgICAgIHRoaXMueHNseFNoZWV0TmFtZUZpZWxkcyxcbiAgICAgICAgdGhpcy54c2x4Qm9keUZpZWxkc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmdlbmVyYXRlVG9YbHN4PGFueT4oXG4gICAgICAgIHRoaXMudGl0bGUsXG4gICAgICAgIHRoaXMuaGVhZGVyRmlsZVhsc20sXG4gICAgICAgIHRoaXMudGl0bGUsXG4gICAgICAgIHRoaXMudXJsID8gbnVsbCA6IHRoaXMuZGF0YSxcbiAgICAgICAgdGhpcy51cmwsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgdGhpcy5maWx0ZXJzUG9zdFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3Rpb24ocm93LCAkZXZlbnQsIGVtaXRFdmVudCA9IHRydWUpIHtcbiAgICB0aGlzLmNoZWNrYm94c1tyb3dbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXSA9ICRldmVudC5jaGVja2VkO1xuICAgIGlmICgkZXZlbnQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MucHVzaChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkUm93cy5pbmRleE9mKHJvdyk7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0YWJsZSAmJiBlbWl0RXZlbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PSB0aGlzLmRhdGEubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoIDwgdGhpcy5kYXRhLmxlbmd0aFxuICAgICkge1xuICAgICAgdGhpcy5pbmRldGVybWluYXRlU3RhdGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsaWNrZWQoJGV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBhc3luYyBzZWxldGVjQWxsRXZlbnQoJGV2ZW50KSB7XG4gICAgdGhpcy5pbmRldGVybWluYXRlU3RhdGUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNlbGVjdEFsbCkge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jaGVja2JveHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrYm94c1trZXldID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xuICAgICAgbGV0IGRhdGEgPSB0aGlzLmRhdGE7XG4gICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MucHVzaChlbGVtZW50KTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyQ2hlY2tib3hlcygpO1xuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICB9XG5cbiAgICBsZXQgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0RGF0ZVRhYmxlQnlVcmwoKTtcbiAgICB0aGlzLmRhdGEgPSBzZXJ2aWNlWydkYXRhJ107XG4gICAgdGhpcy5pbnRlcm5hbERhdGEuZW1pdChzZXJ2aWNlKTtcbiAgICB0aGlzLmxlbmd0aCA9IHNlcnZpY2VbJ2NvdW50J107XG4gICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XG4gIH1cblxuICBjbGVhckNoZWNrYm94ZXMoKSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5jaGVja2JveHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgdGhpcy5jaGVja2JveHNba2V5XSA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTtcbiAgfVxuXG4gIGNoYW5nZUZpbHRlcnMoKSB7XG4gICAgaWYgKHRoaXMucGFyYW1zKVxuICAgICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5pZCA9PSAnZmlsdGVyJykge1xuICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLmZpbHRlcnM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhcHBseUZpbHRlcnMoJGV2ZW50PzogYW55KSB7XG4gICAgaWYgKCRldmVudCkgdGhpcy5maWx0ZXJzUG9zdCA9ICRldmVudDtcbiAgICBpZiAodGhpcy51cmwpIHtcbiAgICAgIGxldCByZXM6IGFueSA9IGF3YWl0IHRoaXMuZ2V0RGF0ZVRhYmxlQnlVcmwoKTtcbiAgICAgIHRoaXMuZGF0YSA9IHJlc1snZGF0YSddO1xuICAgICAgdGhpcy52YWxpZGF0ZVJ1bGVzKCk7XG4gICAgICB0aGlzLmxlbmd0aCA9IHJlc1snY291bnQnXTtcbiAgICAgIHRoaXMuaW50ZXJuYWxEYXRhLmVtaXQocmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5vcmlnaW5hbERhdGEuZmlsdGVyKChkYXRhKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhkYXRhKSkge1xuICAgICAgICAgIGxldCByZXN1bHQgPSBkYXRhW2tleV1cbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuZmlsdGVycy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVBhZ2UoJGV2ZW50KSB7XG4gICAgdGhpcy5wYXJhbXMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlkID09ICdwZXJfcGFnZScpIHtcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9ICRldmVudC5wYWdlU2l6ZTtcbiAgICAgIH1cbiAgICAgIGlmIChlbGVtZW50LmlkID09ICdwYWdlJykge1xuICAgICAgICBlbGVtZW50LnZhbHVlID0gJGV2ZW50LnBhZ2VJbmRleDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICB9XG59XG5cbmVudW0gZW51bVJ1bGVzIHtcbiAgJz4nLFxuICAnPCcsXG4gICc9PScsXG4gICchPScsXG59XG5cbmVudW0gZW51bUFjdGlvbnMge1xuICBSRVBMQUNFLFxuICBBREQsXG4gIFJFTU9WRSxcbiAgU0hPV19GSUxFX0lDT05cbn0iLCI8ZGl2IGNsYXNzPVwiY29udGVuZWRvci10YWJsYVwiPlxuICA8YXBwLWZpbHRlcnMgW2hlYWRlckZpbHRlcnNdPVwiaGVhZGVyRmlsdGVyc1wiIChhcHBseUZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj5cbiAgPC9hcHAtZmlsdGVycz5cblxuICA8ZGl2IHN0eWxlPSdkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47ICBhbGlnbi1pdGVtczogY2VudGVyOyc+XG4gICAgPGRpdiBzdHlsZT0nZmxleDoxOyBmb250LXNpemU6IDFyZW07Jz5cbiAgICAgIDxzdHJvbmc+PHAgc3R5bGU9J21hcmdpbjowJyAqbmdJZj0nc2VsZWN0ZWRSb3dzLmxlbmd0aD4wICYmIHNlbGVjdGVkUm93cy5sZW5ndGg8MiAmJiBjb25maWd1cmF0aW9uLnNlbGVjdGFibGUnPiB7e3NlbGVjdGVkUm93cy5sZW5ndGh9fSBTZWxlY2Npb25hZG8gPC9wPjwvc3Ryb25nPlxuICAgICAgPHN0cm9uZz48cCBzdHlsZT0nbWFyZ2luOjAnICpuZ0lmPSdzZWxlY3RlZFJvd3MubGVuZ3RoPjEnPiB7e3NlbGVjdGVkUm93cy5sZW5ndGh9fSBTZWxlY2Npb25hZG9zIDwvcD48L3N0cm9uZz5cbiAgICAgIDxzdHJvbmc+PHAgc3R5bGU9J21hcmdpbjowJyAqbmdJZj0nc2VsZWN0ZWRSb3dzLmxlbmd0aDwxICYmICFjb25maWd1cmF0aW9uLmhpZGVUaXRsZSc+IHt7dGl0bGV9fSA8L3A+PC9zdHJvbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWNvbmZpZ3VyYXRpb24uaGlkZUZpbHRlclwiIHN0eWxlPSdmbGV4OjM7IHBhZGRpbmctcmlnaHQ6IDEwcHg7IG1hcmdpbi1ib3R0b206IDVweDsnPlxuICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz0nZmlsdGVyJz5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09J2ZpbHRlcnMnIChrZXl1cCk9J2NoYW5nZUZpbHRlcnMoKScgIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiRmlsdHJhclwiPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zVGFibGVcIj48L25nLWNvbnRhaW5lcj5cblxuICA8L2Rpdj5cblxuIDx0YWJsZSBjbGFzcz1cInRhYmxlX0V0ZXIgdGFibGUtaG92ZXJcIj5cbiAgICAgPHRoZWFkIGNsYXNzPVwiZGFya1wiPlxuICAgICAgIDx0ciA+XG4gICAgICAgIDx0aCAqbmdJZj0nY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlJyBzdHlsZT0nanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Jz5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IGNvbG9yPSdwcmltYXJ5JyAoY2hhbmdlKT0nc2VsZXRlY0FsbEV2ZW50KCRldmVudCknIFsobmdNb2RlbCldPSdzZWxlY3RBbGwnIFtpbmRldGVybWluYXRlXT0naW5kZXRlcm1pbmF0ZVN0YXRlJz4gPC9tYXQtY2hlY2tib3g+ICA8L3RoPlxuICAgICAgIDx0aFxuICAgICAgIFtjbGFzc109XCJjb2x1bW4uc3R5bGU/Lm1vdmlsXCJcbiAgICAgICAqbmdGb3I9J2xldCBjb2x1bW4gb2YgY29sdW1ucycgc2NvcGU9XCJjb2xcIlxuICAgICAgIFtuZ1N0eWxlXT1cImNvbHVtbi5zdHlsZVwiXG4gICAgICAgPnt7Y29sdW1uLmxhYmVsfX08L3RoPlxuICAgICAgIDx0aCAqbmdJZj1cInNob3VsZFNob3dNZW51KClcIj48L3RoPlxuICAgICAgIDwvdHI+XG4gICAgIDwvdGhlYWQ+XG4gICAgIDx0Ym9keSBjbGFzcz0nbWF0LWVsZXZhdGlvbi16Myc+XG5cbiAgICAgICA8dHIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgKm5nRm9yPSdsZXQgcm93IG9mIGRhdGEnIChjbGljayk9J2NsaWNrT25Sb1cocm93KScgW2NsYXNzXT1cImNoZWNrYm94c1tyb3dbY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0/J3NlbGVjdGVkLXJvdyc6JydcIj5cbiAgICAgICAgPHRoICpuZ0lmPSdjb25maWd1cmF0aW9uLnNlbGVjdGFibGUnIHN0eWxlPSdqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsnPiA8bWF0LWNoZWNrYm94IGNvbG9yPSdwcmltYXJ5JyBbKG5nTW9kZWwpXT0nY2hlY2tib3hzW3Jvd1tjb25maWd1cmF0aW9uLnByaW1hcnlLZXldXScgKGNsaWNrKT0nY2xpY2tlZCgkZXZlbnQpJyAoY2hhbmdlKT0nc2VsZWN0aW9uKHJvdywgJGV2ZW50KSc+IDwvbWF0LWNoZWNrYm94PiAgPC90aD5cbiAgICAgICAgPHRoIFtjbGFzc109XCJjb2x1bW4uc3R5bGU/Lm1vdmlsXCIgW25nU3R5bGVdPVwiY29sdW1uLnN0eWxlXCIgc2NvcGU9XCJyb3dcIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdmaWxlJyB8fCAoY29sdW1uLnJ1bGVzICYmIGV2YWx1YXRlUnVsZXMocm93W2NvbHVtbi5JRF0sIGNvbHVtbi5ydWxlcykpOyBlbHNlIGRpc3BsYXlWYWx1ZVwiPlxuICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvbkZpbGVJY29uQ2xpY2soJGV2ZW50LCByb3dbY29sdW1uLklEXSlcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmlsZVwiIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXI7XCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc3BsYXlWYWx1ZT5cbiAgICAgICAgICAgICAge3sgcm93W2NvbHVtbi5JRF0gfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC90aD5cblxuICAgICAgICA8dGggKm5nSWY9XCJzaG91bGRTaG93TWVudSgpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgb3ZlcmZsb3c6IHZpc2libGU7XCI+XG4gICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dNZW51KCRldmVudClcIlxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgICBtYXRSaXBwbGVcbiAgICAgICAgICBjbGFzcz1cIm1lbnVfbW9yZV92ZXJ0XCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiRXhhbXBsZSBkZWxldGUgaWNvblwiXG4gICAgICAgICAgPm1vcmVfdmVydDwvbWF0LWljb24+XG5cbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidG4gb2YgYnV0dG9uc0NvbmZpZ1wiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImJ0bi5jb25kaXRpb24oKVwiIChjbGljayk9XCJhY3Rpb24oYnRuLmFjdGlvbiwgcm93KVwiIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCIgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEge3tidG4uaWNvbn19IGJ0bi1hY2Npb25cIiBzdHlsZT1cImZvbnQtc2l6ZToxMjAlOyBtYXJnaW4tcmlnaHQ6IDEwcHhcIj48L2k+XG4gICAgICAgICAgICAgICAge3tidG4udG9vbHRpcH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgPC90cj5cblxuXG4gICAgIDwvdGJvZHk+XG5cbiAgIDwvdGFibGU+XG5cbiAgIDxkaXYgKm5nSWY9J2xlbmd0aCA9PSAwICYmIGRhdGEubGVuZ3RoID09IDAnIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHg7XCI+IDxzdHJvbmc+Tm8gc2UgZW5jb250csOzIGluZm9ybWFjacOzbjwvc3Ryb25nPjwvZGl2PlxuXG4gICA8bWF0LXBhZ2luYXRvciAqbmdJZj1cInBhZ2luYXRvckFjdGl2ZVwiXG4gICBbbGVuZ3RoXT1cImxlbmd0aFwiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnNcbiAgIChwYWdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiPjwvbWF0LXBhZ2luYXRvcj5cblxuICA8L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zVGFibGUgbGV0LWZvbnRTaXplPVwiZm9udFNpemVcIiBsZXQtbWFyZ2luUmlnaHQ9XCJtYXJnaW5SaWdodFwiIHN0eWxlPSdmbGV4OjAuNTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyc+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ0biBvZiBidXR0b25zQ29uZmlnXCI+XG4gICAgPGRpdiAqbmdJZj1cImJ0bi5jb25kaXRpb25TaG93SGVhZGVyKClcIiAoY2xpY2spPVwiYWN0aW9uKGJ0bi5hY3Rpb24pXCIgbWF0VG9vbHRpcD1cInt7YnRuLnRvb2x0aXB9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIHt7YnRuLmljb259fSBidG4tYWNjaW9uXCIgW25nU3R5bGVdPVwieydmb250LXNpemUnOiBmb250U2l6ZSA/IGZvbnRTaXplIDogJzE3MCUnLCAnbWFyZ2luLXJpZ2h0JzogbWFyZ2luUmlnaHQgPyBtYXJnaW5SaWdodCA6ICcxNXB4J31cIj48L2k+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
|
|
732
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFFckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSzNELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUczRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDM0UsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7UUFDaEMsT0FBTyxRQUFRLE1BQU0sRUFBRSxDQUFDO0tBQ3pCO0lBRUQsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTdCLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUM7SUFFbkMsTUFBTSxRQUFRLEdBQ1osVUFBVSxHQUFHLE1BQU07UUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMs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TUFBTTtzQkFBZixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUlvQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O0FBOG5CM0MsSUFBSyxTQUtKO0FBTEQsV0FBSyxTQUFTO0lBQ1osbUNBQUcsQ0FBQTtJQUNILG1DQUFHLENBQUE7SUFDSCxxQ0FBSSxDQUFBO0lBQ0oscUNBQUksQ0FBQTtBQUNOLENBQUMsRUFMSSxTQUFTLEtBQVQsU0FBUyxRQUtiO0FBRUQsSUFBSyxXQUtKO0FBTEQsV0FBSyxXQUFXO0lBQ2QsbURBQU8sQ0FBQTtJQUNQLDJDQUFHLENBQUE7SUFDSCxpREFBTSxDQUFBO0lBQ04saUVBQWMsQ0FBQTtBQUNoQixDQUFDLEVBTEksV0FBVyxLQUFYLFdBQVcsUUFLZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjcmVlblNpemVVdGlsIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9zY3JlZW4tc2l6ZS11dGlsJztcbmltcG9ydCB7IEV4cG9ydERhdGFTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9leHBvcnQtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBUYWJsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYnJhaW5sb3Blci11aS9jb21wb25lbnRzL2RhdGEtdGFibGUvdGFibGUtbW9kYWwvdGFibGUtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBGdW5jdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZnVuY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9ySW50bCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IElQZXJtaXNzaW9ucywgbW9kdWxlc0J5Um9sIH0gZnJvbSAnQGVkZ2Fyem9uOTMvYnJhaW5sb3Blci1zaGFyZWQnO1xuXG5cbmNvbnN0IHNwYW5pc2hSYW5nZUxhYmVsID0gKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpID0+IHtcbiAgaWYgKGxlbmd0aCA9PSAwIHx8IHBhZ2VTaXplID09IDApIHtcbiAgICByZXR1cm4gYDAgZGUgJHtsZW5ndGh9YDtcbiAgfVxuXG4gIGxlbmd0aCA9IE1hdGgubWF4KGxlbmd0aCwgMCk7XG5cbiAgY29uc3Qgc3RhcnRJbmRleCA9IHBhZ2UgKiBwYWdlU2l6ZTtcblxuICBjb25zdCBlbmRJbmRleCA9XG4gICAgc3RhcnRJbmRleCA8IGxlbmd0aFxuICAgICAgPyBNYXRoLm1pbihzdGFydEluZGV4ICsgcGFnZVNpemUsIGxlbmd0aClcbiAgICAgIDogc3RhcnRJbmRleCArIHBhZ2VTaXplO1xuXG4gIHJldHVybiBgJHtzdGFydEluZGV4ICsgMX0gLSAke2VuZEluZGV4fSBkZSAke2xlbmd0aH1gO1xufTtcblxuY29uc3Qgcm9sZXNBbmRQZXJtaXNzaW9ucyA9IG1vZHVsZXNCeVJvbFxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHRpdGxlO1xuICBASW5wdXQoKSBjb2x1bW5zO1xuICBASW5wdXQoKSBkYXRhOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgY29tYm87XG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24gPSB7XG4gICAgYWRkOiBmYWxzZSxcbiAgICBlZGl0OiBmYWxzZSxcbiAgICBkZWxldGU6IGZhbHNlLFxuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgcHJpbnQ6IGZhbHNlLFxuICAgIGFkZFBlcjogZmFsc2UsXG4gICAgZWRpdFBlcjogZmFsc2UsXG4gICAgcHJpbWFyeUtleTogJ2lkJyxcbiAgICBleHBvcnRYc2x4OiBmYWxzZSxcbiAgICBoaWRlVGl0bGU6IHRydWUsXG4gICAgaGlkZUZpbHRlcjogdHJ1ZSxcbiAgICBub3RJbml0aWFsaXplOiBmYWxzZSxcbiAgICBleHBvcnRYc2x4QnlSb3c6IGZhbHNlLFxuICAgIGV4cG9ydFhzbHhXaXRoUGFnZXM6IGZhbHNlLFxuICAgIHZpZXc6IGZhbHNlLFxuICAgIGNsb3NlT3JkZXI6IGZhbHNlLFxuICAgIHBhY2tPZmY6IGZhbHNlLFxuICAgIGFkdmFuY2U6IHRydWUsXG4gICAgYWR2YW5jZUxhYmVsOiBudWxsLFxuICAgIGluY29tZTogZmFsc2UsXG4gICAgZXhpdDogZmFsc2UsXG4gICAgc2VuZEVtYWlsOiBmYWxzZSxcbiAgICBhZGRDb21tZW50OiBmYWxzZSxcbiAgfTtcblxuICBASW5wdXQoKSByZWxvYWRUYWJsZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICBASW5wdXQoKSBwYXJhbXM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHRpdGxlTG9hZGluZzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1lc3NhZ2VMb2FkaW5nOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGVhZGVyRmlsZVhsc206IEFycmF5PGFueT4gPSBbXTtcbiAgQElucHV0KCkgaGVhZGVyRmlsdGVyczogQXJyYXk8YW55PiA9IFtdO1xuICBASW5wdXQoKSB4c2x4VGl0bGVGaWVsZHM6IHN0cmluZ1tdO1xuICBASW5wdXQoKSB4c2x4U2hlZXROYW1lRmllbGRzOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgeHNseEJvZHlGaWVsZHM6IHN0cmluZztcbiAgQElucHV0KCkgeHNseFBhcmFtczogQXJyYXk8YW55PiA9IG51bGw7XG4gIEBJbnB1dCgpIHJvbGVJZDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbW9kdWxlSWQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHN1Yk1vZHVsZUlkOiBudW1iZXIgPSAwO1xuXG5cbiAgcHJpdmF0ZSBoYXNBY2Nlc3NUb0FsbCA9IHRydWU7XG4gIHByaXZhdGUgcm9sZXNBbmRQZXJtaXNzaW9uVXNlcjogSVBlcm1pc3Npb25zID0ge30gYXMgSVBlcm1pc3Npb25zO1xuXG4gIEBPdXRwdXQoKSBjbGlja1JvdyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWRkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHByaW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBleHBvcnRYc2x4QnlSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFjdGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNsb3NlT3JkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhY2tPZmYgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFkdmFuY2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGluY29tZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZXhpdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW50ZXJuYWxEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZW5kRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFkZENvbW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgXG4gIEBPdXRwdXQoKSBmaWxlSWNvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIG1vdmlsID0gU2NyZWVuU2l6ZVV0aWwuaXNNb2JpbGUoKTtcbiAgZmlsdGVyc1Bvc3Q6IEFycmF5PGFueT4gPSBbXTtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuXG4gIHNlbGVjdGVkUm93cyA9IFtdOyAvKiogYWxtYWNlbmEgbGFzIGZpbGFzIHNlbGVjY2lvbmFkYXMgKi9cbiAgY2hlY2tib3hzID0ge307XG4gIHNlbGVjdEFsbCA9IGZhbHNlO1xuICBpbmRldGVybWluYXRlU3RhdGUgPSBmYWxzZTtcbiAgZmlsdGVycztcbiAgb3JpZ2luYWxEYXRhID0gW107XG4gIHBhZ2luYXRvckFjdGl2ZSA9IHRydWU7XG4gIHNjcmVlbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgaWRfY29tcGFuaWE7XG5cbiAgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFs1LCAxMCwgMjUsIDUwLCAxMDBdO1xuXG4gIHBhZ2VTaXplID0gc2NyZWVuLndpZHRoID4gNTAwID8gMTAgOiA1O1xuICBsZW5ndGggPSAwO1xuXG4gIHBhZ2UgPSAwO1xuXG4gIGFib3ZlOiBUb29sdGlwUG9zaXRpb25bXSA9IFsnYWJvdmUnXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZnVuY3Rpb25FdGVyOiBGdW5jdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFnaW5hdG9yVHJhbnNsYXRlOiBNYXRQYWdpbmF0b3JJbnRsLFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0RGF0YVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuaXRlbXNQZXJQYWdlTGFiZWwgPSAnRWxlbWVudG9zIHBvciBww6FnaW5hJztcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5uZXh0UGFnZUxhYmVsID0gJ1NpZ3VpZW50ZSBww6FnaW5hJztcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5sYXN0UGFnZUxhYmVsID0gJ8OabHRpbWEgcMOhZ2luYSc7XG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUucHJldmlvdXNQYWdlTGFiZWwgPSAnUMOhZ2luYSBhbnRlcmlvcic7XG4gICAgdGhpcy5wYWdpbmF0b3JUcmFuc2xhdGUuZmlyc3RQYWdlTGFiZWwgPSAnUHJpbWVyYSBww6FnaW5hJztcbiAgICB0aGlzLnBhZ2luYXRvclRyYW5zbGF0ZS5nZXRSYW5nZUxhYmVsID0gc3BhbmlzaFJhbmdlTGFiZWw7XG4gIH1cblxuICBidXR0b25zQ29uZmlnID0gW1xuICBdO1xuXG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52YWxpZGF0ZVJvbEFuZFBlcm1pc3Npb24oKVxuICAgIGlmICh3aW5kb3cuc2NyZWVuLndpZHRoID4gMTAwMCkge1xuICAgICAgdGhpcy5zY3JlZW4gPSB0cnVlO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgICAgd2luZG93LnNjcmVlbi53aWR0aCA+IDEwMDBcbiAgICAgICAgICA/ICh0aGlzLnNjcmVlbiA9IHRydWUpXG4gICAgICAgICAgOiAodGhpcy5zY3JlZW4gPSBmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zY3JlZW4gPSBmYWxzZTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5zY3JlZW4ud2lkdGggPiAxMDAwXG4gICAgICAgICAgPyAodGhpcy5zY3JlZW4gPSB0cnVlKVxuICAgICAgICAgIDogKHRoaXMuc2NyZWVuID0gZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVsb2FkVGFibGUpIHtcbiAgICAgIHRoaXMucmVsb2FkVGFibGUuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5vcmlnaW5hbERhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxldGVjQWxsRXZlbnQoJycpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy50aXRsZUxvYWRpbmcgPT0gJycgPyAodGhpcy50aXRsZUxvYWRpbmcgPSAnQ2FyZ2FuZG8nKSA6ICcnO1xuICAgIHRoaXMubWVzc2FnZUxvYWRpbmcgPT0gJydcbiAgICAgID8gKHRoaXMubWVzc2FnZUxvYWRpbmcgPSAnT2J0ZW5pZW5kbyBkYXRvcy4uLicpXG4gICAgICA6ICcnO1xuICAgIHRoaXMudXJsICYmICF0aGlzLmNvbmZpZ3VyYXRpb24ubm90SW5pdGlhbGl6ZVxuICAgICAgPyB0aGlzLm1lc3NhZ2Uub3BlbkxvYWRpbmcodGhpcy50aXRsZUxvYWRpbmcsIHRoaXMubWVzc2FnZUxvYWRpbmcpXG4gICAgICA6ICcnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnVybCAmJiAhdGhpcy5jb25maWd1cmF0aW9uLm5vdEluaXRpYWxpemUpIHtcbiAgICAgICAgbGV0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldERhdGVUYWJsZUJ5VXJsKCk7XG4gICAgICAgIHRoaXMuZGF0YSA9IHNlcnZpY2VbJ2RhdGEnXTtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBzZXJ2aWNlWydjb3VudCddO1xuXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrYm94c1tyb3dbdGhpcy5jb25maWd1cmF0aW9uLnByaW1hcnlLZXldXSA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmludGVybmFsRGF0YS5lbWl0KHNlcnZpY2UpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UuY2xvc2VMb2FkaW5nKCk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgICB0aGlzLnZhbGlkYXRlUnVsZXMoKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXJsKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdG9yQWN0aXZlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVJvbEFuZFBlcm1pc3Npb24oKSB7XG4gICAgY29uc29sZS5sb2coJ3JvbCcsdGhpcy5yb2xlSWQsICdyb2xlc0FuZFBlcm1pc3Npb25zJywgcm9sZXNBbmRQZXJtaXNzaW9ucyk7XG4gICAgaWYgKHRoaXMucm9sZUlkICE9IDApIHtcbiAgICAgIGxldCByb2xlUGVybWlzc2lvbnMgPSByb2xlc0FuZFBlcm1pc3Npb25zPy5maW5kKHggPT4geC5pZCA9PSB0aGlzLnJvbGVJZClcbiAgICAgIHRoaXMuaGFzQWNjZXNzVG9BbGwgPSByb2xlUGVybWlzc2lvbnM/Lmhhc0FjY2Vzc1RvQWxsID8/IHJvbGVQZXJtaXNzaW9ucy5tb2R1bGVzPy5maW5kKHggPT4geC5pZCA9PSB0aGlzLm1vZHVsZUlkKT8uaGFzQWNjZXNzVG9BbGwgPz8gZmFsc2U7XG4gICAgfTtcblxuICAgIHRoaXMucm9sZXNBbmRQZXJtaXNzaW9uVXNlciA9IHJvbGVzQW5kUGVybWlzc2lvbnM/LmZpbmQoeCA9PiB4LmlkID09IHRoaXMucm9sZUlkKT8ubW9kdWxlcz8uZmluZCh4ID0+IHguaWQgPT0gdGhpcy5tb2R1bGVJZCk/LnN1Yk1vZHVsZXM/LmZpbmQoeCA9PiB4LmlkID09IHRoaXMuc3ViTW9kdWxlSWQpPy5wZXJtaXNzaW9ucyA/PyB7fSBhcyBJUGVybWlzc2lvbnM7XG5cbiAgICBjb25zb2xlLmxvZygncm9sZXNBbmRQZXJtaXNzaW9uc2J5VXNlcicsIHRoaXMucm9sZXNBbmRQZXJtaXNzaW9uVXNlcik7XG5cbiAgICBpZiAoIXRoaXMuaGFzQWNjZXNzVG9BbGwgJiYgIXRoaXMucm9sZXNBbmRQZXJtaXNzaW9uVXNlci5yZWFkQWxsICYmIHRoaXMucm9sZXNBbmRQZXJtaXNzaW9uVXNlci5yZWFkT3duID09IHRydWUpIHtcbiAgICAgIHRoaXMucGFyYW1zID0gWy4uLnRoaXMucGFyYW1zLCB7IGlkOiAncmVhZE93bicsIHZhbHVlOiB0cnVlIH1dO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlndXJlQnV0dG9ucygpXG4gIH1cblxuICBjb25maWd1cmVCdXR0b25zKCkge1xuICAgIHRoaXMuYnV0dG9uc0NvbmZpZyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAnZWRpdCcsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmVkaXQgJiZcbiAgICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb24oJ3VwZGF0ZScpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5lZGl0ICYmIHRoaXMuaGFzUGVybWlzc2lvbigndXBkYXRlJyksXG4gICAgICAgIGljb246ICdmYS1lZGl0JyxcbiAgICAgICAgdG9vbHRpcDogJ0VkaXRhcicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdwcmludCcsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnByaW50ICYmXG4gICAgICAgICAgdGhpcy5zY3JlZW4gJiZcbiAgICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb24oJ3ByaW50JyksXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLnByaW50ICYmIHRoaXMuc2NyZWVuICYmIHRoaXMuaGFzUGVybWlzc2lvbigncHJpbnQnKSxcbiAgICAgICAgaWNvbjogJ2ZhLXByaW50JyxcbiAgICAgICAgdG9vbHRpcDogJ0ltcHJpbWlyJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2FjdGl2ZScsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID4gMCAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWN0aXZhdGVBbmRJbmFjdGl2YXRlJyksXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2FjdGl2YXRlQW5kSW5hY3RpdmF0ZScpLFxuICAgICAgICBpY29uOiAnZmEtYWRqdXN0JyxcbiAgICAgICAgdG9vbHRpcDogJ0FjdGl2YXIvRGVzYWN0aXZhcicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdhZGQnLFxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkICYmIHRoaXMuaGFzUGVybWlzc2lvbignd3JpdGUnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgaWNvbjogJ2ZhLXBsdXMtY2lyY2xlJyxcbiAgICAgICAgdG9vbHRpcDogJ051ZXZvJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2luY29tZScsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5pbmNvbWUgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCd3cml0ZScpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IGZhbHNlLFxuICAgICAgICBpY29uOiAnZmEtdXNlci1wbHVzJyxcbiAgICAgICAgdG9vbHRpcDogJ0luZ3Jlc28nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAnZXhpdCcsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwICYmIHRoaXMuY29uZmlndXJhdGlvbi5leGl0ICYmIHRoaXMuaGFzUGVybWlzc2lvbignd3JpdGUnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgaWNvbjogJ2ZhLXVzZXItdGltZXMnLFxuICAgICAgICB0b29sdGlwOiAnU2FsaWRhJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ3ZpZXcnLFxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24udmlldyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3JlYWREZXRhaWwnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24udmlldyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3JlYWREZXRhaWwnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWV5ZScsXG4gICAgICAgIHRvb2x0aXA6ICdWZXIgZGV0YWxsZScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdjbG9zZU9yZGVyJyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICAodGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmIHRoaXMuY29uZmlndXJhdGlvbi5jbG9zZU9yZGVyKSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2Nsb3NlT1QnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uY2xvc2VPcmRlciAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2Nsb3NlT1QnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWNoZWNrLWNpcmNsZScsXG4gICAgICAgIHRvb2x0aXA6ICdDZXJyYXIgb3JkZW4nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAncGFja09mZicsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmIHRoaXMuY29uZmlndXJhdGlvbi5wYWNrT2ZmICYmIHRoaXMuaGFzUGVybWlzc2lvbignYWxsb2NhdGVSZXNvdXJjZXMnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24ucGFja09mZiAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2FsbG9jYXRlUmVzb3VyY2VzJyksXG4gICAgICAgIGljb246ICdmYS1jYXJ0LWFycm93LWRvd24nLFxuICAgICAgICB0b29sdGlwOiAnRGVzcGFjaGFyIHJlY3Vyc29zJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2FkdmFuY2UnLFxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ3VyYXRpb24uYWR2YW5jZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2FkdmFuY2UnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWR2YW5jZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2FkdmFuY2UnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWFycm93LXJpZ2h0JyxcbiAgICAgICAgdG9vbHRpcDogdGhpcy5jb25maWd1cmF0aW9uLmFkdmFuY2VMYWJlbCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ3NlbmRFbWFpbCcsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnNlbmRFbWFpbCAmJlxuICAgICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbignc2VuZEVtYWlsJyksXG4gICAgICAgIGNvbmRpdGlvbjogKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLnNlbmRFbWFpbCAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ3NlbmRFbWFpbCcpLFxuICAgICAgICBpY29uOiAnZmEtbWFpbC1idWxrJyxcbiAgICAgICAgdG9vbHRpcDogJ0VudmlhIGNvcnJlbycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdleHBvcnRUb0V4Y2VsJyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICB0aGlzLmRhdGEubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICh0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseCB8fCB0aGlzLmNvbmZpZ3VyYXRpb24uZXhwb3J0WHNseFdpdGhQYWdlcykgJiZcbiAgICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb24oJ2V4cG9ydCcpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IGZhbHNlLFxuICAgICAgICBpY29uOiAnZmEtZG93bmxvYWQnLFxuICAgICAgICB0b29sdGlwOiAnRXhwb3J0YXIgVGFibGEnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYWN0aW9uOiAnZXhwb3J0VG9FeGNlbEJ5Um93JyxcbiAgICAgICAgY29uZGl0aW9uU2hvd0hlYWRlcjogKCkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDEgJiYgdGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhCeVJvdyAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2V4cG9ydCcpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5leHBvcnRYc2x4QnlSb3cgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdleHBvcnQnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWRvd25sb2FkJyxcbiAgICAgICAgdG9vbHRpcDogJ0V4cG9ydGFyIFJlZ2lzdHJvJyxcbiAgICAgIH0sXG4gICAgICB7ICAgICAgICBcbiAgICAgICAgYWN0aW9uOiAnYWRkQ29tbWVudCcsXG4gICAgICAgIGNvbmRpdGlvblNob3dIZWFkZXI6ICgpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmFkZENvbW1lbnQgJiZcbiAgICAgICAgICB0aGlzLmhhc1Blcm1pc3Npb24oJ2FkZENvbW1lbnQnKSxcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkQ29tbWVudCAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2FkZENvbW1lbnQnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWNvbW1lbnRzJyxcbiAgICAgICAgdG9vbHRpcDogJ0FncmVnYXIgQ29tZW50YXJpbycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdkZWxldGUnLFxuICAgICAgICBjb25kaXRpb25TaG93SGVhZGVyOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5jb25maWd1cmF0aW9uLmRlbGV0ZSAmJiB0aGlzLmhhc1Blcm1pc3Npb24oJ2RlbGV0ZScpLFxuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5kZWxldGUgJiYgdGhpcy5oYXNQZXJtaXNzaW9uKCdkZWxldGUnKSxcbiAgICAgICAgaWNvbjogJ2ZhLXRyYXNoJyxcbiAgICAgICAgdG9vbHRpcDogJ0VsaW1pbmFyJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG5cbiAgaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZihwZXJtaXNzaW9uID09ICdhZGRDb21tZW50JykgY29uc29sZS5sb2coJ3JvbGVzQW5kUGVybWlzc2lvblVzZXJpbmhhc3Blcm1pc3Npb24nLCB0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXIpXG4gICAgaWYgKHRoaXMuaGFzQWNjZXNzVG9BbGwpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiB0aGlzLnJvbGVzQW5kUGVybWlzc2lvblVzZXI/LltwZXJtaXNzaW9uXSA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGdldERhdGVUYWJsZUJ5VXJsKCkge1xuICAgIHRoaXMudmFsaWRhclBhcmFtcygpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHAucG9zdERhdGFCb2R5KFxuICAgICAgdGhpcy51cmwsXG4gICAgICB0aGlzLmZpbHRlcnNQb3N0LFxuICAgICAgdGhpcy5wYXJhbXNcbiAgICApO1xuICB9XG5cbiAgdmFsaWRhclBhcmFtcygpIHtcbiAgICB0aGlzLnBhcmFtcyA9IHRoaXMuZnVuY3Rpb25FdGVyLnJlbW92ZUR1cGxpY2F0ZU9iamVjdHModGhpcy5wYXJhbXMpO1xuICAgIGlmICh0aGlzLnBhcmFtcykge1xuICAgICAgaWYgKCF0aGlzLnBhcmFtcy5maW5kKCh4KSA9PiB4LmlkID09ICdwYWdlJykpIHtcbiAgICAgICAgdGhpcy5wYXJhbXMucHVzaCh7IGlkOiAncGFnZScsIHZhbHVlOiAnMCcgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMucGFyYW1zLmZpbmQoKHgpID0+IHguaWQgPT0gJ3Blcl9wYWdlJykpIHtcbiAgICAgICAgdGhpcy5wYXJhbXMucHVzaCh7IGlkOiAncGVyX3BhZ2UnLCB2YWx1ZTogdGhpcy5wYWdlU2l6ZSB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wYXJhbXMuZmluZCgoeCkgPT4geC5pZCA9PSAnZmlsdGVyJykpIHtcbiAgICAgICAgdGhpcy5wYXJhbXMucHVzaCh7IGlkOiAnZmlsdGVyJywgdmFsdWU6ICcnIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlUnVsZXMoKSB7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGNvbHVtbnNdIG9mIHRoaXMuY29sdW1ucy5lbnRyaWVzKCkpIHtcbiAgICAgIGZvciAoY29uc3QgW2luZGV4RGF0YSwgZWxlbWVudF0gb2YgdGhpcy5kYXRhLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAoY29sdW1ucy5ydWxlcykge1xuICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBjb2x1bW5zLnJ1bGVzKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5ydWxlID09IGVudW1SdWxlc1snPT0nXSkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZWxlbWVudFtjb2x1bW5zLklEXSAmJlxuICAgICAgICAgICAgICAgIGVsZW1lbnRbY29sdW1ucy5JRF0udG9TdHJpbmcoKSA9PSBydWxlLnZhbHVlUnVsZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID0gcnVsZS52YWx1ZUFjdGlvbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZSA9IGVsZW1lbnRbY29sdW1ucy5JRF07XG4gICAgICAgIGlmIChjb2x1bW5zLnR5cGUgPT0gJ2ZlY2hhJyB8fCBjb2x1bW5zLnR5cGUgPT0gJ2RhdGUnKVxuICAgICAgICAgIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID1cbiAgICAgICAgICAgIHRoaXMuZnVuY3Rpb25FdGVyLmRhdGVJc28oY29sdW1uVmFsdWUpO1xuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdkYXRlV2l0aFRpbWUnKVxuICAgICAgICAgIHRoaXMuZGF0YVtpbmRleERhdGFdW2NvbHVtbnMuSURdID0gdGhpcy5mdW5jdGlvbkV0ZXIuZGF0ZVdpdGhUaW1lKFxuICAgICAgICAgICAgY29sdW1uVmFsdWU/LnRvU3RyaW5nKCkgPz8gY29sdW1uVmFsdWVcbiAgICAgICAgICApO1xuICAgICAgICBpZiAoY29sdW1ucy50eXBlID09ICdjdXJyZW5jeScpXG4gICAgICAgICAgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPVxuICAgICAgICAgICAgSW50bC5OdW1iZXJGb3JtYXQoJ2VzLUNPJykuZm9ybWF0KGNvbHVtblZhbHVlKTtcbiAgICAgICAgaWYgKGNvbHVtbnMudHlwZSA9PSAnYm9vbGVhbicpXG4gICAgICAgICAgdGhpcy5kYXRhW2luZGV4RGF0YV1bY29sdW1ucy5JRF0gPSBjb2x1bW5WYWx1ZSA9PSAxID8gJ1NpJyA6ICdObyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcbiAgICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tib3hzW3Jvd1t0aGlzLmNvbmZpZ3VyYXRpb24ucHJpbWFyeUtleV1dID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5vcmlnaW5hbERhdGEubGVuZ3RoID09IDApIHtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCAhPSAwKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YS5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnZhbGlkYXRlUnVsZXMoKTtcbiAgICB9XG5cbiAgfVxuXG4gIGV2YWx1YXRlUnVsZXModmFsdWU6IGFueSwgcnVsZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFydWxlcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBhY3RpdmUgPSBmYWxzZTtcbiAgICBjb25zdCBhbGxvd2VkRXh0ZW5zaW9ucyA9IFtcbiAgICAgICAgJy5wbmcnLCAnLmpwZWcnLCAnLmpwZycsICcuZ2lmJywgJy5ibXAnLCAnLndlYnAnLCAnLnN2ZycsXG4gICAgICAgICcucGRmJywgJy5kb2MnLCAnLmRvY3gnLCAnLnhscycsICcueGxzeCcsICcuZG9jdW1lbnQnXG4gICAgXTtcbiAgICBydWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgICBpZiAocnVsZS5hY3Rpb24gPT09IGVudW1BY3Rpb25zLlNIT1dfRklMRV9JQ09OICYmIHZhbHVlICYmIHZhbHVlLmluY2x1ZGVzKCcvZG9jcy8nKSkge1xuICAgICAgICAgICAgY29uc3QgbG93ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGV4dCBvZiBhbGxvd2VkRXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgICAgIGlmIChsb3dlclZhbHVlLmluY2x1ZGVzKGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGl2ZTtcbn1cblxuICBvbkZpbGVJY29uQ2xpY2soZXZlbnQsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmZpbGVJY29uQ2xpY2suZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBjbGlja09uUm9XKHJvd0RhdGEpIHtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNoZWNrYm94c1tyb3dEYXRhW3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV07XG5cbiAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLmNsZWFyQ2hlY2tib3hlcygpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uKHJvd0RhdGEsIHsgY2hlY2tlZDogIXN0YXRlIH0sIHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlKTtcbiAgICB0aGlzLmNsaWNrUm93LmVtaXQocm93RGF0YSk7XG4gIH1cblxuICBzaG93TWVudSgkZXZlbnQpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBhY3Rpb24oYWN0aW9uLCByb3cgPSBudWxsKSB7XG4gICAgdmFyIGN1cnJlbnRSb3cgPSByb3cgPyBbcm93XSA6IHRoaXMuc2VsZWN0ZWRSb3dzO1xuXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uYWRkUGVyKSB7XG4gICAgICAgICAgdGhpcy5hZGQuZW1pdCh0aGlzLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKFRhYmxlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1ucykpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB3aWR0aDogJzYwdmgnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkLmVtaXQocmVzdWx0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZWRpdCc6XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZWRpdFBlcikge1xuICAgICAgICAgIHRoaXMuZWRpdC5lbWl0KGN1cnJlbnRSb3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBjb2x1bW5zOiBhbnk7XG4gICAgICAgICAgY29sdW1ucyA9IHRoaXMuY29sdW1ucztcblxuICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoY3VycmVudFJvd1swXSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb2x1bW4uSUQgPT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgY29sdW1uc1tpbmRleF0udmFsdWUgPSBjdXJyZW50Um93WzBdW2tleV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5kaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKFRhYmxlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29sdW1ucykpLFxuICAgICAgICAgICAgICAgIHZhbHVlczogY3VycmVudFJvd1swXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MHZoJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXQuZW1pdCh7IG5ldzogcmVzdWx0LCBvbGQ6IGN1cnJlbnRSb3dbMF0gfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoY3VycmVudFJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncHJpbnQnOlxuICAgICAgICB0aGlzLnByaW50LmVtaXQoY3VycmVudFJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWN0aXZlJzpcbiAgICAgICAgdGhpcy5hY3RpdmUuZW1pdChjdXJyZW50Um93KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdleHBvcnRUb0V4Y2VsJzpcbiAgICAgICAgdGhpcy5leHBvcnRUb0V4Y2VsKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXhwb3J0VG9FeGNlbEJ5Um93JzpcbiAgICAgICAgdGhpcy5leHBvcnRYc2x4QnlSb3cuZW1pdChjdXJyZW50Um93KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2aWV3JzpcbiAgICAgICAgdGhpcy52aWV3LmVtaXQoY3VycmVudFJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2xvc2VPcmRlcic6XG4gICAgICAgIHRoaXMuY2xvc2VPcmRlci5lbWl0KGN1cnJlbnRSb3cpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BhY2tPZmYnOlxuICAgICAgICB0aGlzLnBhY2tPZmYuZW1pdChjdXJyZW50Um93KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhZHZhbmNlJzpcbiAgICAgICAgdGhpcy5hZHZhbmNlLmVtaXQoY3VycmVudFJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5jb21lJzpcbiAgICAgICAgdGhpcy5pbmNvbWUuZW1pdCh0aGlzLmxlbmd0aCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXhpdCc6XG4gICAgICAgIHRoaXMuZXhpdC5lbWl0KHRoaXMubGVuZ3RoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZW5kRW1haWwnOlxuICAgICAgICB0aGlzLnNlbmRFbWFpbC5lbWl0KGN1cnJlbnRSb3cpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FkZENvbW1lbnQnOlxuICAgICAgICB0aGlzLmFkZENvbW1lbnQuZW1pdChjdXJyZW50Um93KTtcbiAgICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzaG91bGRTaG93TWVudSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25zQ29uZmlnLnNvbWUoKGJ0bikgPT4gYnRuLmNvbmRpdGlvbigpKTtcbiAgfVxuXG4gIGV4cG9ydFRvRXhjZWwoKSB7XG4gICAgbGV0IHBhcmFtcyA9IFtdO1xuICAgIGlmICh0aGlzLnVybCAmJiB0aGlzLnBhcmFtcykge1xuICAgICAgcGFyYW1zID0gWy4uLnRoaXMucGFyYW1zXTtcblxuICAgICAgaWYgKHRoaXMueHNseFBhcmFtcykge1xuICAgICAgICBwYXJhbXMgPSBbLi4ucGFyYW1zLCAuLi50aGlzLnhzbHhQYXJhbXNdO1xuICAgICAgfVxuICAgICAgbGV0IGkgPSBwYXJhbXMuZmluZEluZGV4KCh4KSA9PiB4LmlkID09ICdwZXJfcGFnZScpO1xuICAgICAgaWYgKGkgIT0gLTEpIHBhcmFtc1tpXS52YWx1ZSA9IDEwMDAwMDAwMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmV4cG9ydFhzbHhXaXRoUGFnZXMpIHtcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZUV4Y2VsV2l0aFNoZWV0czxhbnk+KFxuICAgICAgICB0aGlzLnRpdGxlLFxuICAgICAgICB0aGlzLmhlYWRlckZpbGVYbHNtLFxuICAgICAgICB0aGlzLnRpdGxlLFxuICAgICAgICB0aGlzLnVybCA/IG51bGwgOiB0aGlzLmRhdGEsXG4gICAgICAgIHRoaXMudXJsLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHRoaXMuZmlsdGVyc1Bvc3QsXG4gICAgICAgIHRoaXMueHNseFRpdGxlRmllbGRzLFxuICAgICAgICB0aGlzLnhzbHhTaGVldE5hbWVGaWVsZHMsXG4gICAgICAgIHRoaXMueHNseEJvZHlGaWVsZHNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVRvWGxzeDxhbnk+KFxuICAgICAgICB0aGlzLnRpdGxlLFxuICAgICAgICB0aGlzLmhlYWRlckZpbGVYbHNtLFxuICAgICAgICB0aGlzLnRpdGxlLFxuICAgICAgICB0aGlzLnVybCA/IG51bGwgOiB0aGlzLmRhdGEsXG4gICAgICAgIHRoaXMudXJsLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHRoaXMuZmlsdGVyc1Bvc3RcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0aW9uKHJvdywgJGV2ZW50LCBlbWl0RXZlbnQgPSB0cnVlKSB7XG4gICAgdGhpcy5jaGVja2JveHNbcm93W3RoaXMuY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0gPSAkZXZlbnQuY2hlY2tlZDtcbiAgICBpZiAoJGV2ZW50LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd3MuaW5kZXhPZihyb3cpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdGFibGUgJiYgZW1pdEV2ZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT0gdGhpcy5kYXRhLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA8IHRoaXMuZGF0YS5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVN0YXRlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmRldGVybWluYXRlU3RhdGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjbGlja2VkKCRldmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgYXN5bmMgc2VsZXRlY0FsbEV2ZW50KCRldmVudCkge1xuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVN0YXRlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RBbGwpIHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuY2hlY2tib3hzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja2JveHNba2V5XSA9IHRydWU7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTtcbiAgICAgIGxldCBkYXRhID0gdGhpcy5kYXRhO1xuICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnB1c2goZWxlbWVudCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckNoZWNrYm94ZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XG4gICAgfVxuXG4gICAgbGV0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldERhdGVUYWJsZUJ5VXJsKCk7XG4gICAgdGhpcy5kYXRhID0gc2VydmljZVsnZGF0YSddO1xuICAgIHRoaXMuaW50ZXJuYWxEYXRhLmVtaXQoc2VydmljZSk7XG4gICAgdGhpcy5sZW5ndGggPSBzZXJ2aWNlWydjb3VudCddO1xuICAgIHRoaXMudmFsaWRhdGVSdWxlcygpO1xuICB9XG5cbiAgY2xlYXJDaGVja2JveGVzKCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuY2hlY2tib3hzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tib3hzW2tleV0gPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gW107XG4gIH1cblxuICBjaGFuZ2VGaWx0ZXJzKCkge1xuICAgIGlmICh0aGlzLnBhcmFtcylcbiAgICAgIHRoaXMucGFyYW1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gJ2ZpbHRlcicpIHtcbiAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy5maWx0ZXJzO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYXBwbHlGaWx0ZXJzKCRldmVudD86IGFueSkge1xuICAgIGlmICgkZXZlbnQpIHRoaXMuZmlsdGVyc1Bvc3QgPSAkZXZlbnQ7XG4gICAgaWYgKHRoaXMudXJsKSB7XG4gICAgICBsZXQgcmVzOiBhbnkgPSBhd2FpdCB0aGlzLmdldERhdGVUYWJsZUJ5VXJsKCk7XG4gICAgICB0aGlzLmRhdGEgPSByZXNbJ2RhdGEnXTtcbiAgICAgIHRoaXMudmFsaWRhdGVSdWxlcygpO1xuICAgICAgdGhpcy5sZW5ndGggPSByZXNbJ2NvdW50J107XG4gICAgICB0aGlzLmludGVybmFsRGF0YS5lbWl0KHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMub3JpZ2luYWxEYXRhLmZpbHRlcigoZGF0YSkgPT4ge1xuICAgICAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gZGF0YVtrZXldXG4gICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLmZpbHRlcnMudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VQYWdlKCRldmVudCkge1xuICAgIHRoaXMucGFyYW1zLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5pZCA9PSAncGVyX3BhZ2UnKSB7XG4gICAgICAgIGVsZW1lbnQudmFsdWUgPSAkZXZlbnQucGFnZVNpemU7XG4gICAgICB9XG4gICAgICBpZiAoZWxlbWVudC5pZCA9PSAncGFnZScpIHtcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9ICRldmVudC5wYWdlSW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxufVxuXG5lbnVtIGVudW1SdWxlcyB7XG4gICc+JyxcbiAgJzwnLFxuICAnPT0nLFxuICAnIT0nLFxufVxuXG5lbnVtIGVudW1BY3Rpb25zIHtcbiAgUkVQTEFDRSxcbiAgQURELFxuICBSRU1PVkUsXG4gIFNIT1dfRklMRV9JQ09OXG59IiwiPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItdGFibGFcIj5cbiAgPGFwcC1maWx0ZXJzIFtoZWFkZXJGaWx0ZXJzXT1cImhlYWRlckZpbHRlcnNcIiAoYXBwbHlGaWx0ZXJzKT1cImFwcGx5RmlsdGVycygkZXZlbnQpXCI+XG4gIDwvYXBwLWZpbHRlcnM+XG5cbiAgPGRpdiBzdHlsZT0nZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyAgYWxpZ24taXRlbXM6IGNlbnRlcjsnPlxuICAgIDxkaXYgc3R5bGU9J2ZsZXg6MTsgZm9udC1zaXplOiAxcmVtOyc+XG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg+MCAmJiBzZWxlY3RlZFJvd3MubGVuZ3RoPDIgJiYgY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlJz4ge3tzZWxlY3RlZFJvd3MubGVuZ3RofX0gU2VsZWNjaW9uYWRvIDwvcD48L3N0cm9uZz5cbiAgICAgIDxzdHJvbmc+PHAgc3R5bGU9J21hcmdpbjowJyAqbmdJZj0nc2VsZWN0ZWRSb3dzLmxlbmd0aD4xJz4ge3tzZWxlY3RlZFJvd3MubGVuZ3RofX0gU2VsZWNjaW9uYWRvcyA8L3A+PC9zdHJvbmc+XG4gICAgICA8c3Ryb25nPjxwIHN0eWxlPSdtYXJnaW46MCcgKm5nSWY9J3NlbGVjdGVkUm93cy5sZW5ndGg8MSAmJiAhY29uZmlndXJhdGlvbi5oaWRlVGl0bGUnPiB7e3RpdGxlfX0gPC9wPjwvc3Ryb25nPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFjb25maWd1cmF0aW9uLmhpZGVGaWx0ZXJcIiBzdHlsZT0nZmxleDozOyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBtYXJnaW4tYm90dG9tOiA1cHg7Jz5cbiAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9J2ZpbHRlcic+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPSdmaWx0ZXJzJyAoa2V5dXApPSdjaGFuZ2VGaWx0ZXJzKCknICBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIkZpbHRyYXJcIj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc1RhYmxlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgPC9kaXY+XG5cbiA8dGFibGUgY2xhc3M9XCJ0YWJsZV9FdGVyIHRhYmxlLWhvdmVyXCI+XG4gICAgIDx0aGVhZCBjbGFzcz1cImRhcmtcIj5cbiAgICAgICA8dHIgPlxuICAgICAgICA8dGggKm5nSWY9J2NvbmZpZ3VyYXRpb24uc2VsZWN0YWJsZScgc3R5bGU9J2p1c3RpZnktY29udGVudDogY2VudGVyOyc+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCBjb2xvcj0ncHJpbWFyeScgKGNoYW5nZSk9J3NlbGV0ZWNBbGxFdmVudCgkZXZlbnQpJyBbKG5nTW9kZWwpXT0nc2VsZWN0QWxsJyBbaW5kZXRlcm1pbmF0ZV09J2luZGV0ZXJtaW5hdGVTdGF0ZSc+IDwvbWF0LWNoZWNrYm94PiAgPC90aD5cbiAgICAgICA8dGhcbiAgICAgICBbY2xhc3NdPVwiY29sdW1uLnN0eWxlPy5tb3ZpbFwiXG4gICAgICAgKm5nRm9yPSdsZXQgY29sdW1uIG9mIGNvbHVtbnMnIHNjb3BlPVwiY29sXCJcbiAgICAgICBbbmdTdHlsZV09XCJjb2x1bW4uc3R5bGVcIlxuICAgICAgID57e2NvbHVtbi5sYWJlbH19PC90aD5cbiAgICAgICA8dGggKm5nSWY9XCJzaG91bGRTaG93TWVudSgpXCI+PC90aD5cbiAgICAgICA8L3RyPlxuICAgICA8L3RoZWFkPlxuICAgICA8dGJvZHkgY2xhc3M9J21hdC1lbGV2YXRpb24tejMnPlxuXG4gICAgICAgPHRyIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiICpuZ0Zvcj0nbGV0IHJvdyBvZiBkYXRhJyAoY2xpY2spPSdjbGlja09uUm9XKHJvdyknIFtjbGFzc109XCJjaGVja2JveHNbcm93W2NvbmZpZ3VyYXRpb24ucHJpbWFyeUtleV1dPydzZWxlY3RlZC1yb3cnOicnXCI+XG4gICAgICAgIDx0aCAqbmdJZj0nY29uZmlndXJhdGlvbi5zZWxlY3RhYmxlJyBzdHlsZT0nanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Jz4gPG1hdC1jaGVja2JveCBjb2xvcj0ncHJpbWFyeScgWyhuZ01vZGVsKV09J2NoZWNrYm94c1tyb3dbY29uZmlndXJhdGlvbi5wcmltYXJ5S2V5XV0nIChjbGljayk9J2NsaWNrZWQoJGV2ZW50KScgKGNoYW5nZSk9J3NlbGVjdGlvbihyb3csICRldmVudCknPiA8L21hdC1jaGVja2JveD4gIDwvdGg+XG4gICAgICAgIDx0aCBbY2xhc3NdPVwiY29sdW1uLnN0eWxlPy5tb3ZpbFwiIFtuZ1N0eWxlXT1cImNvbHVtbi5zdHlsZVwiIHNjb3BlPVwicm93XCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZmlsZScgfHwgKGNvbHVtbi5ydWxlcyAmJiBldmFsdWF0ZVJ1bGVzKHJvd1tjb2x1bW4uSURdLCBjb2x1bW4ucnVsZXMpKTsgZWxzZSBkaXNwbGF5VmFsdWVcIj5cbiAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25GaWxlSWNvbkNsaWNrKCRldmVudCwgcm93W2NvbHVtbi5JRF0pXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGVcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyO1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5VmFsdWU+XG4gICAgICAgICAgICAgIHt7IHJvd1tjb2x1bW4uSURdIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoICpuZ0lmPVwic2hvdWxkU2hvd01lbnUoKVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG92ZXJmbG93OiB2aXNpYmxlO1wiPlxuICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgIChjbGljayk9XCJzaG93TWVudSgkZXZlbnQpXCJcbiAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgbWF0UmlwcGxlXG4gICAgICAgICAgY2xhc3M9XCJtZW51X21vcmVfdmVydFwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkV4YW1wbGUgZGVsZXRlIGljb25cIlxuICAgICAgICAgID5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnNDb25maWdcIiA+XG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJidG4uY29uZGl0aW9uKClcIiAoY2xpY2spPVwiYWN0aW9uKGJ0bi5hY3Rpb24sIHJvdylcIiBtYXQtbWVudS1pdGVtIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIHt7YnRuLmljb259fSBidG4tYWNjaW9uXCIgc3R5bGU9XCJmb250LXNpemU6MTIwJTsgbWFyZ2luLXJpZ2h0OiAxMHB4XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7YnRuLnRvb2x0aXB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC90aD5cblxuICAgICAgIDwvdHI+XG5cblxuICAgICA8L3Rib2R5PlxuXG4gICA8L3RhYmxlPlxuXG4gICA8ZGl2ICpuZ0lmPSdsZW5ndGggPT0gMCAmJiBkYXRhLmxlbmd0aCA9PSAwJyBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4O1wiPiA8c3Ryb25nPk5vIHNlIGVuY29udHLDsyBpbmZvcm1hY2nDs248L3N0cm9uZz48L2Rpdj5cblxuICAgPG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0b3JBY3RpdmVcIlxuICAgW2xlbmd0aF09XCJsZW5ndGhcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIHNob3dGaXJzdExhc3RCdXR0b25zXG4gICAocGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XG5cbiAgPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uc1RhYmxlIGxldC1mb250U2l6ZT1cImZvbnRTaXplXCIgbGV0LW1hcmdpblJpZ2h0PVwibWFyZ2luUmlnaHRcIiBzdHlsZT0nZmxleDowLjU7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsnPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidG4gb2YgYnV0dG9uc0NvbmZpZ1wiPlxuICAgIDxkaXYgKm5nSWY9XCJidG4uY29uZGl0aW9uU2hvd0hlYWRlcigpXCIgKGNsaWNrKT1cImFjdGlvbihidG4uYWN0aW9uKVwiIG1hdFRvb2x0aXA9XCJ7e2J0bi50b29sdGlwfX1cIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSB7e2J0bi5pY29ufX0gYnRuLWFjY2lvblwiIFtuZ1N0eWxlXT1cInsnZm9udC1zaXplJzogZm9udFNpemUgPyBmb250U2l6ZSA6ICcxNzAlJywgJ21hcmdpbi1yaWdodCc6IG1hcmdpblJpZ2h0ID8gbWFyZ2luUmlnaHQgOiAnMTVweCd9XCI+PC9pPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
|
|
@@ -1595,12 +1595,14 @@ class DataTableComponent {
|
|
|
1595
1595
|
}
|
|
1596
1596
|
validateRolAndPermission() {
|
|
1597
1597
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
1598
|
+
console.log('rol', this.roleId, 'rolesAndPermissions', rolesAndPermissions);
|
|
1598
1599
|
if (this.roleId != 0) {
|
|
1599
1600
|
let rolePermissions = rolesAndPermissions === null || rolesAndPermissions === void 0 ? void 0 : rolesAndPermissions.find(x => x.id == this.roleId);
|
|
1600
1601
|
this.hasAccessToAll = (_d = (_a = rolePermissions === null || rolePermissions === void 0 ? void 0 : rolePermissions.hasAccessToAll) !== null && _a !== void 0 ? _a : (_c = (_b = rolePermissions.modules) === null || _b === void 0 ? void 0 : _b.find(x => x.id == this.moduleId)) === null || _c === void 0 ? void 0 : _c.hasAccessToAll) !== null && _d !== void 0 ? _d : false;
|
|
1601
1602
|
}
|
|
1602
1603
|
;
|
|
1603
1604
|
this.rolesAndPermissionUser = (_k = (_j = (_h = (_g = (_f = (_e = rolesAndPermissions === null || rolesAndPermissions === void 0 ? void 0 : rolesAndPermissions.find(x => x.id == this.roleId)) === null || _e === void 0 ? void 0 : _e.modules) === null || _f === void 0 ? void 0 : _f.find(x => x.id == this.moduleId)) === null || _g === void 0 ? void 0 : _g.subModules) === null || _h === void 0 ? void 0 : _h.find(x => x.id == this.subModuleId)) === null || _j === void 0 ? void 0 : _j.permissions) !== null && _k !== void 0 ? _k : {};
|
|
1605
|
+
console.log('rolesAndPermissionsbyUser', this.rolesAndPermissionUser);
|
|
1604
1606
|
if (!this.hasAccessToAll && !this.rolesAndPermissionUser.readAll && this.rolesAndPermissionUser.readOwn == true) {
|
|
1605
1607
|
this.params = [...this.params, { id: 'readOwn', value: true }];
|
|
1606
1608
|
}
|
|
@@ -1729,6 +1731,8 @@ class DataTableComponent {
|
|
|
1729
1731
|
}
|
|
1730
1732
|
hasPermission(permission) {
|
|
1731
1733
|
var _a, _b;
|
|
1734
|
+
if (permission == 'addComment')
|
|
1735
|
+
console.log('rolesAndPermissionUserinhaspermission', this.rolesAndPermissionUser);
|
|
1732
1736
|
if (this.hasAccessToAll)
|
|
1733
1737
|
return true;
|
|
1734
1738
|
return (_b = (_a = this.rolesAndPermissionUser) === null || _a === void 0 ? void 0 : _a[permission]) !== null && _b !== void 0 ? _b : false;
|