vcomply-workflow-engine 5.0.30 → 5.0.31
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/services/report-case-permission.service.mjs +6 -3
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +8 -7
- package/fesm2022/vcomply-workflow-engine.mjs +11 -7
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/services/report-case-permission.service.d.ts +2 -2
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "./RBAC.service";
|
|
5
5
|
import * as i2 from "./auth.service";
|
|
@@ -7,7 +7,7 @@ export class ReportCasePermissionService {
|
|
|
7
7
|
constructor(rbacService, authService) {
|
|
8
8
|
this.rbacService = rbacService;
|
|
9
9
|
this.authService = authService;
|
|
10
|
-
this.hasPermission = new
|
|
10
|
+
this.hasPermission = new Subject();
|
|
11
11
|
this.checkReportACasePermission();
|
|
12
12
|
}
|
|
13
13
|
checkReportACasePermission() {
|
|
@@ -27,6 +27,9 @@ export class ReportCasePermissionService {
|
|
|
27
27
|
if (data?.includes('CCMMC')) {
|
|
28
28
|
this.hasPermission.next(true);
|
|
29
29
|
}
|
|
30
|
+
else {
|
|
31
|
+
this.hasPermission.next(false);
|
|
32
|
+
}
|
|
30
33
|
return data?.includes('CCMMC');
|
|
31
34
|
});
|
|
32
35
|
return false;
|
|
@@ -47,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
47
50
|
providedIn: 'root',
|
|
48
51
|
}]
|
|
49
52
|
}], ctorParameters: function () { return [{ type: i1.RbacService }, { type: i2.AuthService }]; } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNhc2UtcGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2VydmljZXMvcmVwb3J0LWNhc2UtcGVybWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFtQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFLaEQsTUFBTSxPQUFPLDJCQUEyQjtJQUl0QyxZQUNVLFdBQXdCLEVBQ3hCLFdBQXdCO1FBRHhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBSjNCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQU01QyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2pELE9BQU8sZUFBZSxJQUFJLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0RCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBVyxFQUFFLEVBQUU7WUFDN0QscUNBQXFDO1lBQ3JDLElBQUcsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0I7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEM7WUFDRCxPQUFPLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVcsRUFBRSxFQUFFO1lBQzdELE1BQU0sYUFBYSxHQUFHLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTVDVSwyQkFBMkI7bUhBQTNCLDJCQUEyQixjQUYxQixNQUFNOzs0RkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmJhY1NlcnZpY2UgfSBmcm9tICcuL1JCQUMuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlIHtcblxuICBwdWJsaWMgaGFzUGVybWlzc2lvbiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByYmFjU2VydmljZTogUmJhY1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jaGVja1JlcG9ydEFDYXNlUGVybWlzc2lvbigpO1xuICB9XG5cbiAgY2hlY2tSZXBvcnRBQ2FzZVBlcm1pc3Npb24oKSB7XG4gICAgY29uc3QgaGFzU3Vic2NyaXB0aW9uID0gdGhpcy5jaGVja1N1YnNjcmlwdGlvbigpO1xuICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSB0aGlzLmNoZWNrUkJBQ1Blcm1pc3Npb24oKTtcbiAgICByZXR1cm4gaGFzU3Vic2NyaXB0aW9uICYmIGhhc1Blcm1pc3Npb247XG4gIH1cblxuICBjaGVja1N1YnNjcmlwdGlvbigpIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnN1YnNjcmlwdGlvbkRldGFpbHMuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICByZXR1cm4gZGF0YVswXT8uY2FzZV9mbGFnO1xuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tSQkFDUGVybWlzc2lvbjEoKSB7XG4gICAgdGhpcy5yYmFjU2VydmljZS5nZXRSQkFDRGF0YSgnY2FzZScpLnN1YnNjcmliZSgoZGF0YTogYW55W10pID0+IHtcbiAgICAgIC8vICAgY2hlY2sgZm9yIG1hbmFnZSBjYXNlIHBlcm1pc3Npb25cbiAgICAgIGlmKGRhdGE/LmluY2x1ZGVzKCdDQ01NQycpKSB7XG4gICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbi5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuaGFzUGVybWlzc2lvbi5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhPy5pbmNsdWRlcygnQ0NNTUMnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGVja1JCQUNQZXJtaXNzaW9uKCkge1xuICAgIC8vIFJlbW92ZSB0aGUgaW1tZWRpYXRlIHJldHVybiBmYWxzZVxuICAgIHRoaXMucmJhY1NlcnZpY2UuZ2V0UkJBQ0RhdGEoJ2Nhc2UnKS5zdWJzY3JpYmUoKGRhdGE6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0gZGF0YT8uaW5jbHVkZXMoJ0NDTU1DJyk7XG4gICAgICB0aGlzLmhhc1Blcm1pc3Npb24ubmV4dChoYXNQZXJtaXNzaW9uKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -254,13 +254,14 @@ export class WorkflowEngineContainerComponent {
|
|
|
254
254
|
this.permissionSubscription.unsubscribe();
|
|
255
255
|
}
|
|
256
256
|
checkPermission() {
|
|
257
|
-
this.permissionSubscription =
|
|
258
|
-
this.
|
|
259
|
-
|
|
257
|
+
this.permissionSubscription =
|
|
258
|
+
this.reportCasePermissionService.hasPermission.subscribe((hasPermission) => {
|
|
259
|
+
this.caseTypePermission = hasPermission;
|
|
260
260
|
this.reportACaseService.caseTypeLoader.next(false);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
if (hasPermission) {
|
|
262
|
+
this.checkReportCasePermission();
|
|
263
|
+
}
|
|
264
|
+
});
|
|
264
265
|
}
|
|
265
266
|
setNetworkListner() {
|
|
266
267
|
addEventListener('offline', (e) => {
|
|
@@ -820,4 +821,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
820
821
|
type: HostListener,
|
|
821
822
|
args: ['window:resize', ['$event']]
|
|
822
823
|
}] } });
|
|
823
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU2hELE1BQU0sT0FBTyxnQ0FBZ0M7SUFRM0Msa0JBQWtCLENBQUMsTUFBVztRQUM1QixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLEtBQUssRUFBRTtZQUNyQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUMzQjtJQUNILENBQUM7SUFDRCxZQUNTLFlBQTBCLEVBQ3pCLFFBQXlCLEVBQzFCLElBQWlCLEVBQ2hCLGdCQUEyQyxFQUMzQyxrQkFBc0MsRUFDdEMsMkJBQXdEO1FBTHpELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyQjtRQUMzQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBNkI7UUFuQmxFLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsMkJBQXNCLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFvQmpELGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUNSLGVBQVUsR0FBRyxRQUFRLENBQUM7UUFDdEIsV0FBTSxHQUE0QixFQUFFLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUMzQixxQkFBZ0IsR0FBZSxFQUFFLENBQUMsQ0FBQyx5Q0FBeUM7UUFDNUUsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQix3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsb0JBQWUsR0FBRyxRQUFRLENBQUM7UUFDM0IsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHO1lBQzNCLDRCQUE0QjtZQUM1QixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7UUFDTyx1QkFBa0IsR0FBUTtZQUNqQyxZQUFZLEVBQUUsRUFBRTtZQUNoQixjQUFjLEVBQUUsRUFBRTtZQUNsQixVQUFVLEVBQUUsRUFBRTtZQUNkLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUM7UUFDTyxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsY0FBUyxHQUFHO1lBQ25CLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNPLHNCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUU5QixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsb0JBQWUsR0FBUSxJQUFJLENBQUM7UUFDNUIsdUJBQWtCLEdBQVksSUFBSSxDQUFDLENBQUMsdURBQXVEO1FBSXBHLHdCQUFtQixHQU1mO1lBQ0YsR0FBRyxFQUFFLEVBQUU7WUFDUCxjQUFjLEVBQUUsRUFBRTtZQUNsQixFQUFFLEVBQUUsQ0FBQztZQUNMLElBQUksRUFBRSxFQUFFO1lBQ1IsV0FBVyxFQUFFLEVBQUU7U0FDaEIsQ0FBQztRQUNPLFlBQU8sR0FBa0IsQ0FBQyxDQUFDO1FBQzNCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUV0QyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBR2pDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQyxpQ0FBNEIsR0FBWSxLQUFLLENBQUM7UUFDOUMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0Qiw4QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFFakMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0Qix5QkFBb0IsR0FBUSxFQUFFLENBQUM7UUFDL0IsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBeUJwQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBMkI1QixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBRW5CLHFCQUFnQixHQUFRO1lBQ3RCO2dCQUNFLFlBQVksRUFBRSx5QkFBeUI7Z0JBQ3ZDLElBQUksRUFBRSxLQUFLO2dCQUNYLG9CQUFvQixFQUFFLGdCQUFnQjthQUN2QztZQUNEO2dCQUNFLFlBQVksRUFBRSxrQ0FBa0M7Z0JBQ2hELElBQUksRUFBRSxLQUFLO2dCQUNYLG9CQUFvQixFQUFFLHlCQUF5QjthQUNoRDtZQUNELEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRTtZQUN6RTtnQkFDRSxZQUFZLEVBQUUsb0JBQW9CO2dCQUNsQyxJQUFJLEVBQUUsS0FBSztnQkFDWCxvQkFBb0IsRUFBRSxlQUFlO2FBQ3RDO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLGlCQUFpQjtnQkFDL0IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsb0JBQW9CLEVBQUUsUUFBUTthQUMvQjtZQUNEO2dCQUNFLFlBQVksRUFBRSxpQkFBaUI7Z0JBQy9CLElBQUksRUFBRSxLQUFLO2dCQUNYLG9CQUFvQixFQUFFLFFBQVE7YUFDL0I7WUFDRDtnQkFDRSxZQUFZLEVBQUUsZUFBZTtnQkFDN0IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsb0JBQW9CLEVBQUUsTUFBTTthQUM3QjtZQUNEO2dCQUNFLFlBQVksRUFBRSxjQUFjO2dCQUM1QixJQUFJLEVBQUUsS0FBSztnQkFDWCxvQkFBb0IsRUFBRSxPQUFPO2FBQzlCO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLHNCQUFzQjtnQkFDcEMsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsb0JBQW9CLEVBQUUsWUFBWTthQUNuQztZQUNEO2dCQUNFLFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLElBQUksRUFBRSxLQUFLO2dCQUNYLG9CQUFvQixFQUFFLG1CQUFtQjthQUMxQztZQUNEO2dCQUNFLFlBQVksRUFBRSxlQUFlO2dCQUM3QixJQUFJLEVBQUUsTUFBTTtnQkFDWixvQkFBb0IsRUFBRSxTQUFTO2FBQ2hDO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLGtCQUFrQjtnQkFDaEMsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsb0JBQW9CLEVBQUUsYUFBYTthQUNwQztZQUNEO2dCQUNFLFlBQVksRUFBRSxlQUFlO2dCQUM3QixJQUFJLEVBQUUsS0FBSztnQkFDWCxvQkFBb0IsRUFBRSxlQUFlO2FBQ3RDO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLHlCQUF5QjtnQkFDdkMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osb0JBQW9CLEVBQUUsZUFBZTthQUN0QztTQUNGLENBQUM7UUFDRiw4QkFBeUIsR0FBRztZQUMxQixXQUFXO1lBQ1gsdUJBQXVCO1lBQ3ZCLHlCQUF5QjtTQUMxQixDQUFDO1FBQ0YsNEJBQXVCLEdBQXNCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBN01oRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQXlHb0QsZ0JBQWdCLENBQ25FLEtBQW9CO1FBRXBCLElBQ0U7WUFDRSxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVU7WUFDOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVO1lBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxVQUFVO1lBQ3pDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVTtZQUMzQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsVUFBVTtZQUNuQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsVUFBVTtTQUNuQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYztZQUMvQixJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFDM0I7WUFDQSxZQUFZO1NBQ2I7YUFBTTtZQUNMLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQStFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0RCxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzNCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELG1CQUFtQixDQUFDLEdBQVM7UUFDM0IsSUFBSSxHQUFHLEVBQUUsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFRO1FBQ25CLElBQUksQ0FBQyx1QkFBdUIsR0FBRztZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLE9BQU8sRUFBRSx5REFBeUQ7WUFDbEUsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWLENBQUM7SUFDSixDQUFDO0lBQ0QsWUFBWSxDQUFDLEdBQVE7UUFDbkIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQ3RELHFCQUFxQixDQUN0QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQ3JELDBCQUEwQixDQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN2RyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUFDO1lBQ3hDLElBQUcsYUFBYSxFQUFFO2dCQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7YUFDbEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsc0RBQXNELEVBQ3RELE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEVBQUU7Z0JBQ2pFLE9BQU8sUUFBUSxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssZ0JBQWdCLEVBQUU7WUFDeEMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDaEUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUNsRCxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FDeEMsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDbEQsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxlQUFlLENBQ2hELENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBYztRQUNqQyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUM1RSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQzthQUN2QztTQUNGO2FBQU07WUFDTCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO2FBQ3hDO1lBQ0QsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDM0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQzthQUN2QztZQUNELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7YUFDdkM7U0FDRjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxNQUFNLEVBQUU7WUFDaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QixPQUFPO1NBQ1I7UUFDRCxRQUFRLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFO1lBQ2xDLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQyxNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDcEQsTUFBTTtZQUNSLEtBQUssTUFBTSxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IsTUFBTTthQUNQO1lBQ0QsS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFDVixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixNQUFNO2FBQ1A7WUFDRCxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzdCLE1BQU07YUFDUDtZQUNELGNBQWM7WUFDZCxnREFBZ0Q7U0FDakQ7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFDRCxjQUFjLENBQUMsR0FBUSxFQUFFLGdCQUFxQjtRQUM1QyxJQUFJLGdCQUFnQixFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRTtZQUN6RCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEdBQUc7WUFDN0IsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsZ0VBQWdFO1lBQ3pFLE1BQU0sRUFBRSxpQkFBaUI7WUFDekIsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQVE7UUFDNUIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUMxQixLQUFLLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUM7b0JBQ2xELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUU7d0JBQzlCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTs0QkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQzt5QkFDdEQ7d0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7cUJBQzdCO29CQUVELE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzNELE1BQU07Z0JBQ1IsS0FBSyxlQUFlO29CQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDNUMsTUFBTTtnQkFDUixLQUFLLGdCQUFnQjtvQkFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDNUMsTUFBTTtnQkFDUixLQUFLLFlBQVk7b0JBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO3dCQUMxRCxJQUNFLE1BQU0sRUFBRSxJQUFJLEtBQUssWUFBWTs0QkFDN0IsTUFBTSxFQUFFLElBQUksS0FBSyxpQkFBaUIsRUFDbEM7NEJBQ0EsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7eUJBQzNCO3dCQUVELElBQUksTUFBTSxFQUFFLElBQUksS0FBSyxhQUFhLEVBQUU7NEJBQ2xDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3lCQUMxQjtvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQ25DLE1BQU07Z0JBRVIsS0FBSyxNQUFNO29CQUNULElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUM5QyxNQUFNO2dCQUVSLEtBQUssaUJBQWlCO29CQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7d0JBQzFELElBQUksTUFBTSxFQUFFLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTs0QkFDL0QsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7eUJBQzNCO3dCQUVELElBQUksTUFBTSxFQUFFLElBQUksS0FBSyxhQUFhLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTs0QkFDaEUsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7eUJBQzFCO3dCQUNELElBQ0UsR0FBRyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUI7NEJBQy9CLE1BQU0sRUFBRSxJQUFJLEtBQUssaUJBQWlCLEVBQ2xDOzRCQUNBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDOzRCQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO3lCQUNyRDtvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMxQyxNQUFNO2dCQUNSLEtBQUssb0JBQW9CO29CQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO29CQUNwRSxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJO3dCQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQ2hDLGFBQWEsQ0FDZCxDQUFDO29CQUNKLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO3dCQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUM7NEJBQzdELEVBQUUsQ0FBQztxQkFDTjtvQkFFRCxNQUFNO2dCQUNSLEtBQUssWUFBWTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQ2hELG9CQUFvQixDQUNyQixHQUFHLElBQUksQ0FBQztvQkFDVCxNQUFNO2dCQUNSLEtBQUssYUFBYTtvQkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUNoRCxvQkFBb0IsQ0FDckIsR0FBRyxLQUFLLENBQUM7b0JBQ1YsTUFBTTthQUNUO1NBQ0Y7YUFBTTtZQUNMLFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQzFCLEtBQUssZUFBZTtvQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzVDLE1BQU07Z0JBQ1IsS0FBSyxvQkFBb0I7b0JBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGNBQWM7d0JBQ3pELFNBQVMsQ0FBQztvQkFDWixNQUFNO2dCQUVSLEtBQUssWUFBWTtvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQ2hELG9CQUFvQixDQUNyQixHQUFHLEtBQUssQ0FBQztvQkFDVixNQUFNO2dCQUNSLEtBQUssYUFBYTtvQkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUNoRCxvQkFBb0IsQ0FDckIsR0FBRyxJQUFJLENBQUM7b0JBQ1QsTUFBTTthQUNUO1NBQ0Y7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEdBQUc7WUFDN0IsU0FBUyxFQUFFLEtBQUs7WUFDaEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFdBQVcsQ0FBQyxZQUFpQixFQUFFLFlBQWlCO1FBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FDeEMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLEtBQUssWUFBWSxDQUNqRCxDQUFDO1FBQ0YsZ0JBQWdCO1lBQ2QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLFFBQVEsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUU7WUFDbEMsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxLQUFLLEVBQUUsSUFBSSxLQUFLLGFBQWEsRUFBRTtvQkFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUN4QyxNQUFNO2lCQUNQO2dCQUNELElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxpQkFBaUIsRUFBRTtvQkFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FDekQsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssWUFBWSxDQUN6QyxDQUFDO29CQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU87d0JBQ25FLENBQUMsQ0FBQyxJQUFJO3dCQUNOLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ1YsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7d0JBQ2hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDcEQ7eUJBQU07d0JBQ0wsTUFBTSxnQkFBZ0IsR0FDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FDM0MsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssaUJBQWlCLENBQzlDLENBQUM7d0JBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7d0JBQzVELElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTs0QkFDeEIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7NEJBQy9DLEtBQUssQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO3lCQUMzQjt3QkFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUM7d0JBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVOzRCQUNuRCxLQUFLLENBQUMsT0FBTyxDQUFDO3FCQUNqQjtpQkFDRjtnQkFDRCxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssWUFBWSxFQUFFO29CQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUN6RCxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxpQkFBaUIsQ0FDOUMsQ0FBQztvQkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7aUJBQ3ZFO2dCQUVELElBQ0UsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUU7b0JBQ3RELGtCQUFrQixFQUNsQjtvQkFDQSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUM1RCxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksS0FBSyxZQUFZLENBQ3pDLENBQUM7b0JBQ0YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7d0JBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUUxRCxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUMzQyxDQUFDO3FCQUNIO2lCQUNGO2dCQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBQ0QsMkJBQTJCLENBQUMsS0FBVTtRQUNwQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBeUI7UUFDN0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztJQUN4QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3hDLE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ2xELE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBRTVDLE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUU7WUFDdEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RDthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQ2xCLEtBQWEsRUFDYixtQkFBNkIsRUFDN0IsYUFBdUI7UUFFdkIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLEtBQUssaUJBQWlCLEVBQUU7WUFDL0IsR0FBRztnQkFDRCwwS0FBMEssQ0FBQztTQUM5SzthQUFNO1lBQ0wsR0FBRztnQkFDRCx5RkFBeUYsQ0FBQztTQUM3RjtRQUNELElBQUksQ0FBQyx1QkFBdUIsR0FBRztZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLE9BQU8sRUFBRSxHQUFHO1lBQ1osTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7WUFDMUMsbUJBQW1CLEVBQUUsbUJBQW1CLElBQUksS0FBSztZQUNqRCxhQUFhLEVBQUUsYUFBYSxJQUFJLEtBQUs7U0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYTtRQUMxQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssRUFBRTtZQUNULEdBQUcsR0FBRyw2REFBNkQsQ0FBQztTQUNyRTtRQUNELElBQUksQ0FBQyx1QkFBdUIsR0FBRztZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLE9BQU8sRUFBRSxHQUFHO1lBQ1osTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsS0FBSztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsVUFBbUI7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQzFELElBQUksTUFBTSxFQUFFLElBQUksS0FBSyxZQUFZLElBQUksTUFBTSxFQUFFLElBQUksS0FBSyxpQkFBaUIsRUFBRTtnQkFDdkUsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxZQUFpQixFQUFFLG9CQUF5QjtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ3BFLElBQUksb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDL0MsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQzFCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFhO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBcUI7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxTQUFTLENBQUM7WUFDcEQsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO2dCQUN0QixJQUFJLEdBQUcsRUFBRSxtQkFBbUIsSUFBSSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFO29CQUNoRSxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUM5QyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FDNUIsQ0FBQztvQkFDRixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FDL0MsQ0FBQyxDQUNGLE1BQU0sUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNoQztZQUNILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsRUFBRSxTQUFTLENBQUM7WUFDakQsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztZQUM5QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBVSxFQUFFLEVBQUU7Z0JBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLHVCQUF1QixHQUFHO1lBQzdCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsT0FBTyxFQUNMLGlHQUFpRztZQUNuRyxNQUFNLEVBQUUsb0JBQW9CO1lBQzVCLElBQUksRUFBRSxFQUFFO1lBQ1IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsZ0JBQWdCLENBQUMsS0FBYTtRQUM1QixNQUFNLFVBQVUsR0FDZCx5R0FBeUcsQ0FBQztRQUM1RyxNQUFNLEdBQUcsR0FDUCxVQUFVO1lBQ1YsQ0FBQyxLQUFLLEtBQUssYUFBYTtnQkFDdEIsQ0FBQyxDQUFDLDRJQUE0STtnQkFDOUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLHVCQUF1QixHQUFHO1lBQzdCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsT0FBTyxFQUFFLEdBQUc7WUFDWixNQUFNLEVBQUUsS0FBSztTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsc0JBQXNCLENBQUM7WUFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRywrQkFBK0IsQ0FBQztTQUN6RTtJQUNILENBQUM7K0dBaHpCVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQywwOUVDdEM3Qywra3NCQXNrQkE7OzRGRGhpQmEsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLHVDQUF1Qzs4UUFZakQsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW1CdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT0csa0JBQWtCO3NCQUExQixLQUFLO2dCQU9HLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFJTixtQkFBbUI7c0JBSGxCLEtBQUs7O3NCQUVMLEtBQUs7Z0JBY0csT0FBTztzQkFBZixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFnQmdDLGFBQWE7c0JBQWxELFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFcEMsY0FBYztzQkFEYixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRzVDLHdCQUF3QjtzQkFEdkIsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3RELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRUYsVUFBVTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNuQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ3dCLFdBQVc7c0JBQXZELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDdEIsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNNLGlCQUFpQjtzQkFBekMsU0FBUzt1QkFBQyxZQUFZO2dCQUV2QiwyQkFBMkI7c0JBRDFCLFNBQVM7dUJBQUMsWUFBWTtnQkFHdkIsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFUCxPQUFPO3NCQUEvQyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRXZDLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVoQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBT2QsT0FBTztzQkFBZixLQUFLO2dCQUcrQyxnQkFBZ0I7c0JBQXBFLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBK1JuRCxVQUFVO3NCQURULFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgZWZmZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkZE11bHRpcGxlUmlza0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1tdWx0aXBsZS1yaXNrL2FkZC1tdWx0aXBsZS1yaXNrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25BbGVydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlybWF0aW9uLWFsZXJ0JztcbmltcG9ydCB7IElzc3VlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXNzdWUtZGF0YSc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93LWFzc2Vzc21lbnQvd29ya2Zsb3ctYXNzZXNzbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1wb3J0QW5Bc3Nlc3NtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctYXNzZXNzbWVudC9pbXBvcnQtYW4tYXNzZXNzbWVudC9pbXBvcnQtYW4tYXNzZXNzbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dDb21wbGlhbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctY29tcGxpYW5jZS93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd1BvbGljeUNvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50JztcbmltcG9ydCB7IFdvcmtmbG93Umlza0NvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93LXJpc2svd29ya2Zsb3ctcmlzay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nQW5Jc3N1ZUNvbXBvbmVudCB9IGZyb20gJy4vLi4vbG9nLWFuLWlzc3VlL2xvZy1hbi1pc3N1ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9yZU9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vLi4vbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFdvcmtmbG93UHJvZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93LXByb2dyYW0vd29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JjT2JqZWN0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3cvZ3JjLW9iamVjdC9ncmMtb2JqZWN0LWNvbnRhaW5lci9ncmMtb2JqZWN0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRBQ2FzZVNlcnZpY2UgfSBmcm9tICcuLi9yZXBvcnQtYS1jYXNlL3NlcnZpY2VzL3JlcG9ydC1hLWNhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0Nhc2VDb21wb25lbnQgfSBmcm9tICcuLi9yZXBvcnQtYS1jYXNlL3dvcmtmbG93LWNhc2Uvd29ya2Zsb3ctY2FzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVwb3J0LWNhc2UtcGVybWlzc2lvbi5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC12Y29tcGx5LXdvcmtmbG93LWVuZ2luZS1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0VuZ2luZUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIGlzSG9zdFJlZnJlc2hBY3RpdmUgPSB0cnVlO1xuICBpc1JDU2VsZWN0ZWQgPSBmYWxzZTtcbiAgZmVhdHVyZUZsYWdfZ3JvdXBzOiBib29sZWFuID0gZmFsc2U7XG4gIGFkZFRvQ2FzZU1vZGUgPSAnJztcblxuICBwZXJtaXNzaW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbJyRldmVudCddKVxuICB1bmxvYWROb3RpZmljYXRpb24oJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50VXNlcicpO1xuICAgIGlmICh0aGlzLmlzSG9zdFJlZnJlc2hBY3RpdmUgJiYgdG9rZW4pIHtcbiAgICAgICRldmVudC5yZXR1cm5WYWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgcHVibGljIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnQ29tbW9uU2VydmljZTogT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlcG9ydEFDYXNlU2VydmljZTogUmVwb3J0QUNhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlOiBSZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jaGVja0N1cnJlbnRXb3JrZmxvdygpO1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLmNhc2VUeXBlTG9hZGVyLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jaGVja1Blcm1pc3Npb24oKVxuICB9XG4gIEBJbnB1dCgpIHdvcmtmbG93VHlwZSA9ICcnO1xuICBASW5wdXQoKSBtb2RlID0gJ0NSRUFURSc7XG4gIEBJbnB1dCgpIGlkID0gJyc7XG4gIEBJbnB1dCgpIG9wZW5lZEZyb20gPSAnR0xPQkFMJztcbiAgQElucHV0KCkgc291cmNlOiAnU0FQJyB8ICdXT1JLUk9PTScgfCAnJyA9ICcnO1xuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgYWxsb3dlZFdvcmtmbG93czogYW55ID0gW107XG4gIEBJbnB1dCgpIGZyYW1ld29ya0RldGFpbHM6IEFycmF5PGFueT4gPSBbXTsgLy8gb25seSBmb3IgY29tcGxpYW5jZSBwYXJ0IGZvciBmcmFtZXdvcmtcbiAgQElucHV0KCkgc2VsZWN0ZWRSQyA9ICcnO1xuICBASW5wdXQoKSBzZWNvbmRhcnlPcGVuUG9ydGFsID0gJyc7XG4gIEBJbnB1dCgpIGRlZmF1bHRSaXNrVHlwZSA9ICdOT1JNQUwnO1xuICBASW5wdXQoKSBtb3ZlVG9SZWdpc3Rlck1vZGUgPSAnJztcbiAgQElucHV0KCkgcmVwb25zaWJpbGl0eURhdGEgPSB7XG4gICAgLy8gb25seSB1c2VkIGJ5IGxvZyBhbiBpc3N1ZVxuICAgIHJlc3BvbnNpYmlsaXR5SWQ6IG51bGwsXG4gICAgcmVzcG9uc2liaWxpdHlOYW1lOiAnJyxcbiAgICByY0lkOiBudWxsLFxuICAgIGR1ZURhdGVJZDogJycsXG4gIH07XG4gIEBJbnB1dCgpIGFzc2Vzc21lbnRRdWVzdGlvbjogYW55ID0ge1xuICAgIHF1ZXN0aW9uTmFtZTogJycsXG4gICAgcXVlc3Rpb25OdW1iZXI6ICcnLFxuICAgIHF1ZXN0aW9uSWQ6ICcnLFxuICAgIGFzc2Vzc21lbnRJZDogJycsXG4gICAgYXVkaXRlZUlkOiBudWxsLFxuICB9O1xuICBASW5wdXQoKSBwaWQgPSAnJztcbiAgQElucHV0KCkgcHJvZ3JhbVR5cGU6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIGlzc3VlRGF0YSA9IHtcbiAgICBhdWRpdFBsYW5JZDogbnVsbCxcbiAgICBhdWRpdFBsYW5OYW1lOiAnJyxcbiAgICByY0lkOiBudWxsLFxuICB9O1xuICBASW5wdXQoKSBlbnRydXN0QnV0dG9uTmFtZSA9ICdFbnRydXN0JztcbiAgQElucHV0KCkgY29uZmlnITogSXNzdWVDb25maWd1cmF0aW9uO1xuICBASW5wdXQoKSBjb252ZXJ0RmlsZURhdGEgPSB7fTtcbiAgQElucHV0KCkgc2VsZWN0ZWRDYXRlZ29yeSA9ICcnO1xuXG4gIEBJbnB1dCgpIHNlbGVjdGVkUHJvZ3JhbTogYW55ID0gbnVsbDtcbiAgQElucHV0KCkgY2FuRnJhbWV3b3JrQ2hhbmdlOiBib29sZWFuID0gdHJ1ZTsgLy8gaWYgZnJhbWV3b3JrIGNhbiBFZGl0ZWQgb3Igbm90OyBGb3IgQ3JlYXRlIGEgcHJvZ3JhbVxuICBASW5wdXQoKSAvKiAgKi9cbiAgLyogICovXG4gIEBJbnB1dCgpXG4gIGFkZFRvUHJvZ3JhbURldGFpbHM6IHtcbiAgICBfaWQ6IHN0cmluZztcbiAgICBmcmFtZXdvcmtfbmFtZTogc3RyaW5nO1xuICAgIGlkPzogbnVtYmVyO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB9ID0ge1xuICAgIF9pZDogJycsXG4gICAgZnJhbWV3b3JrX25hbWU6ICcnLFxuICAgIGlkOiAwLFxuICAgIHR5cGU6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgfTtcbiAgQElucHV0KCkgZ3JjVHlwZTogMCB8IDEgfCAyIHwgMyA9IDA7XG4gIEBJbnB1dCgpIGlzU2VuZEZvckF0dGVzdGF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFzc2Vzc21lbnREZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIHRlbXBsYXRlSWQ6IHN0cmluZyA9ICcnO1xuXG4gIG9yZ0RldGFpbHM6IGFueTtcbiAgcHJvZ3JhbVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZnlGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIGNhc2VGZWF0dXJlRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGFuaW1hdGlvbiA9IHRydWU7XG4gIHdvcmtmbG93TGlzdCA9IGZhbHNlO1xuICBzaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gIGlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICBkaXNhYmxlV29ya2Zsb3dDaGFuZ2UhOiBib29sZWFuO1xuICBjaGVja3BvaW50Q291bnQ6IG51bWJlciA9IDA7XG4gIHJlcG9ydEJ5OiBzdHJpbmcgPSAnJztcbiAgY3VycmVudEJ1c2luZXNzQ3ljbGU6IGFueSA9ICcnO1xuICBjYXNlVHlwZVBlcm1pc3Npb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgncmlzaycsIHsgc3RhdGljOiBmYWxzZSB9KSByaXNrQ29tcG9uZW50ITogV29ya2Zsb3dSaXNrQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtdWx0aXBsZVJpc2snLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcmlza0J1bGtVcGxvYWQhOiBBZGRNdWx0aXBsZVJpc2tDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ211bHRpcGxlUmVzcG9uc2liaWxpdHknLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkITogQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdyZXNwb25zaWJpbGl0eScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjb21wbGlhbmNlITogV29ya2Zsb3dDb21wbGlhbmNlQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtb3JlT3B0aW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1vcmVPcHRpb24hOiBNb3JlT3B0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25Sb3cnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHJvcGRvd25Sb3chOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwb2xpY3knKSBwb2xpY3khOiBXb3JrZmxvd1BvbGljeUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbG9nQW5Jc3N1ZScpIGxvZ0lzc3VlQ29tcG9uZW50ITogTG9nQW5Jc3N1ZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnYXNzZXNzbWVudCcpXG4gIHdvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudCE6IFdvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnaW1wb3J0QXNzZXNzbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBpbXBvcnRBbkFzc2Vzc21lbnQhOiBJbXBvcnRBbkFzc2Vzc21lbnRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3Byb2dyYW0nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJvZ3JhbSE6IFdvcmtmbG93UHJvZ3JhbUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JjT2JqZWN0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGdyY09iamVjdCE6IEdyY09iamVjdENvbnRhaW5lckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncmVwb3J0Q2FzZScpIHJlcG9ydENhc2UhOiBXb3JrZmxvd0Nhc2VDb21wb25lbnQ7XG5cbiAgZHJvcGRvd25MZWZ0ITogYW55O1xuICBkcm9wZG93blRvcCE6IGFueTtcbiAgZHJvcGRvd25XaWR0aCE6IGFueTtcbiAgY2xvc2VPbkVzYzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBmZWF0dXJlIGZsYWdcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBvcmdhbml6YXRpb25EZXRhaWxzOiBhbnk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50XG4gICkge1xuICAgIGlmIChcbiAgICAgIFtcbiAgICAgICAgdGhpcy5yaXNrQ29tcG9uZW50Py5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkPy5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uc2hvd1NtaWxleSxcbiAgICAgICAgdGhpcy5jb21wbGlhbmNlPy5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLmltcG9ydEFuQXNzZXNzbWVudD8uc2hvd1NtaWxleSxcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUNvbXBvbmVudD8uc2hvd1NtaWxleSxcbiAgICAgIF0uaW5jbHVkZXModHJ1ZSkgfHxcbiAgICAgIHRoaXMucHJvZ3JhbT8uYWN0aXZlTGlzdCB8fFxuICAgICAgdGhpcy5jb21wbGlhbmNlPy5hY3RpdmVTZWxlY3RvciB8fFxuICAgICAgdGhpcy5ncmNPYmplY3Q/Lm9wZW5lZFBvcHVwXG4gICAgKSB7XG4gICAgICAvL0RvIE5vdGhpbmdcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZVdvcmtmbG93RW5naW5lKCk7XG4gICAgfVxuICB9XG5cbiAgdXNlckxpc3Q6IGFueSA9IFtdO1xuICBjdXJyZW50V29ya2Zsb3chOiBhbnk7XG4gIHdvcmtmbG93VHlwZUxpc3Q6IGFueSA9IFtcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgYSBSZXNwb25zaWJpbGl0eScsXG4gICAgICBjb2RlOiAnQ0FSJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUkVTUE9OU0lCSUxJVFknLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIE11bHRpcGxlIFJlc3BvbnNpYmlsaXRpZXMnLFxuICAgICAgY29kZTogJ0NNUicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ01VTFRJUExFX1JFU1BPTlNJQklMSVRZJyxcbiAgICB9LFxuICAgIHsgd29ya2Zsb3dOYW1lOiAnQWRkIGEgUmlzaycsIGNvZGU6ICdBQVInLCBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1JJU0snIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQWRkIE11bHRpcGxlIFJpc2tzJyxcbiAgICAgIGNvZGU6ICdBTVInLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdNVUxUSVBMRV9SSVNLJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIFBvbGljeScsXG4gICAgICBjb2RlOiAnQ0FQJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUE9MSUNZJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIFN1cnZleScsXG4gICAgICBjb2RlOiAnQ0FTJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnU1VSVkVZJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIEZvcm0nLFxuICAgICAgY29kZTogJ0NBRicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ0ZPUk0nLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnTG9nIGFuIElzc3VlJyxcbiAgICAgIGNvZGU6ICdMQUknLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdJU1NVRScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgYW4gQXNzZXNzbWVudCcsXG4gICAgICBjb2RlOiAnQUFBJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnQVNTRVNTTUVOVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdJbXBvcnQgYW4gQXNzZXNzbWVudCcsXG4gICAgICBjb2RlOiAnSUFBJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnSU1QT1JUX0FTU0VTU01FTlQnLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQWRkIGEgUHJvZ3JhbScsXG4gICAgICBjb2RlOiAnQ0FQUicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1BST0dSQU0nLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQWRkIGEgR1JDIE9iamVjdCcsXG4gICAgICBjb2RlOiAnR1JDJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnR1JDX09CSkVDVFMnLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnUmVwb3J0IGEgQ2FzZScsXG4gICAgICBjb2RlOiAnUkFDJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUkVQT1JUX0FfQ0FTRScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBc3NpZ24gY2FzZSB0byB3b3JrZmxvdycsXG4gICAgICBjb2RlOiAnQUNUVycsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1JFUE9SVF9BX0NBU0UnLFxuICAgIH0sXG4gIF07XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbkxpc3QgPSBbXG4gICAgJ09iamVjdGl2ZScsXG4gICAgJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgJ1Jlc3BvbnNpYmlsaXR5IENhdGVnb3J5JyxcbiAgXTtcbiAgY29uZmlybWF0aW9uQWxlcnRDb25maWc6IENvbmZpcm1hdGlvbkFsZXJ0ID0geyBpc1Zpc2libGU6IGZhbHNlIH07XG5cbiAgY2hlY2tDdXJyZW50V29ya2Zsb3coKSB7XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2Uud29ya2Zsb3dDb2RlLnN1YnNjcmliZSgoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09ICdBQ1cnIHx8IGNvZGUgPT09ICdBQ1RXJykge1xuICAgICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZGRUb0Nhc2VNb2RlID0gY29kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRUb0Nhc2VNb2RlID0gJyc7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgY2xvc2VXb3JrZmxvd0VuZ2luZShldnQ/OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py5jb25maXJtID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoZXZ0ID8gZXZ0LmV2dCA6IGV2dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtKGV2dCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VDb25maXJtKGV2dDogYW55KSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdJZiB5b3UgbmF2aWdhdGUgYXdheSwgYW55IHVuc2F2ZWQgY2hhbmdlcyB3aWxsIGJlIGxvc3QuJyxcbiAgICAgIGFjdGlvbjogJ1dPUktGTE9XX0NMT1NFJyxcbiAgICAgIGRhdGE6IGV2dCxcbiAgICB9O1xuICB9XG4gIGV4ZWN1dGVDbG9zZShldnQ6IGFueSkge1xuICAgIGlmIChldnQuYWN0aW9uID09PSAnWUVTJykge1xuICAgICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoKTtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXROZXR3b3JrTGlzdG5lcigpO1xuICAgIHRoaXMuc2V0V29ya2Zsb3codGhpcy53b3JrZmxvd1R5cGUsIHRoaXMud29ya2Zsb3dUeXBlTGlzdCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDUwMCk7XG4gICAgdGhpcy5zZXRXb3JrZmxvdyh0aGlzLndvcmtmbG93VHlwZSwgdGhpcy53b3JrZmxvd1R5cGVMaXN0KTtcbiAgICB0aGlzLmRlY2lkZVZpZXdNb3JlT3B0aW9uKCk7XG4gICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvbkRldGFpbHMoKTtcbiAgICB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcHJvZ3JhbV9zaW1wbGlmeSdcbiAgICApO1xuICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfZ3JvdXBzJ1xuICAgICk7XG4gICAgdGhpcy5jYXNlRmVhdHVyZUZsYWcgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfY2FzZXNfZW5hYmxlZCcpO1xuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZ5KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNoZWNrUGVybWlzc2lvbigpIHtcbiAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24gPSB0aGlzLnJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uLnN1YnNjcmliZSgoaGFzUGVybWlzc2lvbikgPT4ge1xuICAgICAgdGhpcy5jYXNlVHlwZVBlcm1pc3Npb24gPSBoYXNQZXJtaXNzaW9uO1xuICAgICAgaWYoaGFzUGVybWlzc2lvbikge1xuICAgICAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5jYXNlVHlwZUxvYWRlci5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jaGVja1JlcG9ydENhc2VQZXJtaXNzaW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXROZXR3b3JrTGlzdG5lcigpIHtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgKGUpID0+IHtcbiAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgJ0Nvbm5lY3Rpb24gbG9zdCE8YnI+Q2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpdml0eS4nLFxuICAgICAgICAnYWxlcnQnXG4gICAgICApO1xuICAgIH0pO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIChlKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coXCJZb3UncmUgYmFjayBvbmxpbmUhXCIsICdzdWNjZXNzJyk7XG4gICAgfSk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMud29ya2Zsb3dUeXBlTGlzdCA9IHRoaXMud29ya2Zsb3dUeXBlTGlzdC5maWx0ZXIoKHdvcmtmbG93OiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLmFsbG93ZWRXb3JrZmxvd3MuaW5jbHVkZXMod29ya2Zsb3cucGVybWlzc2lvbklkZW50aWZpZXIpKSB7XG4gICAgICAgIHJldHVybiB3b3JrZmxvdztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnKSB7XG4gICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy5kaXNhYmxlV29ya2Zsb3dDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrUmVwb3J0Q2FzZVBlcm1pc3Npb24oKSB7XG4gICAgY29uc3QgaGFzUGVybWlzc2lvbiA9XG4gICAgICB0aGlzLnJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZS5jaGVja1JlcG9ydEFDYXNlUGVybWlzc2lvbigpO1xuICAgIGlmIChoYXNQZXJtaXNzaW9uICYmIHRoaXMuY2FzZUZlYXR1cmVGbGFnKSB7XG4gICAgICB0aGlzLmFsbG93ZWRXb3JrZmxvd3MucHVzaCgnUkVQT1JUX0FfQ0FTRScpO1xuICAgICAgdGhpcy5hbGxvd2VkV29ya2Zsb3dzID0gdGhpcy5hbGxvd2VkV29ya2Zsb3dzLmZpbHRlcihcbiAgICAgICAgKHdvcmtmbG93OiBhbnkpID0+IHdvcmtmbG93ICE9PSAnSVNTVUUnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFsbG93ZWRXb3JrZmxvd3MgPSB0aGlzLmFsbG93ZWRXb3JrZmxvd3MuZmlsdGVyKFxuICAgICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3cgIT09ICdSRVBPUlRfQV9DQVNFJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1c2VyTGlzdEVtaXR0ZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXNlckxpc3QgPSBldmVudDtcbiAgfVxuXG4gIGRlY2lkZVZpZXdNb3JlT3B0aW9uKHR5cGU/OiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIHRoaXMuY2xvc2VPbkVzYyA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoWydDTVInLCAnQU1SJywgJ0FBQScsICdJQUEnLCAnUkFDJ10uaW5jbHVkZXModGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpKSB7XG4gICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gZmFsc2U7XG4gICAgICBpZiAodHlwZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhc2VSZXBvcnRlZEJ5KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlcG9ydEJ5ID0gZXZlbnQ7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgaWYodGhpcy5hZGRUb0Nhc2VNb2RlID09PSAnQUNXJyB8fCB0aGlzLmFkZFRvQ2FzZU1vZGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5yZXBvcnRDYXNlLmFkZFRvQ2FzZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKSB7XG4gICAgICBjYXNlICdBQVInOlxuICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQuc3VibWl0UmlzaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xBSSc6XG4gICAgICAgIHRoaXMubG9nSXNzdWVDb21wb25lbnQuYWRkSXNzdWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVInOlxuICAgICAgICB0aGlzLmNvbXBsaWFuY2Uuc3VibWl0UmVzcG9uc2liaWxpdHkoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVAnOlxuICAgICAgICB0aGlzLnBvbGljeS5zdWJtaXRQb2xpY3koKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBQUEnOlxuICAgICAgICB0aGlzLndvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudC5zdWJtaXRBc3Nlc3NtZW50KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FQUic6IHtcbiAgICAgICAgdGhpcy5wcm9ncmFtLnNhdmVQcm9ncmFtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnR1JDJzoge1xuICAgICAgICB0aGlzLmdyY09iamVjdC5zYXZlR1JDT2JqZWN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkFDJzoge1xuICAgICAgICB0aGlzLnJlcG9ydENhc2UucmVwb3J0Q2FzZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIGNhc2UgJ0lBQSc6XG4gICAgICAvLyAgIHRoaXMuaW1wb3J0QW5Bc3Nlc3NtZW50LnN1Ym1pdEFzc2Vzc21lbnQoKTtcbiAgICB9XG4gIH1cblxuICBlZGl0V29ya2Zsb3coKSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSAhdGhpcy53b3JrZmxvd0xpc3Q7XG4gICAgY29uc3QgZHJvcGRvd24gPSB0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdGhpcy5kcm9wZG93bkxlZnQgPSBkcm9wZG93bi5sZWZ0O1xuICAgIHRoaXMuZHJvcGRvd25Ub3AgPSBkcm9wZG93bi50b3AgKyBkcm9wZG93bi5oZWlnaHQ7XG4gICAgdGhpcy5kcm9wZG93bldpZHRoID0gZHJvcGRvd24ud2lkdGg7XG4gIH1cbiAgY2xvc2VXb3JrZmxvd0xpc3QoKSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSBmYWxzZTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgc2l6ZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSBmYWxzZTtcbiAgfVxuICBjaGFuZ2VXb3JrZmxvdyhldnQ6IGFueSwgc2VsZWN0ZWRXb3JrZmxvdzogYW55KSB7XG4gICAgaWYgKHNlbGVjdGVkV29ya2Zsb3c/LmNvZGUgPT09IHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiAnSWYgeW91IGNoYW5nZSB0aGUgd29ya2Zsb3csIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nLFxuICAgICAgYWN0aW9uOiAnV09SS0ZMT1dfQ0hBTkdFJyxcbiAgICAgIGRhdGE6IHNlbGVjdGVkV29ya2Zsb3csXG4gICAgfTtcbiAgfVxuXG4gIGNvbmZpcm1Xb3JrZmxvd0NoYW5nZShldnQ6IGFueSkge1xuICAgIGlmIChldnQuYWN0aW9uID09PSAnWUVTJykge1xuICAgICAgdGhpcy5jbG9zZU9uRXNjID0gdHJ1ZTtcbiAgICAgIHN3aXRjaCAoZXZ0LnBheWxvYWQuYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ1dPUktGTE9XX0NIQU5HRSc6XG4gICAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSBldnQ/LnBheWxvYWQ/LmRhdGEgPz8gbnVsbDtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLnJlc2V0QWxsKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGVjaWRlVmlld01vcmVPcHRpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRURJVF9SSVNLJzpcbiAgICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQuY3JlYXRlUmlzayh0aGlzLnJpc2tDb21wb25lbnQucmlza0Zvcm0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQT0xJQ1lfUE9SVEFMJzpcbiAgICAgICAgICB0aGlzLnBvbGljeS5jb25maXJtUG9saWN5UG9ydGFsKGV2dC5hY3Rpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdXT1JLRkxPV19DTE9TRSc6XG4gICAgICAgICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoZXZ0Py5wYXlsb2FkPy5kYXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2hlY2twb2ludCc6XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVIuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgfHxcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UUycpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlbW92ZUNoZWNrcG9pbnQoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdST0xFJzpcbiAgICAgICAgICB0aGlzLnByb2dyYW0ucmVtb3ZlKGV2dC5wYXlsb2FkLmRhdGEsICdST0xFJyk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnbmV3LWNoZWNrcG9pbnRzJzpcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0FTU0VTU01FTlQnICYmICFldnQucGF5bG9hZC5pc0RhdGFSZW1vdmVkKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UUycgJiYgIWV2dC5wYXlsb2FkLmlzRGF0YVJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBldnQucGF5bG9hZC5pc0NoZWNrcG9pbnRDaGVja2VkICYmXG4gICAgICAgICAgICAgIG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBvcHRpb24uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVtb3ZlKCduZXctY2hlY2twb2ludHMnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYXNzaWduZWVUeXBlQ2hhbmdlJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTEwnO1xuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPVxuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnNldExpc3QoXG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2Uub3JpZ2luYWxBc3NpZ25lZSxcbiAgICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ2Fzc2lnbmVlR3JvdXBzJ11bJ2xpc3QnXSA9XG4gICAgICAgICAgICAgIFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzZXF1ZW50aWFsJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FueVJldmlld2VyJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGV2dC5wYXlsb2FkLmFjdGlvbikge1xuICAgICAgICBjYXNlICdQT0xJQ1lfUE9SVEFMJzpcbiAgICAgICAgICB0aGlzLnBvbGljeS5jb25maXJtUG9saWN5UG9ydGFsKGV2dC5hY3Rpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhc3NpZ25lZVR5cGVDaGFuZ2UnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cbiAgICAgICAgICAgICdBTllfT05FJztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzZXF1ZW50aWFsJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhbnlSZXZpZXdlcic6XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlWydyZXNwb25zaWJpbGl0eUZvcm0nXVsncmV2aWV3ZXJzJ11bXG4gICAgICAgICAgICAnc2VxdWVudGlhbFdvcmtmbG93J1xuICAgICAgICAgIF0gPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgYWN0aW9uOiAnJyxcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgfTtcbiAgICByZXR1cm4gZXZ0O1xuICB9XG5cbiAgc2V0V29ya2Zsb3cod29ya0Zsb3dDb2RlOiBhbnksIHdvcmtGbG93TGlzdDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRXb3JrZmxvdyA9IHdvcmtGbG93TGlzdC5maW5kKFxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudD8uY29kZSA9PT0gd29ya0Zsb3dDb2RlXG4gICAgKTtcbiAgICBzZWxlY3RlZFdvcmtmbG93XG4gICAgICA/ICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHNlbGVjdGVkV29ya2Zsb3cpXG4gICAgICA6ICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IG51bGwpO1xuICAgIHJldHVybiBzZWxlY3RlZFdvcmtmbG93O1xuICB9XG5cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHN3aXRjaCAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0FBUic6XG4gICAgICAgIHRoaXMucmlza0NvbXBvbmVudD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xBSSc6XG4gICAgICAgIHRoaXMubG9nSXNzdWVDb21wb25lbnQ/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSQUMnOlxuICAgICAgICB0aGlzLnJlcG9ydENhc2UuYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUic6XG4gICAgICAgIGlmIChldmVudD8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTJykge1xuICAgICAgICAgIHRoaXMub25SZW1vdmluZ0NoZWNrcG9pbnQoJ2NoZWNrcG9pbnQnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQ/LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uY29kZSA9PT0gJ0FTU0VTU01FTlQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uaXNEaXNhYmxlZCA9IGV2ZW50LmNoZWNrZWRcbiAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICBpZiAoZXZlbnQuY2hlY2twb2ludF9uZXcgJiYgdGhpcy5jaGVja3BvaW50Q291bnQpIHtcbiAgICAgICAgICAgIHRoaXMub25SZW1vdmluZ0NoZWNrcG9pbnQoJ25ldy1jaGVja3BvaW50cycsIHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBDSEVDS1BPSU5UX0lOREVYID1cbiAgICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVIuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTX05FVyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgICAgICBpZiAoZXZlbnQuY2hlY2twb2ludF9uZXcpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNDaGVja2VkID0gZXZlbnQuY2hlY2tlZCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgICAgZXZlbnQuY2hlY2tlZCA9IGlzQ2hlY2tlZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVJbQ0hFQ0tQT0lOVF9JTkRFWF0gPSBldmVudDtcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XS5pc0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50Py5jb2RlID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZpbmRJbmRleChcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVJbaW5kZXhdLmlzRGlzYWJsZWQgPSBldmVudC5jaGVja2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZT8udG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgICAnY29tcGxpYW5jZV9hdWRpdCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1vcmVPcHRpb24/Lm1vcmVPcHRpb25zTGlzdD8uQ0FSPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uY29kZSA9PT0gJ0FTU0VTU01FTlQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVJbaW5kZXhdLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVJbaW5kZXhdLmNoZWNrZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2U/LmFkZE1vcmVJbmZvKFxuICAgICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21wbGlhbmNlPy5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FQJzpcbiAgICAgICAgdGhpcy5wb2xpY3k/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVBSJzpcbiAgICAgICAgdGhpcy5wcm9ncmFtPy5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnR1JDJzpcbiAgICAgICAgdGhpcy5ncmNPYmplY3Q/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcG9wdWxhdGVNb3JlT3B0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5tb3JlT3B0aW9uKSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb24ucG9wdWxhdGUoZXZlbnQpO1xuICAgIH1cbiAgfVxuICBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubW9yZU9wdGlvbj8uaGlkZUVsZW1lbnRzKGV2ZW50KTtcbiAgfVxuXG4gIHNob3dDb25maXJtYXRpb25Qb3B1cChjb25maWc6IENvbmZpcm1hdGlvbkFsZXJ0KSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIGJ1bGtVcGxvYWRCcm93c2UoZXZlbnQ6IGFueSkge1xuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgJ0FNUic6XG4gICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQudHJpZ2dlckJyb3dzZUZpbGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDTVInOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZC50cmlnZ2VyQnJvd3NlRmlsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0lBQSc6XG4gICAgICAgIHRoaXMuaW1wb3J0QW5Bc3Nlc3NtZW50LnRyaWdnZXJCcm93c2VGaWxlKCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvblJlc2V0Rm9ybSgpIHtcbiAgICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcbiAgICB0aGlzLmVudHJ1c3RCdXR0b25OYW1lID0gJ0VudHJ1c3QnO1xuICB9XG5cbiAgb25SZXNldEdSQ0Zvcm0oKSB7XG4gICAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XG4gIH1cbiAgc2hpZnRUb0VkaXRNb2RlKCkge1xuICAgIHRoaXMubW9kZSA9ICdFRElUJztcbiAgfVxuICBzY3JvbGxGb3JtKCkge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duUm93Py5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKT8udG9wIDwgMzgpIHtcbiAgICAgIHRoaXMuZHJvcGRvd25Sb3c/Lm5hdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdD8uYWRkKCdoaWRlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHJvcGRvd25Sb3c/Lm5hdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdD8ucmVtb3ZlKCdoaWRlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCB3aGljaCBtb3JlIG9wdGlvbnMgd2UgYXJlIHJlbW92aW5nLlxuICAgKiBAcGFyYW0gaXNDaGVja3BvaW50Q2hlY2tlZCAgaXMgdHJ1ZSBpZiB2YWx1ZSBjaGVja3BvaW50cyBpcyByZW1vdmVkIGJ5IGNsaWNraW5nIG9uIG1vcmUgb3B0aW9uc1xuICAgKi9cbiAgb25SZW1vdmluZ0NoZWNrcG9pbnQoXG4gICAgZXZlbnQ6IHN0cmluZyxcbiAgICBpc0NoZWNrcG9pbnRDaGVja2VkPzogYm9vbGVhbixcbiAgICBpc0RhdGFSZW1vdmVkPzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBsZXQgbXNnID0gJyc7XG4gICAgaWYgKGV2ZW50ID09PSAnbmV3LWNoZWNrcG9pbnRzJykge1xuICAgICAgbXNnID1cbiAgICAgICAgJ0lmIHlvdSBjaG9vc2UgdG8gcmVtb3ZlIHRoZXNlIENoZWNrcG9pbnRzLCB0aGV5IHdpbGwgYmUgZGVsZXRlZCBhbmQgY2Fubm90IGJlIHJlc3RvcmVkLiBIb3dldmVyLCB5b3Ugd2lsbCBzdGlsbCBiZSBhYmxlIHRvIGNyZWF0ZSBuZXcgQ2hlY2twb2ludHMgb3IgbGluayBhbiBBc3Nlc3NtZW50Lic7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1zZyA9XG4gICAgICAgICdJZiB5b3UgY2hvb3NlIHRvIHJlbW92ZSB0aGVzZSBjaGVja3BvaW50cywgdGhleSB3aWxsIGJlIGRlbGV0ZWQgYW5kIGNhbm5vdCBiZSByZXN0b3JlZC4nO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgYWN0aW9uOiBldmVudCxcbiAgICAgIGRhdGE6IHsgdHlwZTogJ3Jlc3BvbnNpYmlsaXR5Q2hlY2twb2ludCcgfSxcbiAgICAgIGlzQ2hlY2twb2ludENoZWNrZWQ6IGlzQ2hlY2twb2ludENoZWNrZWQgPz8gZmFsc2UsXG4gICAgICBpc0RhdGFSZW1vdmVkOiBpc0RhdGFSZW1vdmVkID8/IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBvblJlbW92aW5nUm9sZShldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IG1zZyA9ICcnO1xuICAgIGlmIChldmVudCkge1xuICAgICAgbXNnID0gJ0lmIHlvdSBjaGFuZ2UgdGhlIHJvbGVzLCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdvdWxkIGJlIGxvc3QuJztcbiAgICB9XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGFjdGlvbjogJ1JPTEUnLFxuICAgICAgZGF0YTogZXZlbnQsXG4gICAgfTtcbiAgfVxuXG4gIGlzQXNzZXNzbWVudERpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0FTU0VTU01FTlQnIHx8IG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycpIHtcbiAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGlzYWJsZU1vcmVPcHRpb25zKHdvcmtmbG93Q29kZTogYW55LCBkaXNhYmxlZEVsZW1lbnRzQ29kZTogYW55KSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QpLmluY2x1ZGVzKHdvcmtmbG93Q29kZSkpIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3Rbd29ya2Zsb3dDb2RlXS5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICBpZiAoZGlzYWJsZWRFbGVtZW50c0NvZGUuaW5jbHVkZXMob3B0aW9uPy5jb2RlKSkge1xuICAgICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGVja3BvaW50U2VsZWN0aW9uKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLmNoZWNrcG9pbnRDb3VudCA9IGV2ZW50O1xuICB9XG5cbiAgb25SY1NlbGVjdGVkKGlzUmNTZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNSQ1NlbGVjdGVkID0gaXNSY1NlbGVjdGVkO1xuICB9XG5cbiAgZmV0Y2hPcmdhbml6YXRpb25EZXRhaWxzKCkge1xuICAgIHRoaXMub3JnQ29tbW9uU2VydmljZT8uZ2V0T3JnRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm9yZ0RldGFpbHMgPSByZXM7XG4gICAgICAgIGlmIChyZXM/LmJ1c2luZXNzX2N5Y2xlc19hcnIgJiYgcmVzPy5idXNpbmVzc19jeWNsZXNfYXJyPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHJlcz8uYnVzaW5lc3NfY3ljbGVzX2Fyci5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uc2VsZWN0ZWRcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHNwbGl0dGVkID0gc2VsZWN0ZWRbMF0uYnVzaW5lc3NfY3ljbGU/LnNwbGl0KCctJyk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50QnVzaW5lc3NDeWNsZSA9IGAke3NwbGl0dGVkWzBdPy5zbGljZShcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApfSAtICR7c3BsaXR0ZWRbMV0/LnNsaWNlKDQpfWA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZ2V0VXNlckRldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdDb21tb25TZXJ2aWNlPy5nZXRPcmdVc2VySW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYXV0aC51c2VyRGV0YWlscyA9IHJlcztcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgb3JnYW5pemF0aW9uIHVzZXJzJywgZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3NpZ25lZVR5cGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgICdUaGlzIGFjdGlvbiB3aWxsIHJlc2V0IHRoZSBjaGFuZ2VzIGFuZCBhc3NpZ24gdGhlIHJlc3BvbnNpYmlsaXR5IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGFzc2lnbmVlLicsXG4gICAgICBhY3Rpb246ICdhc3NpZ25lZVR5cGVDaGFuZ2UnLFxuICAgICAgZGF0YToge30sXG4gICAgICBpc1JlZEFsZXJ0OiB0cnVlLFxuICAgIH07XG4gIH1cblxuICAvLyBldmVudCA9PiAnc2VxdWVudGlhbCcgfHwgJ2FueVJldmlld2VyJ1xuICBvblJldmlld2VyQ2hhbmdlKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb21tb25UZXh0OiBzdHJpbmcgPVxuICAgICAgJ09uY2UgY29uZmlybWVkLCB0aGUgbmV3IHJldmlldyB3b3JrZmxvdyB3aWxsIGJlIGFwcGxpY2FibGUgZm9yIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUgcmV2aWV3IGR1ZSBkYXRlcy4nO1xuICAgIGNvbnN0IG1zZyA9XG4gICAgICBjb21tb25UZXh0ICtcbiAgICAgIChldmVudCA9PT0gJ2FueVJldmlld2VyJ1xuICAgICAgICA/IGBJZiBhbnkgcmV2aWV3ZXIgaGFkIGNvbXBsZXRlZCB0aGUgcmV2aWV3LCB0aGUgY3VycmVudCByZXZpZXcgZHVlIGRhdGUgd2lsbCBiZSBjbG9zZWQgYW5kIHRoZSByZXZpZXcgc3RhdHVzIHdpbGwgYmUgdXBkYXRlZCB0byAnQ29tcGxldGVkJy5gXG4gICAgICAgIDogJycpO1xuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiBtc2csXG4gICAgICBhY3Rpb246IGV2ZW50LFxuICAgIH07XG4gIH1cblxuICBpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZnkoKSB7XG4gICAgaWYgKHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9yZXNwb25zaWJpbGl0eV9zaW1wbGlmaWNhdGlvbicpKSB7XG4gICAgICB0aGlzLndvcmtmbG93VHlwZUxpc3RbMF0ud29ya2Zsb3dOYW1lID0gJ0FkZCBhIFJlc3BvbnNpYmlsaXR5JztcbiAgICAgIHRoaXMud29ya2Zsb3dUeXBlTGlzdFsxXS53b3JrZmxvd05hbWUgPSAnQWRkIE11bHRpcGxlIFJlc3BvbnNpYmlsaXRpZXMnO1xuICAgIH1cbiAgfVxufVxuIiwiPGFwcC1zbmFjay1iYXI+PC9hcHAtc25hY2stYmFyPlxuPGRpdiBjbGFzcz1cIndvcmtmbG93LWVuZ2luZS1vdmVybGF5XCI+PC9kaXY+XG48ZGl2XG4gIGNsYXNzPVwid29ya2Zsb3ctZW5naW5lXCJcbiAgW2NsYXNzLmFuaW1hdGVdPVwiYW5pbWF0aW9uXCJcbiAgW2NsYXNzLmJnXT1cIlxuICAgICghaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCB8fCByaXNrQnVsa1VwbG9hZD8uc2hvd0NhdGVnb3J5TGlzdCkgJiZcbiAgICAhcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzXG4gIFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cIndvcmtmbG93LWVuZ2luZS1jb250YWluZXJcIlxuICAgIFtuZ1N3aXRjaF09XCJjdXJyZW50V29ya2Zsb3c/LmNvZGVcIlxuICAgIFtjbGFzcy53aXRoLXByZXZpZXctYXNzZXNzbWVudF09XCIoYXV0aD8ucHJldmlld1BhbmVsIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICBbY2xhc3Mud2l0aC1mcmVxdWVuY3ldPVwiXG4gICAgICBjb21wbGlhbmNlPy5hY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeScgfHxcbiAgICAgIGNvbXBsaWFuY2U/LmFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knIHx8XG4gICAgICByaXNrQ29tcG9uZW50Py5hY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeScgfHxcbiAgICAgIHBvbGljeT8uYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knIHx8XG4gICAgICBwb2xpY3k/LmFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXG4gICAgXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIChjbGljayk9XCJjbG9zZVdvcmtmbG93RW5naW5lKClcIlxuICAgICAgaWQ9XCJjbG9zZS13b3JrZmxvdy1lbmdpbmUtYnRuXCJcbiAgICAgIGNsYXNzPVwiY2xvc2VcIlxuICAgICAgW2FwcFRvb2x0aXBdPVwiJ1tFc2NdIHRvIGNsb3NlJ1wiXG4gICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgIGRlbGF5PVwiMFwiXG4gICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGUgfHwgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcbiAgICAgIFwiXG4gICAgICBbY2xhc3Muc21pbGV5LW9wZW5lZF09XCJcbiAgICAgICAgcmlza0NvbXBvbmVudD8uc2hvd1NtaWxleSB8fFxuICAgICAgICBsb2dJc3N1ZUNvbXBvbmVudD8uc2hvd1NtaWxleSB8fFxuICAgICAgICBjb21wbGlhbmNlPy5zaG93U21pbGV5IHx8XG4gICAgICAgIHBvbGljeT8uc2hvd0NyZWF0ZURvY3VtZW50cyB8fFxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zaG93RXhjZWwgfHxcbiAgICAgICAgcmlza0J1bGtVcGxvYWQ/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcmlza0J1bGtVcGxvYWQ/LnNob3dFeGNlbCB8fFxuICAgICAgICBwcm9ncmFtPy5zaG93U21pbGV5IHx8XG4gICAgICAgIGltcG9ydEFuQXNzZXNzbWVudD8uc2hvd1NtaWxleVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzZjs8L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhdWlLaXRTZXJ2aWNlLmlzU21pbGV5T25cIlxuICAgICAgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmUtbW9yZVwiXG4gICAgICBbaGlkZGVuXT1cInNob3dNb3JlT3B0aW9uID09PSBmYWxzZSB8fCBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGVcIlxuICAgICAgW2NsYXNzLnJlYWQtb25seV09XCJ1aUtpdFNlcnZpY2U/LmlzTG9hZGVyXCJcbiAgICA+XG4gICAgICA8YXBwLW1vcmUtb3B0aW9uXG4gICAgICAgICNtb3JlT3B0aW9uXG4gICAgICAgIFtjdXJyZW50V29ya2Zsb3ddPVwiY3VycmVudFdvcmtmbG93Py5jb2RlXCJcbiAgICAgICAgW2lzRWRpdE1vZGVdPVwibW9kZSA9PT0gJ0VESVQnXCJcbiAgICAgICAgW2lzUkNTZWxlY3RlZF09XCJcbiAgICAgICAgICBpc1JDU2VsZWN0ZWQgfHxcbiAgICAgICAgICAoY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnR1JDJyAmJlxuICAgICAgICAgICAgZ3JjT2JqZWN0Py5saXN0T2JqZWN0LlJDLnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMClcbiAgICAgICAgXCJcbiAgICAgICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgIChzZWxlY3RlZE9wdGlvbik9XCJhZGRNb3JlSW5mbygkZXZlbnQpXCJcbiAgICAgICAgW2lzUHJvZ3JhbVNlbGVjdGVkXT1cInNlbGVjdGVkUHJvZ3JhbVwiXG4gICAgICAgIFthbGxvd2VkRmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICAgICAgW29yZ0RldGFpbHNEYXRhXT1cIm9yZ0RldGFpbHNcIlxuICAgICAgICBbaXNBdHRyaWJ1dGVzQXZhaWxhYmxlXT1cIlxuICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0dSQycgJiZcbiAgICAgICAgICBncmNPYmplY3Q/LnNlbGVjdGVkQXR0cmlidXRlcz8uYXR0cmlidXRlcz8ubGVuZ3RoID4gMFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgPC9hcHAtbW9yZS1vcHRpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmUtZm9ybVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY29uZmlybWF0aW9uQWxlcnRDb25maWc/LmlzVmlzaWJsZVwiXG4gICAgICBbY2xhc3Mubm8tc2hhZG93XT1cIlxuICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT0gJ0FNUicgfHxcbiAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09ICdDTVInIHx8XG4gICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PSAnQUFBJyB8fFxuICAgICAgICB1aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiB8fFxuICAgICAgICBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIChzY3JvbGwpPVwic2Nyb2xsRm9ybSgpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgIVsnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsICdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgb3BlbmVkRnJvbVxuICAgICAgICAgICAgKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIiEodWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gfHwgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgICAgICAgICNkcm9wZG93blJvd1xuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAobW9kZSA9PT0gJ0VESVQnIHx8XG4gICAgICAgICAgICAgICAgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgfHxcbiAgICAgICAgICAgICAgICBkaXNhYmxlV29ya2Zsb3dDaGFuZ2UgfHxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFByb2dyYW0pICYmXG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiY3VycmVudFdvcmtmbG93XCI+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiICNkcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFdvcmtmbG93Py5jb2RlICE9PSAnQUNUVydcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgICAgICAgICAgID5TZWxlY3QgYSBXb3JrZmxvdzxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0FDVFcnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgICAgICAgICAgICA+QXNzaWduIGEgQ2FzZSB0byBXb3JrZmxvdzxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICA+Kjwvc3BhblxuICAgICAgICAgICAgICAgICAgPjwvbGFiZWxcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY3VycmVudFdvcmtmbG93ICYmIGN1cnJlbnRXb3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0V29ya2Zsb3coKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYSBXb3JrZmxvd1wiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkIGZpcnN0LWZpZWxkXCIgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3dcIj5cbiAgICAgICAgICAgICAgICAgIDwhLS0ge3tjdXJyZW50V29ya2Zsb3cgfCBqc29ufX0gLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dCBuby13aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY3VycmVudFdvcmtmbG93Py53b3JrZmxvd05hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZmxvd1R5cGUgPT09ICdBQ1RXJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICc8c3Ryb25nPkNhc2UgUmVwb3J0ZWQgQnk6IDwvc3Ryb25nPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBvcnRCeSB8IHVzZXJQaXBlIDogdXNlckxpc3QpPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRXb3JrZmxvdz8ud29ya2Zsb3dOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIj57e2N1cnJlbnRXb3JrZmxvdz8ud29ya2Zsb3dOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0V29ya2Zsb3coKVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgIXdvcmtmbG93TGlzdCAmJlxuICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZEZyb20gIT0gJ0FTU0VTU01FTlQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlICE9PSAnQUNUVydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09ICdDQVBSJyAmJlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50QnVzaW5lc3NDeWNsZSAmJlxuICAgICAgICAgICAgICAgICAgICAhcHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3JhbS1idXNpbmVzcy1jeWNsZSB2eC1mcy0xMSB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wdC0yIHZ4LXBiLTEgdngtcGwtMiB2eC1wci0xXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LWZzLTEyIHZ4LW1yLTFcIj4mI3hlOTYzOzwvaT4gVGhpcyBwcm9ncmFtIGlzXG4gICAgICAgICAgICAgICAgICBiZWluZyBzZXQtdXAgZm9yIHRoZSBidXNpbmVzcyBjeWNsZTpcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnctNjAwIHZ4LW1sLTFcIj57e1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50QnVzaW5lc3NDeWNsZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8IS0tIDxhcHAtY3JlYXRlLWRvY3VtZW50cz48L2FwcC1jcmVhdGUtZG9jdW1lbnRzPiAtLT5cbiAgICAgICAgPCEtLSA8YXBwLWJ1bGstdmlldz48L2FwcC1idWxrLXZpZXc+IC0tPlxuICAgICAgICA8IS0tIDxhcHAtYnVsay1yZXNwb25zaWJpbGl0eS12aWV3PjwvYXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz4gLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctY29tcGxpYW5jZVxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCJcbiAgICAgICAgICBbaXNFbnRydXN0XT1cImVudHJ1c3RCdXR0b25OYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2VudHJ1c3QnXCJcbiAgICAgICAgICBbcmVzcG9uc2liaWxpdHlJZF09XCJpZFwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgW2ZyYW1ld29ya0RldGFpbHNdPVwiZnJhbWV3b3JrRGV0YWlsc1wiXG4gICAgICAgICAgW2Fzc2Vzc21lbnREZXRhaWxzXT1cImFzc2Vzc21lbnREZXRhaWxzXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FSJ1wiXG4gICAgICAgICAgI3Jlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgICBbc2VsZWN0ZWRSQ109XCJzZWxlY3RlZFJDXCJcbiAgICAgICAgICBbY2xvc2VPbkVzY109XCJjbG9zZU9uRXNjXCJcbiAgICAgICAgICAoYXNzaWduZWVUeXBlQ2hhbmdlKT1cImFzc2lnbmVlVHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAob25SZXZpZXdlclR5cGVDaGFuZ2UpPVwib25SZXZpZXdlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICAgICAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICAocmNTZWxlY3RlZCk9XCJvblJjU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKHJlc2V0Rm9ybSk9XCJvblJlc2V0Rm9ybSgpXCJcbiAgICAgICAgICAob25SZW1vdmluZ0NoZWNrcG9pbnQpPVwib25SZW1vdmluZ0NoZWNrcG9pbnQoJGV2ZW50LCBmYWxzZSwgdHJ1ZSlcIlxuICAgICAgICAgIChpc0Fzc2Vzc21lbnREaXNhYmxlZCk9XCJpc0Fzc2Vzc21lbnREaXNhYmxlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoY2hlY2twb2ludENvdW50VXBkYXRlZCk9XCJjaGVja3BvaW50Q291bnQgPSAkZXZlbnRcIlxuICAgICAgICAgIFtzZWxlY3RlZFByb2dyYW1dPVwic2VsZWN0ZWRQcm9ncmFtXCJcbiAgICAgICAgPjwvYXBwLXdvcmtmbG93LWNvbXBsaWFuY2U+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctcmlza1xuICAgICAgICAgIFtzZWNvbmRhcnlPcGVuUG9ydGFsXT1cInNlY29uZGFyeU9wZW5Qb3J0YWxcIlxuICAgICAgICAgIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0FBUidcIlxuICAgICAgICAgICNyaXNrXG4gICAgICAgICAgKHNob3dDb25maXJtYXRpb25BbGVydCk9XCJzaG93Q29uZmlybWF0aW9uUG9wdXAoJGV2ZW50KVwiXG4gICAgICAgICAgKGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyk9XCJoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChyZWZyZXNoRm9ybSk9XCJvblJlc2V0Rm9ybSgpXCJcbiAgICAgICAgICAocmNTZWxlY3RlZCk9XCJvblJjU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgW3Jpc2tJZF09XCJpZFwiXG4gICAgICAgICAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXG4gICAgICAgID48L2FwcC13b3JrZmxvdy1yaXNrPlxuICAgICAgICA8YXBwLXdvcmtmbG93LXBvbGljeVxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUCdcIlxuICAgICAgICAgICNwb2xpY3lcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCJcbiAgICAgICAgICAoc2hpZnRUb0VkaXRNb2RlKT1cInNoaWZ0VG9FZGl0TW9kZSgpXCJcbiAgICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICAgICAgICBbcG9saWN5SWRdPVwiaWRcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFt0ZW1wbGF0ZUlkXT1cInRlbXBsYXRlSWRcIlxuICAgICAgICAgIFtjb252ZXJ0RmlsZURhdGFdPVwiY29udmVydEZpbGVEYXRhXCJcbiAgICAgICAgICBbc2VsZWN0ZWRDYXRlZ29yeV09XCJzZWxlY3RlZENhdGVnb3J5XCJcbiAgICAgICAgICBbaXNTZW5kRm9yQXR0ZXN0YXRpb25dPVwiaXNTZW5kRm9yQXR0ZXN0YXRpb25cIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgID48L2FwcC13b3JrZmxvdy1wb2xpY3k+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctc3VydmV5LWZvcm1cbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUydcIlxuICAgICAgICAgICNzdXJ2ZXlGb3JtXG4gICAgICAgID48L2FwcC13b3JrZmxvdy1zdXJ2ZXktZm9ybT5cbiAgICAgICAgPGFwcC1hZGQtbXVsdGlwbGUtcmlza1xuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0FNUidcIlxuICAgICAgICAgICNtdWx0aXBsZVJpc2tcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxuICAgICAgICA+PC9hcHAtYWRkLW11bHRpcGxlLXJpc2s+XG4gICAgICAgIDwhLS0gPGFwcC1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHkgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCIgKm5nU3dpdGNoQ2FzZT1cIidDTVInXCIgI211bHRpcGxlUmVzcG9uc2liaWxpdHk+XG4gICAgICAgICAgICAgICAgPC9hcHAtYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5PiAtLT5cblxuICAgICAgICA8bGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXJcbiAgICAgICAgICBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiXG4gICAgICAgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NNUidcIlxuICAgICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxuICAgICAgICAgICNtdWx0aXBsZVJlc3BvbnNpYmlsaXR5XG4gICAgICAgID48L2xpYi1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyPlxuICAgICAgICA8IS0tIE5ldyBMb2cgYW4gSXNzdWUgLS0+XG4gICAgICAgIDxhcHAtbG9nLWFuLWlzc3VlXG4gICAgICAgICAgW2lzc3VlRGV0YWlsc109XCJpc3N1ZURhdGFcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInTEFJJ1wiXG4gICAgICAgICAgW3JlcG9uc2liaWxpdHlEYXRhXT1cInJlcG9uc2liaWxpdHlEYXRhXCJcbiAgICAgICAgICBbYXNzZXNzbWVudFF1ZXN0aW9uXT1cImFzc2Vzc21lbnRRdWVzdGlvblwiXG4gICAgICAgICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgW3NvdXJjZV09XCJzb3VyY2VcIlxuICAgICAgICAgIFtpc3N1ZUlkXT1cImlkXCJcbiAgICAgICAgICAjbG9nQW5Jc3N1ZVxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgWyhtb2RlKV09XCJtb2RlXCJcbiAgICAgICAgPlxuICAgICAgICA8L2FwcC1sb2ctYW4taXNzdWU+XG4gICAgICAgIDwhLS0gT2xkIExvZyBhbiBpc3N1ZSAtLT5cbiAgICAgICAgPCEtLSA8YXBwLWxvZy1hbi1pc3N1ZSAqbmdTd2l0Y2hDYXNlPVwiJ0xBSSdcIiBbcmVzcG9uc2liaWxpdGllc0RhdGFdPVwicmVwb25zaWJpbHR5RGF0YVwiIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIlxuICAgICAgICAgICAgICAgICNsb2dBbklzc3VlIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9hcHAtbG9nLWFuLWlzc3VlPiAtLT5cblxuICAgICAgICA8YXBwLXdvcmtmbG93LWFzc2Vzc21lbnRcbiAgICAgICAgICBbYXNzZXNzbWVudElkXT1cImlkXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidBQUEnXCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHJlZnJlc2hGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgICNhc3Nlc3NtZW50XG4gICAgICAgID48L2FwcC13b3JrZmxvdy1hc3Nlc3NtZW50PlxuICAgICAgICA8YXBwLWltcG9ydC1hbi1hc3Nlc3NtZW50XG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInSUFBJ1wiXG4gICAgICAgICAgKHNob3dDb25maXJtYXRpb25BbGVydCk9XCJzaG93Q29uZmlybWF0aW9uUG9wdXAoJGV2ZW50KVwiXG4gICAgICAgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChyZWZyZXNoRm9ybSk9XCJvblJlc2V0Rm9ybSgpXCJcbiAgICAgICAgICAjaW1wb3J0QXNzZXNzbWVudFxuICAgICAgICA+PC9hcHAtaW1wb3J0LWFuLWFzc2Vzc21lbnQ+XG4gICAgICAgIDwhLS0gPGFwcC13b3JrZmxvdy1wcm9ncmFtICNwcm9ncmFtICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIiAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIj48L2FwcC13b3JrZmxvdy1wcm9ncmFtPiAtLT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1wcm9ncmFtXG4gICAgICAgICAgI3Byb2dyYW1cbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCJcbiAgICAgICAgICBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCJcbiAgICAgICAgICBbYWxsb3dlZEZlYXR1cmVdPVwiZmVhdHVyZVwiXG4gICAgICAgICAgKGRpc2FibGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyk9XCJkaXNhYmxlTW9yZU9wdGlvbnMoJ0NBUFInLCAkZXZlbnQpXCJcbiAgICAgICAgICBbcHJvZ3JhbVR5cGVdPVwicHJvZ3JhbVR5cGVcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHJlZnJlc2hGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFtwcm9ncmFtSWRdPVwiaWRcIlxuICAgICAgICAgIChvblJlbW92aW5nUm9sZSk9XCJvblJlbW92aW5nUm9sZSgkZXZlbnQpXCJcbiAgICAgICAgICBbY2FuRnJhbWV3b3JrQ2hhbmdlXT1cImNhbkZyYW1ld29ya0NoYW5nZVwiXG4gICAgICAgICAgW2FkZFRvUHJvZ3JhbURldGFpbHNdPVwiYWRkVG9Qcm9ncmFtRGV0YWlsc1wiXG4gICAgICAgID48L2FwcC13b3JrZmxvdy1wcm9ncmFtPlxuXG4gICAgICAgIDwhLS0gR1JDIE9iamVjdCAtLT5cbiAgICAgICAgPGxpYi1ncmMtb2JqZWN0LWNvbnRhaW5lclxuICAgICAgICAgICNncmNPYmplY3RcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0dSQydcIlxuICAgICAgICAgIFtncmNUeXBlXT1cImdyY1R5cGVcIlxuICAgICAgICAgIFtNT0RFXT1cIm1vZGVcIlxuICAgICAgICAgIFtJRF09XCJpZFwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChyZXNldEZvcm0pPVwib25SZXNldEdSQ0Zvcm0oKVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgIChoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKCRldmVudClcIlxuICAgICAgICA+PC9saWItZ3JjLW9iamVjdC1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBSZXBvcnQgYSBDYXNlIC0tPlxuICAgICAgICA8YXBwLXdvcmtmbG93LWNhc2VcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1JBQydcIlxuICAgICAgICAgICNyZXBvcnRDYXNlXG4gICAgICAgICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgW3NvdXJjZV09XCJzb3VyY2VcIlxuICAgICAgICAgIFtjYXNlSWRdPVwiaWRcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIlxuICAgICAgICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCJcbiAgICAgICAgICBbY2FzZVR5cGVQZXJtaXNzaW9uXT1cImNhc2VUeXBlUGVybWlzc2lvblwiXG4gICAgICAgICAgW3dvcmtmbG93VHlwZV09XCInUkFDJ1wiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYXBwLXdvcmtmbG93LWNhc2U+XG4gICAgICAgIDwhLS0gQXNzaWduIGNhc2UgdG8gd29ya2Zsb3cgLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctY2FzZVxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQUNUVydcIlxuICAgICAgICAgICNyZXBvcnRDYXNlXG4gICAgICAgICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgW3NvdXJjZV09XCJzb3VyY2VcIlxuICAgICAgICAgIFtjYXNlSWRdPVwiaWRcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFt3b3JrZmxvd1R5cGVdPVwiJ0FDVFcnXCJcbiAgICAgICAgICBbcmVzcG9uc2liaWxpdHlEYXRhXT1cInJlcG9uc2liaWxpdHlEYXRhXCJcbiAgICAgICAgICBbYXNzZXNzbWVudFF1ZXN0aW9uXT1cImFzc2Vzc21lbnRRdWVzdGlvblwiXG4gICAgICAgICAgW2Nhc2VUeXBlUGVybWlzc2lvbl09XCJjYXNlVHlwZVBlcm1pc3Npb25cIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChjYXNlUmVwb3J0ZWRCeSk9XCJjYXNlUmVwb3J0ZWRCeSgkZXZlbnQpXCJcbiAgICAgICAgICAodXNlckxpc3RFbWl0dGVyKT1cInVzZXJMaXN0RW1pdHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICA+PC9hcHAtd29ya2Zsb3ctY2FzZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlsnUkFDJywgJ0FDVFcnXS5pbmNsdWRlcyhjdXJyZW50V29ya2Zsb3c/LmNvZGUpXCJcbiAgICAgICAgY2xhc3M9XCJ2eC1kLWZsZXhcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJjYW5jZWxcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICBDQU5DRUxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwic3VibWl0KClcIlxuICAgICAgICA+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIG1vZGUgPT09IFwiRURJVFwiICYmIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gXCJSQUNcIlxuICAgICAgICAgICAgICA/IFwiVXBkYXRlXCJcbiAgICAgICAgICAgICAgOiBcIlJlcG9ydFwiXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdWJtaXRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0FBUidcIlxuICAgICAgICAoY2xpY2spPVwic3VibWl0KClcIlxuICAgICAgPlxuICAgICAgICB7e1xuICAgICAgICAgIG1vZGUgPT09IFwiRURJVFwiICYmIG9wZW5lZEZyb20gIT09IFwiTU9WRV9UT19SRUdJU1RFUlwiXG4gICAgICAgICAgICA/IFwiVXBkYXRlXCJcbiAgICAgICAgICAgIDogXCJBZGRcIlxuICAgICAgICB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3VibWl0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8XG4gICAgICAgICAgIXJpc2tCdWxrVXBsb2FkPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwiYnVsa1VwbG9hZEJyb3dzZSgnQU1SJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0FNUidcIlxuICAgICAgPlxuICAgICAgICBCcm93c2VcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJidWxrVXBsb2FkQnJvd3NlKCdDTVInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ01SJ1wiXG4gICAgICA+XG4gICAgICAgIEJyb3dzZVxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gVGhpcyBoYXMgdGVybmFyeSBvcGVyYXRpb24gdG8gaGFuZGxlIHRoZSBib3RoIHNjZW5hcmlvcyBvZiBob3cgaXQgd29ya3Mgd2l0aCBjb21wbGlhbmNlIGFuZCBwcm9ncmFtIG1vZHVsZSwgcGxlYXNlIGRvbid0IGNoYW5nZSB0aGlzLiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdWJtaXRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwic3VibWl0KClcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUidcIlxuICAgICAgPlxuICAgICAgICB7e1xuICAgICAgICAgIGVudHJ1c3RCdXR0b25OYW1lICE9PSBcIlwiICYmIG1vZGUgIT09IFwiRURJVFwiXG4gICAgICAgICAgICA/IGVudHJ1c3RCdXR0b25OYW1lXG4gICAgICAgICAgICA6IG1vZGUgPT09IFwiRURJVFwiXG4gICAgICAgICAgICA/IFwiVVBEQVRFXCJcbiAgICAgICAgICAgIDogXCJFbnRydXN0XCJcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQJ1wiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgbW9kZSA9PSBcIkVESVRcIlxuICAgICAgICAgICAgPyBpc1NlbmRGb3JBdHRlc3RhdGlvblxuICAgICAgICAgICAgICA/IFwiU2VuZCBmb3IgYXR0ZXN0YXRpb25cIlxuICAgICAgICAgICAgICA6IFwiVXBkYXRlXCJcbiAgICAgICAgICAgIDogXCJDb250aW51ZSB0byBkcmFmdFwiXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdWJtaXRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUydcIlxuICAgICAgPlxuICAgICAgICBDb250aW51ZSB0byBkcmFmdFxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3VibWl0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidMQUknXCJcbiAgICAgICAgKGNsaWNrKT1cInN1Ym1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJBZGRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3VibWl0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidBQUEnXCJcbiAgICAgICAgKGNsaWNrKT1cInN1Ym1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJDb250aW51ZSB0byBkcmFmdFwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdWJtaXRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwiYnVsa1VwbG9hZEJyb3dzZSgnSUFBJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0lBQSdcIlxuICAgICAgPlxuICAgICAgICBCcm93c2VcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCB8fCAhcHJvZ3JhbT8udmFsaWRcIlxuICAgICAgICAoY2xpY2spPVwic3VibWl0KCdDQVBSJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCJcbiAgICAgID5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJTYXZlXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCB8fCAhcHJvZ3JhbT8udmFsaWRcIlxuICAgICAgICAoY2xpY2spPVwic3VibWl0KCdDQVBSJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCJcbiAgICAgID5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJTYXZlXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ1N3aXRjaENhc2U9XCInR1JDJ1wiPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIlNhdmVcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgICAqbmdJZj1cIndvcmtmbG93TGlzdFwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZVdvcmtmbG93TGlzdCgpXCJcbiAgICAgICAgW3N0eWxlLnRvcC5weF09XCJkcm9wZG93blRvcFwiXG4gICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImRyb3Bkb3duTGVmdFwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJkcm9wZG93bldpZHRoXCJcbiAgICAgID5cbiAgICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tbGlzdFwiPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHdvcmtmbG93IG9mIHdvcmtmbG93VHlwZUxpc3RcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVdvcmtmbG93KCRldmVudCwgd29ya2Zsb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICpuZ0lmPVwid29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJ3b3JrZmxvdz8uY29kZVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gd29ya2Zsb3c/LmNvZGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB3b3JrZmxvdz8ud29ya2Zsb3dOYW1lIH19PC9hcHAtY3MtcmFkaW9cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3ZlcmxheVwiXG4gICAgICAgICpuZ0lmPVwid29ya2Zsb3dMaXN0XCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlV29ya2Zsb3dMaXN0KClcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxhcHAtY29uZmlybWF0aW9uLWFsZXJ0XG4gICAgICBpZD1cImNvbmZpcm1hdGlvbi1kaWFsb2d1ZVwiXG4gICAgICAoYWN0aW9uKT1cImNvbmZpcm1Xb3JrZmxvd0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICpuZ0lmPVwiY29uZmlybWF0aW9uQWxlcnRDb25maWc/LmlzVmlzaWJsZVwiXG4gICAgICBbbWVzc2FnZV09XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8ubWVzc2FnZVwiXG4gICAgICBbY29uZmlnXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnXCJcbiAgICA+PC9hcHAtY29uZmlybWF0aW9uLWFsZXJ0PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
824
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU2hELE1BQU0sT0FBTyxnQ0FBZ0M7SUFRM0Msa0JBQWtCLENBQUMsTUFBVztRQUM1QixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLEtBQUssRUFBRTtZQUNyQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUMzQjtJQUNILENBQUM7SUFDRCxZQUNTLFlBQTBCLEVBQ3pCLFFBQXlCLEVBQzFCLElBQWlCLEVBQ2hCLGdCQUEyQyxFQUMzQyxrQkFBc0MsRUFDdEMsMkJBQXdEO1FBTHpELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyQjtRQUMz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QUEyQjtzQkFEMUIsU0FBUzt1QkFBQyxZQUFZO2dCQUd2QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVQLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFdkMsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRWhCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFPZCxPQUFPO3NCQUFmLEtBQUs7Z0JBRytDLGdCQUFnQjtzQkFBcEUsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFrU25ELFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgVmlld0NoaWxkLFxuICBlZmZlY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkFsZXJ0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maXJtYXRpb24tYWxlcnQnO1xuaW1wb3J0IHsgSXNzdWVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pc3N1ZS1kYXRhJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctYXNzZXNzbWVudC93b3JrZmxvdy1hc3Nlc3NtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbXBvcnRBbkFzc2Vzc21lbnRDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1hc3Nlc3NtZW50L2ltcG9ydC1hbi1hc3Nlc3NtZW50L2ltcG9ydC1hbi1hc3Nlc3NtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd0NvbXBsaWFuY2VDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IFdvcmtmbG93UG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dSaXNrQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcmlzay93b3JrZmxvdy1yaXNrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dBbklzc3VlQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9sb2ctYW4taXNzdWUvbG9nLWFuLWlzc3VlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb3JlT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9tb3JlLW9wdGlvbi9tb3JlLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmNPYmplY3RDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy9ncmMtb2JqZWN0L2dyYy1vYmplY3QtY29udGFpbmVyL2dyYy1vYmplY3QtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlcG9ydEFDYXNlU2VydmljZSB9IGZyb20gJy4uL3JlcG9ydC1hLWNhc2Uvc2VydmljZXMvcmVwb3J0LWEtY2FzZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtmbG93Q2FzZUNvbXBvbmVudCB9IGZyb20gJy4uL3JlcG9ydC1hLWNhc2Uvd29ya2Zsb3ctY2FzZS93b3JrZmxvdy1jYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZXBvcnQtY2FzZS1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZjb21wbHktd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93RW5naW5lQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgaXNIb3N0UmVmcmVzaEFjdGl2ZSA9IHRydWU7XG4gIGlzUkNTZWxlY3RlZCA9IGZhbHNlO1xuICBmZWF0dXJlRmxhZ19ncm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkVG9DYXNlTW9kZSA9ICcnO1xuXG4gIHBlcm1pc3Npb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFsnJGV2ZW50J10pXG4gIHVubG9hZE5vdGlmaWNhdGlvbigkZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRVc2VyJyk7XG4gICAgaWYgKHRoaXMuaXNIb3N0UmVmcmVzaEFjdGl2ZSAmJiB0b2tlbikge1xuICAgICAgJGV2ZW50LnJldHVyblZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmdDb21tb25TZXJ2aWNlOiBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3J0QUNhc2VTZXJ2aWNlOiBSZXBvcnRBQ2FzZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2U6IFJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNoZWNrQ3VycmVudFdvcmtmbG93KCk7XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuY2FzZVR5cGVMb2FkZXIubmV4dCh0cnVlKTtcbiAgICB0aGlzLmNoZWNrUGVybWlzc2lvbigpXG4gIH1cbiAgQElucHV0KCkgd29ya2Zsb3dUeXBlID0gJyc7XG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcbiAgQElucHV0KCkgaWQgPSAnJztcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICdHTE9CQUwnO1xuICBASW5wdXQoKSBzb3VyY2U6ICdTQVAnIHwgJ1dPUktST09NJyB8ICcnID0gJyc7XG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBhbGxvd2VkV29ya2Zsb3dzOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgZnJhbWV3b3JrRGV0YWlsczogQXJyYXk8YW55PiA9IFtdOyAvLyBvbmx5IGZvciBjb21wbGlhbmNlIHBhcnQgZm9yIGZyYW1ld29ya1xuICBASW5wdXQoKSBzZWxlY3RlZFJDID0gJyc7XG4gIEBJbnB1dCgpIHNlY29uZGFyeU9wZW5Qb3J0YWwgPSAnJztcbiAgQElucHV0KCkgZGVmYXVsdFJpc2tUeXBlID0gJ05PUk1BTCc7XG4gIEBJbnB1dCgpIG1vdmVUb1JlZ2lzdGVyTW9kZSA9ICcnO1xuICBASW5wdXQoKSByZXBvbnNpYmlsaXR5RGF0YSA9IHtcbiAgICAvLyBvbmx5IHVzZWQgYnkgbG9nIGFuIGlzc3VlXG4gICAgcmVzcG9uc2liaWxpdHlJZDogbnVsbCxcbiAgICByZXNwb25zaWJpbGl0eU5hbWU6ICcnLFxuICAgIHJjSWQ6IG51bGwsXG4gICAgZHVlRGF0ZUlkOiAnJyxcbiAgfTtcbiAgQElucHV0KCkgYXNzZXNzbWVudFF1ZXN0aW9uOiBhbnkgPSB7XG4gICAgcXVlc3Rpb25OYW1lOiAnJyxcbiAgICBxdWVzdGlvbk51bWJlcjogJycsXG4gICAgcXVlc3Rpb25JZDogJycsXG4gICAgYXNzZXNzbWVudElkOiAnJyxcbiAgICBhdWRpdGVlSWQ6IG51bGwsXG4gIH07XG4gIEBJbnB1dCgpIHBpZCA9ICcnO1xuICBASW5wdXQoKSBwcm9ncmFtVHlwZTogbnVtYmVyID0gMTtcbiAgQElucHV0KCkgaXNzdWVEYXRhID0ge1xuICAgIGF1ZGl0UGxhbklkOiBudWxsLFxuICAgIGF1ZGl0UGxhbk5hbWU6ICcnLFxuICAgIHJjSWQ6IG51bGwsXG4gIH07XG4gIEBJbnB1dCgpIGVudHJ1c3RCdXR0b25OYW1lID0gJ0VudHJ1c3QnO1xuICBASW5wdXQoKSBjb25maWchOiBJc3N1ZUNvbmZpZ3VyYXRpb247XG4gIEBJbnB1dCgpIGNvbnZlcnRGaWxlRGF0YSA9IHt9O1xuICBASW5wdXQoKSBzZWxlY3RlZENhdGVnb3J5ID0gJyc7XG5cbiAgQElucHV0KCkgc2VsZWN0ZWRQcm9ncmFtOiBhbnkgPSBudWxsO1xuICBASW5wdXQoKSBjYW5GcmFtZXdvcmtDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlOyAvLyBpZiBmcmFtZXdvcmsgY2FuIEVkaXRlZCBvciBub3Q7IEZvciBDcmVhdGUgYSBwcm9ncmFtXG4gIEBJbnB1dCgpIC8qICAqL1xuICAvKiAgKi9cbiAgQElucHV0KClcbiAgYWRkVG9Qcm9ncmFtRGV0YWlsczoge1xuICAgIF9pZDogc3RyaW5nO1xuICAgIGZyYW1ld29ya19uYW1lOiBzdHJpbmc7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIH0gPSB7XG4gICAgX2lkOiAnJyxcbiAgICBmcmFtZXdvcmtfbmFtZTogJycsXG4gICAgaWQ6IDAsXG4gICAgdHlwZTogJycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICB9O1xuICBASW5wdXQoKSBncmNUeXBlOiAwIHwgMSB8IDIgfCAzID0gMDtcbiAgQElucHV0KCkgaXNTZW5kRm9yQXR0ZXN0YXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYXNzZXNzbWVudERldGFpbHM6IGFueTtcbiAgQElucHV0KCkgdGVtcGxhdGVJZDogc3RyaW5nID0gJyc7XG5cbiAgb3JnRGV0YWlsczogYW55O1xuICBwcm9ncmFtU2ltcGxpZnlGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmeUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2FzZUZlYXR1cmVGbGFnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgd29ya2Zsb3dMaXN0ID0gZmFsc2U7XG4gIHNob3dNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gIGRpc2FibGVXb3JrZmxvd0NoYW5nZSE6IGJvb2xlYW47XG4gIGNoZWNrcG9pbnRDb3VudDogbnVtYmVyID0gMDtcbiAgcmVwb3J0Qnk6IHN0cmluZyA9ICcnO1xuICBjdXJyZW50QnVzaW5lc3NDeWNsZTogYW55ID0gJyc7XG4gIGNhc2VUeXBlUGVybWlzc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdyaXNrJywgeyBzdGF0aWM6IGZhbHNlIH0pIHJpc2tDb21wb25lbnQhOiBXb3JrZmxvd1Jpc2tDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ211bHRpcGxlUmlzaycsIHsgc3RhdGljOiBmYWxzZSB9KVxuICByaXNrQnVsa1VwbG9hZCE6IEFkZE11bHRpcGxlUmlza0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbXVsdGlwbGVSZXNwb25zaWJpbGl0eScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQhOiBBZGRNdWx0aXBsZVJpc2tDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3Jlc3BvbnNpYmlsaXR5JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGNvbXBsaWFuY2UhOiBXb3JrZmxvd0NvbXBsaWFuY2VDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ21vcmVPcHRpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9yZU9wdGlvbiE6IE1vcmVPcHRpb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJykgZHJvcGRvd24hOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93blJvdycsIHsgc3RhdGljOiBmYWxzZSB9KSBkcm9wZG93blJvdyE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvbGljeScpIHBvbGljeSE6IFdvcmtmbG93UG9saWN5Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdsb2dBbklzc3VlJykgbG9nSXNzdWVDb21wb25lbnQhOiBMb2dBbklzc3VlQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdhc3Nlc3NtZW50JylcbiAgd29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50ITogV29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdpbXBvcnRBc3Nlc3NtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGltcG9ydEFuQXNzZXNzbWVudCE6IEltcG9ydEFuQXNzZXNzbWVudENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncHJvZ3JhbScsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm9ncmFtITogV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdncmNPYmplY3QnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZ3JjT2JqZWN0ITogR3JjT2JqZWN0Q29udGFpbmVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdyZXBvcnRDYXNlJykgcmVwb3J0Q2FzZSE6IFdvcmtmbG93Q2FzZUNvbXBvbmVudDtcblxuICBkcm9wZG93bkxlZnQhOiBhbnk7XG4gIGRyb3Bkb3duVG9wITogYW55O1xuICBkcm9wZG93bldpZHRoITogYW55O1xuICBjbG9zZU9uRXNjOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIGZlYXR1cmUgZmxhZ1xuICBASW5wdXQoKSBmZWF0dXJlOiBhbnk7XG4gIG9yZ2FuaXphdGlvbkRldGFpbHM6IGFueTtcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnRcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgW1xuICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQ/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLmNvbXBsaWFuY2U/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMuaW1wb3J0QW5Bc3Nlc3NtZW50Py5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLmxvZ0lzc3VlQ29tcG9uZW50Py5zaG93U21pbGV5LFxuICAgICAgXS5pbmNsdWRlcyh0cnVlKSB8fFxuICAgICAgdGhpcy5wcm9ncmFtPy5hY3RpdmVMaXN0IHx8XG4gICAgICB0aGlzLmNvbXBsaWFuY2U/LmFjdGl2ZVNlbGVjdG9yIHx8XG4gICAgICB0aGlzLmdyY09iamVjdD8ub3BlbmVkUG9wdXBcbiAgICApIHtcbiAgICAgIC8vRG8gTm90aGluZ1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3dFbmdpbmUoKTtcbiAgICB9XG4gIH1cblxuICB1c2VyTGlzdDogYW55ID0gW107XG4gIGN1cnJlbnRXb3JrZmxvdyE6IGFueTtcbiAgd29ya2Zsb3dUeXBlTGlzdDogYW55ID0gW1xuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIFJlc3BvbnNpYmlsaXR5JyxcbiAgICAgIGNvZGU6ICdDQVInLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdSRVNQT05TSUJJTElUWScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgTXVsdGlwbGUgUmVzcG9uc2liaWxpdGllcycsXG4gICAgICBjb2RlOiAnQ01SJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnTVVMVElQTEVfUkVTUE9OU0lCSUxJVFknLFxuICAgIH0sXG4gICAgeyB3b3JrZmxvd05hbWU6ICdBZGQgYSBSaXNrJywgY29kZTogJ0FBUicsIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUklTSycgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgTXVsdGlwbGUgUmlza3MnLFxuICAgICAgY29kZTogJ0FNUicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ01VTFRJUExFX1JJU0snLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgUG9saWN5JyxcbiAgICAgIGNvZGU6ICdDQVAnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdQT0xJQ1knLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgU3VydmV5JyxcbiAgICAgIGNvZGU6ICdDQVMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdTVVJWRVknLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgRm9ybScsXG4gICAgICBjb2RlOiAnQ0FGJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnRk9STScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdMb2cgYW4gSXNzdWUnLFxuICAgICAgY29kZTogJ0xBSScsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ0lTU1VFJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhbiBBc3Nlc3NtZW50JyxcbiAgICAgIGNvZGU6ICdBQUEnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdBU1NFU1NNRU5UJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0ltcG9ydCBhbiBBc3Nlc3NtZW50JyxcbiAgICAgIGNvZGU6ICdJQUEnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdJTVBPUlRfQVNTRVNTTUVOVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgYSBQcm9ncmFtJyxcbiAgICAgIGNvZGU6ICdDQVBSJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUFJPR1JBTScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgYSBHUkMgT2JqZWN0JyxcbiAgICAgIGNvZGU6ICdHUkMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdHUkNfT0JKRUNUUycsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdSZXBvcnQgYSBDYXNlJyxcbiAgICAgIGNvZGU6ICdSQUMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdSRVBPUlRfQV9DQVNFJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0Fzc2lnbiBjYXNlIHRvIHdvcmtmbG93JyxcbiAgICAgIGNvZGU6ICdBQ1RXJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUkVQT1JUX0FfQ0FTRScsXG4gICAgfSxcbiAgXTtcbiAgYWRkaXRpb25hbEluZm9ybWF0aW9uTGlzdCA9IFtcbiAgICAnT2JqZWN0aXZlJyxcbiAgICAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAnUmVzcG9uc2liaWxpdHkgQ2F0ZWdvcnknLFxuICBdO1xuICBjb25maXJtYXRpb25BbGVydENvbmZpZzogQ29uZmlybWF0aW9uQWxlcnQgPSB7IGlzVmlzaWJsZTogZmFsc2UgfTtcblxuICBjaGVja0N1cnJlbnRXb3JrZmxvdygpIHtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS53b3JrZmxvd0NvZGUuc3Vic2NyaWJlKChjb2RlKSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gJ0FDVycgfHwgY29kZSA9PT0gJ0FDVFcnKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmFkZFRvQ2FzZU1vZGUgPSBjb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFkZFRvQ2FzZU1vZGUgPSAnJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBjbG9zZVdvcmtmbG93RW5naW5lKGV2dD86IGFueSkge1xuICAgIGlmIChldnQ/LmNvbmZpcm0gPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdChldnQgPyBldnQuZXZ0IDogZXZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm0oZXZ0KTtcbiAgICB9XG4gIH1cblxuICBjbG9zZUNvbmZpcm0oZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ0lmIHlvdSBuYXZpZ2F0ZSBhd2F5LCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdpbGwgYmUgbG9zdC4nLFxuICAgICAgYWN0aW9uOiAnV09SS0ZMT1dfQ0xPU0UnLFxuICAgICAgZGF0YTogZXZ0LFxuICAgIH07XG4gIH1cbiAgZXhlY3V0ZUNsb3NlKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dC5hY3Rpb24gPT09ICdZRVMnKSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCgpO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE5ldHdvcmtMaXN0bmVyKCk7XG4gICAgdGhpcy5zZXRXb3JrZmxvdyh0aGlzLndvcmtmbG93VHlwZSwgdGhpcy53b3JrZmxvd1R5cGVMaXN0KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgICB0aGlzLnNldFdvcmtmbG93KHRoaXMud29ya2Zsb3dUeXBlLCB0aGlzLndvcmtmbG93VHlwZUxpc3QpO1xuICAgIHRoaXMuZGVjaWRlVmlld01vcmVPcHRpb24oKTtcbiAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uRGV0YWlscygpO1xuICAgIHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcbiAgICB0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9wcm9ncmFtX3NpbXBsaWZ5J1xuICAgICk7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9ncm91cHMnXG4gICAgKTtcbiAgICB0aGlzLmNhc2VGZWF0dXJlRmxhZyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9jYXNlc19lbmFibGVkJyk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZnkoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucGVybWlzc2lvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgY2hlY2tQZXJtaXNzaW9uKCkge1xuICAgIHRoaXMucGVybWlzc2lvblN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLnJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uLnN1YnNjcmliZShcbiAgICAgICAgKGhhc1Blcm1pc3Npb24pID0+IHtcbiAgICAgICAgICB0aGlzLmNhc2VUeXBlUGVybWlzc2lvbiA9IGhhc1Blcm1pc3Npb247XG4gICAgICAgICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuY2FzZVR5cGVMb2FkZXIubmV4dChmYWxzZSk7XG4gICAgICAgICAgaWYgKGhhc1Blcm1pc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZXBvcnRDYXNlUGVybWlzc2lvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHNldE5ldHdvcmtMaXN0bmVyKCkge1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ29mZmxpbmUnLCAoZSkgPT4ge1xuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAnQ29ubmVjdGlvbiBsb3N0ITxicj5DaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGl2aXR5LicsXG4gICAgICAgICdhbGVydCdcbiAgICAgICk7XG4gICAgfSk7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcignb25saW5lJywgKGUpID0+IHtcbiAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcIllvdSdyZSBiYWNrIG9ubGluZSFcIiwgJ3N1Y2Nlc3MnKTtcbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy53b3JrZmxvd1R5cGVMaXN0ID0gdGhpcy53b3JrZmxvd1R5cGVMaXN0LmZpbHRlcigod29ya2Zsb3c6IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWxsb3dlZFdvcmtmbG93cy5pbmNsdWRlcyh3b3JrZmxvdy5wZXJtaXNzaW9uSWRlbnRpZmllcikpIHtcbiAgICAgICAgcmV0dXJuIHdvcmtmbG93O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcpIHtcbiAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLmRpc2FibGVXb3JrZmxvd0NoYW5nZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tSZXBvcnRDYXNlUGVybWlzc2lvbigpIHtcbiAgICBjb25zdCBoYXNQZXJtaXNzaW9uID1cbiAgICAgIHRoaXMucmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlLmNoZWNrUmVwb3J0QUNhc2VQZXJtaXNzaW9uKCk7XG4gICAgaWYgKGhhc1Blcm1pc3Npb24gJiYgdGhpcy5jYXNlRmVhdHVyZUZsYWcpIHtcbiAgICAgIHRoaXMuYWxsb3dlZFdvcmtmbG93cy5wdXNoKCdSRVBPUlRfQV9DQVNFJyk7XG4gICAgICB0aGlzLmFsbG93ZWRXb3JrZmxvd3MgPSB0aGlzLmFsbG93ZWRXb3JrZmxvd3MuZmlsdGVyKFxuICAgICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3cgIT09ICdJU1NVRSdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWxsb3dlZFdvcmtmbG93cyA9IHRoaXMuYWxsb3dlZFdvcmtmbG93cy5maWx0ZXIoXG4gICAgICAgICh3b3JrZmxvdzogYW55KSA9PiB3b3JrZmxvdyAhPT0gJ1JFUE9SVF9BX0NBU0UnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVzZXJMaXN0RW1pdHRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy51c2VyTGlzdCA9IGV2ZW50O1xuICB9XG5cbiAgZGVjaWRlVmlld01vcmVPcHRpb24odHlwZT86IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZSkge1xuICAgICAgdGhpcy5jbG9zZU9uRXNjID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChbJ0NNUicsICdBTVInLCAnQUFBJywgJ0lBQScsICdSQUMnXS5pbmNsdWRlcyh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgIGlmICh0eXBlID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2FzZVJlcG9ydGVkQnkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVwb3J0QnkgPSBldmVudDtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZih0aGlzLmFkZFRvQ2FzZU1vZGUgPT09ICdBQ1cnIHx8IHRoaXMuYWRkVG9DYXNlTW9kZSA9PT0gJ0FDVFcnKSB7XG4gICAgICB0aGlzLnJlcG9ydENhc2UuYWRkVG9DYXNlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0FBUic6XG4gICAgICAgIHRoaXMucmlza0NvbXBvbmVudC5zdWJtaXRSaXNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTEFJJzpcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUNvbXBvbmVudC5hZGRJc3N1ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUic6XG4gICAgICAgIHRoaXMuY29tcGxpYW5jZS5zdWJtaXRSZXNwb25zaWJpbGl0eSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUCc6XG4gICAgICAgIHRoaXMucG9saWN5LnN1Ym1pdFBvbGljeSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0FBQSc6XG4gICAgICAgIHRoaXMud29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50LnN1Ym1pdEFzc2Vzc21lbnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVBSJzoge1xuICAgICAgICB0aGlzLnByb2dyYW0uc2F2ZVByb2dyYW0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdHUkMnOiB7XG4gICAgICAgIHRoaXMuZ3JjT2JqZWN0LnNhdmVHUkNPYmplY3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdSQUMnOiB7XG4gICAgICAgIHRoaXMucmVwb3J0Q2FzZS5yZXBvcnRDYXNlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gY2FzZSAnSUFBJzpcbiAgICAgIC8vICAgdGhpcy5pbXBvcnRBbkFzc2Vzc21lbnQuc3VibWl0QXNzZXNzbWVudCgpO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRXb3JrZmxvdygpIHtcbiAgICB0aGlzLndvcmtmbG93TGlzdCA9ICF0aGlzLndvcmtmbG93TGlzdDtcbiAgICBjb25zdCBkcm9wZG93biA9IHRoaXMuZHJvcGRvd24ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLmRyb3Bkb3duTGVmdCA9IGRyb3Bkb3duLmxlZnQ7XG4gICAgdGhpcy5kcm9wZG93blRvcCA9IGRyb3Bkb3duLnRvcCArIGRyb3Bkb3duLmhlaWdodDtcbiAgICB0aGlzLmRyb3Bkb3duV2lkdGggPSBkcm9wZG93bi53aWR0aDtcbiAgfVxuICBjbG9zZVdvcmtmbG93TGlzdCgpIHtcbiAgICB0aGlzLndvcmtmbG93TGlzdCA9IGZhbHNlO1xuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBzaXplQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLndvcmtmbG93TGlzdCA9IGZhbHNlO1xuICB9XG4gIGNoYW5nZVdvcmtmbG93KGV2dDogYW55LCBzZWxlY3RlZFdvcmtmbG93OiBhbnkpIHtcbiAgICBpZiAoc2VsZWN0ZWRXb3JrZmxvdz8uY29kZSA9PT0gdGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdJZiB5b3UgY2hhbmdlIHRoZSB3b3JrZmxvdywgYW55IHVuc2F2ZWQgY2hhbmdlcyB3b3VsZCBiZSBsb3N0LicsXG4gICAgICBhY3Rpb246ICdXT1JLRkxPV19DSEFOR0UnLFxuICAgICAgZGF0YTogc2VsZWN0ZWRXb3JrZmxvdyxcbiAgICB9O1xuICB9XG5cbiAgY29uZmlybVdvcmtmbG93Q2hhbmdlKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dC5hY3Rpb24gPT09ICdZRVMnKSB7XG4gICAgICB0aGlzLmNsb3NlT25Fc2MgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldnQucGF5bG9hZC5hY3Rpb24pIHtcbiAgICAgICAgY2FzZSAnV09SS0ZMT1dfQ0hBTkdFJzpcbiAgICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IGV2dD8ucGF5bG9hZD8uZGF0YSA/PyBudWxsO1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9yZU9wdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ucmVzZXRBbGwodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kZWNpZGVWaWV3TW9yZU9wdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFRElUX1JJU0snOlxuICAgICAgICAgIHRoaXMucmlza0NvbXBvbmVudC5jcmVhdGVSaXNrKHRoaXMucmlza0NvbXBvbmVudC5yaXNrRm9ybSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BPTElDWV9QT1JUQUwnOlxuICAgICAgICAgIHRoaXMucG9saWN5LmNvbmZpcm1Qb2xpY3lQb3J0YWwoZXZ0LmFjdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1dPUktGTE9XX0NMT1NFJzpcbiAgICAgICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdChldnQ/LnBheWxvYWQ/LmRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjaGVja3BvaW50JzpcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBvcHRpb24/LmNvZGUgPT09ICdBU1NFU1NNRU5UJyB8fFxuICAgICAgICAgICAgICBvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTJykge1xuICAgICAgICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVtb3ZlQ2hlY2twb2ludCgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1JPTEUnOlxuICAgICAgICAgIHRoaXMucHJvZ3JhbS5yZW1vdmUoZXZ0LnBheWxvYWQuZGF0YSwgJ1JPTEUnKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICduZXctY2hlY2twb2ludHMnOlxuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgJiYgIWV2dC5wYXlsb2FkLmlzRGF0YVJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTJyAmJiAhZXZ0LnBheWxvYWQuaXNEYXRhUmVtb3ZlZCkge1xuICAgICAgICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGV2dC5wYXlsb2FkLmlzQ2hlY2twb2ludENoZWNrZWQgJiZcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5tb3JlT3B0aW9ucy5DSEVDS1BPSU5UU19ORVcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZW1vdmUoJ25ldy1jaGVja3BvaW50cycpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhc3NpZ25lZVR5cGVDaGFuZ2UnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID0gJ0FMTCc7XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9XG4gICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2Uuc2V0TGlzdChcbiAgICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5vcmlnaW5hbEFzc2lnbmVlLFxuICAgICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlWydyZXNwb25zaWJpbGl0eUZvcm0nXVsnYXNzaWduZWVHcm91cHMnXVsnbGlzdCddID1cbiAgICAgICAgICAgICAgW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NlcXVlbnRpYWwnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYW55UmV2aWV3ZXInOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoZXZ0LnBheWxvYWQuYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ1BPTElDWV9QT1JUQUwnOlxuICAgICAgICAgIHRoaXMucG9saWN5LmNvbmZpcm1Qb2xpY3lQb3J0YWwoZXZ0LmFjdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Fzc2lnbmVlVHlwZUNoYW5nZSc6XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPVxuICAgICAgICAgICAgJ0FOWV9PTkUnO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NlcXVlbnRpYWwnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FueVJldmlld2VyJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICBhY3Rpb246ICcnLFxuICAgICAgZGF0YTogbnVsbCxcbiAgICB9O1xuICAgIHJldHVybiBldnQ7XG4gIH1cblxuICBzZXRXb3JrZmxvdyh3b3JrRmxvd0NvZGU6IGFueSwgd29ya0Zsb3dMaXN0OiBhbnkpIHtcbiAgICBjb25zdCBzZWxlY3RlZFdvcmtmbG93ID0gd29ya0Zsb3dMaXN0LmZpbmQoXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Py5jb2RlID09PSB3b3JrRmxvd0NvZGVcbiAgICApO1xuICAgIHNlbGVjdGVkV29ya2Zsb3dcbiAgICAgID8gKHRoaXMuY3VycmVudFdvcmtmbG93ID0gc2VsZWN0ZWRXb3JrZmxvdylcbiAgICAgIDogKHRoaXMuY3VycmVudFdvcmtmbG93ID0gbnVsbCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkV29ya2Zsb3c7XG4gIH1cblxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkge1xuICAgICAgY2FzZSAnQUFSJzpcbiAgICAgICAgdGhpcy5yaXNrQ29tcG9uZW50Py5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTEFJJzpcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUNvbXBvbmVudD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1JBQyc6XG4gICAgICAgIHRoaXMucmVwb3J0Q2FzZS5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FSJzpcbiAgICAgICAgaWYgKGV2ZW50Py5jb2RlID09PSAnQ0hFQ0tQT0lOVFMnKSB7XG4gICAgICAgICAgdGhpcy5vblJlbW92aW5nQ2hlY2twb2ludCgnY2hlY2twb2ludCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudD8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZpbmRJbmRleChcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jb2RlID09PSAnQVNTRVNTTUVOVCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XS5pc0Rpc2FibGVkID0gZXZlbnQuY2hlY2tlZFxuICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgIGlmIChldmVudC5jaGVja3BvaW50X25ldyAmJiB0aGlzLmNoZWNrcG9pbnRDb3VudCkge1xuICAgICAgICAgICAgdGhpcy5vblJlbW92aW5nQ2hlY2twb2ludCgnbmV3LWNoZWNrcG9pbnRzJywgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IENIRUNLUE9JTlRfSU5ERVggPVxuICAgICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgICAgIGlmIChldmVudC5jaGVja3BvaW50X25ldykge1xuICAgICAgICAgICAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC5jaGVja2VkID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICAgICAgICBldmVudC5jaGVja2VkID0gaXNDaGVja2VkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltDSEVDS1BPSU5UX0lOREVYXSA9IGV2ZW50O1xuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVJbaW5kZXhdLmlzRGlzYWJsZWQgPVxuICAgICAgICAgICAgICBldmVudC5jaGVja2VkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQ/LmNvZGUgPT09ICdBU1NFU1NNRU5UJykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVIuZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uaXNEaXNhYmxlZCA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5hc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICdjb21wbGlhbmNlX2F1ZGl0J1xuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubW9yZU9wdGlvbj8ubW9yZU9wdGlvbnNMaXN0Py5DQVI/LmZpbmRJbmRleChcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jb2RlID09PSAnQVNTRVNTTUVOVCdcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uY2hlY2tlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZT8uYWRkTW9yZUluZm8oXG4gICAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBsaWFuY2U/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVAnOlxuICAgICAgICB0aGlzLnBvbGljeT8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUFInOlxuICAgICAgICB0aGlzLnByb2dyYW0/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdHUkMnOlxuICAgICAgICB0aGlzLmdyY09iamVjdD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZU1vcmVPcHRpb24oZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm1vcmVPcHRpb24pIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbi5wb3B1bGF0ZShldmVudCk7XG4gICAgfVxuICB9XG4gIGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyhldmVudDogYW55KSB7XG4gICAgdGhpcy5tb3JlT3B0aW9uPy5oaWRlRWxlbWVudHMoZXZlbnQpO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1hdGlvblBvcHVwKGNvbmZpZzogQ29uZmlybWF0aW9uQWxlcnQpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgYnVsa1VwbG9hZEJyb3dzZShldmVudDogYW55KSB7XG4gICAgc3dpdGNoIChldmVudCkge1xuICAgICAgY2FzZSAnQU1SJzpcbiAgICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZC50cmlnZ2VyQnJvd3NlRmlsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NNUic6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnRyaWdnZXJCcm93c2VGaWxlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSUFBJzpcbiAgICAgICAgdGhpcy5pbXBvcnRBbkFzc2Vzc21lbnQudHJpZ2dlckJyb3dzZUZpbGUoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVzZXRGb3JtKCkge1xuICAgIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xuICAgIHRoaXMuZW50cnVzdEJ1dHRvbk5hbWUgPSAnRW50cnVzdCc7XG4gIH1cblxuICBvblJlc2V0R1JDRm9ybSgpIHtcbiAgICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcbiAgfVxuICBzaGlmdFRvRWRpdE1vZGUoKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuICB9XG4gIHNjcm9sbEZvcm0oKSB7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25Sb3c/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy50b3AgPCAzOCkge1xuICAgICAgdGhpcy5kcm9wZG93blJvdz8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5hZGQoJ2hpZGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcm9wZG93blJvdz8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5yZW1vdmUoJ2hpZGUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IHdoaWNoIG1vcmUgb3B0aW9ucyB3ZSBhcmUgcmVtb3ZpbmcuXG4gICAqIEBwYXJhbSBpc0NoZWNrcG9pbnRDaGVja2VkICBpcyB0cnVlIGlmIHZhbHVlIGNoZWNrcG9pbnRzIGlzIHJlbW92ZWQgYnkgY2xpY2tpbmcgb24gbW9yZSBvcHRpb25zXG4gICAqL1xuICBvblJlbW92aW5nQ2hlY2twb2ludChcbiAgICBldmVudDogc3RyaW5nLFxuICAgIGlzQ2hlY2twb2ludENoZWNrZWQ/OiBib29sZWFuLFxuICAgIGlzRGF0YVJlbW92ZWQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGxldCBtc2cgPSAnJztcbiAgICBpZiAoZXZlbnQgPT09ICduZXctY2hlY2twb2ludHMnKSB7XG4gICAgICBtc2cgPVxuICAgICAgICAnSWYgeW91IGNob29zZSB0byByZW1vdmUgdGhlc2UgQ2hlY2twb2ludHMsIHRoZXkgd2lsbCBiZSBkZWxldGVkIGFuZCBjYW5ub3QgYmUgcmVzdG9yZWQuIEhvd2V2ZXIsIHlvdSB3aWxsIHN0aWxsIGJlIGFibGUgdG8gY3JlYXRlIG5ldyBDaGVja3BvaW50cyBvciBsaW5rIGFuIEFzc2Vzc21lbnQuJztcbiAgICB9IGVsc2Uge1xuICAgICAgbXNnID1cbiAgICAgICAgJ0lmIHlvdSBjaG9vc2UgdG8gcmVtb3ZlIHRoZXNlIGNoZWNrcG9pbnRzLCB0aGV5IHdpbGwgYmUgZGVsZXRlZCBhbmQgY2Fubm90IGJlIHJlc3RvcmVkLic7XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiBtc2csXG4gICAgICBhY3Rpb246IGV2ZW50LFxuICAgICAgZGF0YTogeyB0eXBlOiAncmVzcG9uc2liaWxpdHlDaGVja3BvaW50JyB9LFxuICAgICAgaXNDaGVja3BvaW50Q2hlY2tlZDogaXNDaGVja3BvaW50Q2hlY2tlZCA/PyBmYWxzZSxcbiAgICAgIGlzRGF0YVJlbW92ZWQ6IGlzRGF0YVJlbW92ZWQgPz8gZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIG9uUmVtb3ZpbmdSb2xlKGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbXNnID0gJyc7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBtc2cgPSAnSWYgeW91IGNoYW5nZSB0aGUgcm9sZXMsIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgYWN0aW9uOiAnUk9MRScsXG4gICAgICBkYXRhOiBldmVudCxcbiAgICB9O1xuICB9XG5cbiAgaXNBc3Nlc3NtZW50RGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBpZiAob3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgfHwgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJykge1xuICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkaXNhYmxlTW9yZU9wdGlvbnMod29ya2Zsb3dDb2RlOiBhbnksIGRpc2FibGVkRWxlbWVudHNDb2RlOiBhbnkpIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdCkuaW5jbHVkZXMod29ya2Zsb3dDb2RlKSkge1xuICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdFt3b3JrZmxvd0NvZGVdLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZEVsZW1lbnRzQ29kZS5pbmNsdWRlcyhvcHRpb24/LmNvZGUpKSB7XG4gICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrcG9pbnRTZWxlY3Rpb24oZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMuY2hlY2twb2ludENvdW50ID0gZXZlbnQ7XG4gIH1cblxuICBvblJjU2VsZWN0ZWQoaXNSY1NlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1JDU2VsZWN0ZWQgPSBpc1JjU2VsZWN0ZWQ7XG4gIH1cblxuICBmZXRjaE9yZ2FuaXphdGlvbkRldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdDb21tb25TZXJ2aWNlPy5nZXRPcmdEZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMub3JnRGV0YWlscyA9IHJlcztcbiAgICAgICAgaWYgKHJlcz8uYnVzaW5lc3NfY3ljbGVzX2FyciAmJiByZXM/LmJ1c2luZXNzX2N5Y2xlc19hcnI/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcmVzPy5idXNpbmVzc19jeWNsZXNfYXJyLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5zZWxlY3RlZFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgc3BsaXR0ZWQgPSBzZWxlY3RlZFswXS5idXNpbmVzc19jeWNsZT8uc3BsaXQoJy0nKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlID0gYCR7c3BsaXR0ZWRbMF0/LnNsaWNlKFxuICAgICAgICAgICAgMlxuICAgICAgICAgICl9IC0gJHtzcGxpdHRlZFsxXT8uc2xpY2UoNCl9YDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBnZXRVc2VyRGV0YWlscygpIHtcbiAgICB0aGlzLm9yZ0NvbW1vblNlcnZpY2U/LmdldE9yZ1VzZXJJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hdXRoLnVzZXJEZXRhaWxzID0gcmVzO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBvcmdhbml6YXRpb24gdXNlcnMnLCBlcnIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnbmVlVHlwZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgJ1RoaXMgYWN0aW9uIHdpbGwgcmVzZXQgdGhlIGNoYW5nZXMgYW5kIGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgYmFjayB0byB0aGUgb3JpZ2luYWwgYXNzaWduZWUuJyxcbiAgICAgIGFjdGlvbjogJ2Fzc2lnbmVlVHlwZUNoYW5nZScsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIGlzUmVkQWxlcnQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGV2ZW50ID0+ICdzZXF1ZW50aWFsJyB8fCAnYW55UmV2aWV3ZXInXG4gIG9uUmV2aWV3ZXJDaGFuZ2UoZXZlbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbW1vblRleHQ6IHN0cmluZyA9XG4gICAgICAnT25jZSBjb25maXJtZWQsIHRoZSBuZXcgcmV2aWV3IHdvcmtmbG93IHdpbGwgYmUgYXBwbGljYWJsZSBmb3IgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSByZXZpZXcgZHVlIGRhdGVzLic7XG4gICAgY29uc3QgbXNnID1cbiAgICAgIGNvbW1vblRleHQgK1xuICAgICAgKGV2ZW50ID09PSAnYW55UmV2aWV3ZXInXG4gICAgICAgID8gYElmIGFueSByZXZpZXdlciBoYWQgY29tcGxldGVkIHRoZSByZXZpZXcsIHRoZSBjdXJyZW50IHJldmlldyBkdWUgZGF0ZSB3aWxsIGJlIGNsb3NlZCBhbmQgdGhlIHJldmlldyBzdGF0dXMgd2lsbCBiZSB1cGRhdGVkIHRvICdDb21wbGV0ZWQnLmBcbiAgICAgICAgOiAnJyk7XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGFjdGlvbjogZXZlbnQsXG4gICAgfTtcbiAgfVxuXG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmeSgpIHtcbiAgICBpZiAodGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Jlc3BvbnNpYmlsaXR5X3NpbXBsaWZpY2F0aW9uJykpIHtcbiAgICAgIHRoaXMud29ya2Zsb3dUeXBlTGlzdFswXS53b3JrZmxvd05hbWUgPSAnQWRkIGEgUmVzcG9uc2liaWxpdHknO1xuICAgICAgdGhpcy53b3JrZmxvd1R5cGVMaXN0WzFdLndvcmtmbG93TmFtZSA9ICdBZGQgTXVsdGlwbGUgUmVzcG9uc2liaWxpdGllcyc7XG4gICAgfVxuICB9XG59XG4iLCI8YXBwLXNuYWNrLWJhcj48L2FwcC1zbmFjay1iYXI+XG48ZGl2IGNsYXNzPVwid29ya2Zsb3ctZW5naW5lLW92ZXJsYXlcIj48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmVcIlxuICBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIlxuICBbY2xhc3MuYmddPVwiXG4gICAgKCFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8IHJpc2tCdWxrVXBsb2FkPy5zaG93Q2F0ZWdvcnlMaXN0KSAmJlxuICAgICFwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcbiAgXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lclwiXG4gICAgW25nU3dpdGNoXT1cImN1cnJlbnRXb3JrZmxvdz8uY29kZVwiXG4gICAgW2NsYXNzLndpdGgtcHJldmlldy1hc3Nlc3NtZW50XT1cIihhdXRoPy5wcmV2aWV3UGFuZWwgfCBhc3luYykgPT09IHRydWVcIlxuICAgIFtjbGFzcy53aXRoLWZyZXF1ZW5jeV09XCJcbiAgICAgIGNvbXBsaWFuY2U/LmFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5JyB8fFxuICAgICAgY29tcGxpYW5jZT8uYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeScgfHxcbiAgICAgIHJpc2tDb21wb25lbnQ/LmFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5JyB8fFxuICAgICAgcG9saWN5Py5hY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeScgfHxcbiAgICAgIHBvbGljeT8uYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeSdcbiAgICBcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKGNsaWNrKT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoKVwiXG4gICAgICBpZD1cImNsb3NlLXdvcmtmbG93LWVuZ2luZS1idG5cIlxuICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICBbYXBwVG9vbHRpcF09XCInW0VzY10gdG8gY2xvc2UnXCJcbiAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgZGVsYXk9XCIwXCJcbiAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgY29uZmlybWF0aW9uQWxlcnRDb25maWc/LmlzVmlzaWJsZSB8fCAhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFxuICAgICAgXCJcbiAgICAgIFtjbGFzcy5zbWlsZXktb3BlbmVkXT1cIlxuICAgICAgICByaXNrQ29tcG9uZW50Py5zaG93U21pbGV5IHx8XG4gICAgICAgIGxvZ0lzc3VlQ29tcG9uZW50Py5zaG93U21pbGV5IHx8XG4gICAgICAgIGNvbXBsaWFuY2U/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzIHx8XG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uc2hvd1NtaWxleSB8fFxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnNob3dFeGNlbCB8fFxuICAgICAgICByaXNrQnVsa1VwbG9hZD8uc2hvd1NtaWxleSB8fFxuICAgICAgICByaXNrQnVsa1VwbG9hZD8uc2hvd0V4Y2VsIHx8XG4gICAgICAgIHByb2dyYW0/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgaW1wb3J0QW5Bc3Nlc3NtZW50Py5zaG93U21pbGV5XG4gICAgICBcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTNmOzwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIiF1aUtpdFNlcnZpY2UuaXNTbWlsZXlPblwiXG4gICAgICBjbGFzcz1cIndvcmtmbG93LWVuZ2luZS1tb3JlXCJcbiAgICAgIFtoaWRkZW5dPVwic2hvd01vcmVPcHRpb24gPT09IGZhbHNlIHx8IHBvbGljeT8uc2hvd0NyZWF0ZURvY3VtZW50c1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY29uZmlybWF0aW9uQWxlcnRDb25maWc/LmlzVmlzaWJsZVwiXG4gICAgICBbY2xhc3MucmVhZC1vbmx5XT1cInVpS2l0U2VydmljZT8uaXNMb2FkZXJcIlxuICAgID5cbiAgICAgIDxhcHAtbW9yZS1vcHRpb25cbiAgICAgICAgI21vcmVPcHRpb25cbiAgICAgICAgW2N1cnJlbnRXb3JrZmxvd109XCJjdXJyZW50V29ya2Zsb3c/LmNvZGVcIlxuICAgICAgICBbaXNFZGl0TW9kZV09XCJtb2RlID09PSAnRURJVCdcIlxuICAgICAgICBbaXNSQ1NlbGVjdGVkXT1cIlxuICAgICAgICAgIGlzUkNTZWxlY3RlZCB8fFxuICAgICAgICAgIChjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09ICdHUkMnICYmXG4gICAgICAgICAgICBncmNPYmplY3Q/Lmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwKVxuICAgICAgICBcIlxuICAgICAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgKHNlbGVjdGVkT3B0aW9uKT1cImFkZE1vcmVJbmZvKCRldmVudClcIlxuICAgICAgICBbaXNQcm9ncmFtU2VsZWN0ZWRdPVwic2VsZWN0ZWRQcm9ncmFtXCJcbiAgICAgICAgW2FsbG93ZWRGZWF0dXJlXT1cImZlYXR1cmVcIlxuICAgICAgICBbb3JnRGV0YWlsc0RhdGFdPVwib3JnRGV0YWlsc1wiXG4gICAgICAgIFtpc0F0dHJpYnV0ZXNBdmFpbGFibGVdPVwiXG4gICAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnR1JDJyAmJlxuICAgICAgICAgIGdyY09iamVjdD8uc2VsZWN0ZWRBdHRyaWJ1dGVzPy5hdHRyaWJ1dGVzPy5sZW5ndGggPiAwXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICA8L2FwcC1tb3JlLW9wdGlvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIndvcmtmbG93LWVuZ2luZS1mb3JtXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8uaXNWaXNpYmxlXCJcbiAgICAgIFtjbGFzcy5uby1zaGFkb3ddPVwiXG4gICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PSAnQU1SJyB8fFxuICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT0gJ0NNUicgfHxcbiAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09ICdBQUEnIHx8XG4gICAgICAgIHVpS2l0U2VydmljZS5pc1NtaWxleU9uIHx8XG4gICAgICAgIHBvbGljeT8uc2hvd0NyZWF0ZURvY3VtZW50c1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKHNjcm9sbCk9XCJzY3JvbGxGb3JtKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAhWydWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywgJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBvcGVuZWRGcm9tXG4gICAgICAgICAgICApXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiISh1aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiB8fCBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHMpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgICAgICAgI2Ryb3Bkb3duUm93XG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgIChtb2RlID09PSAnRURJVCcgfHxcbiAgICAgICAgICAgICAgICAhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCB8fFxuICAgICAgICAgICAgICAgIGRpc2FibGVXb3JrZmxvd0NoYW5nZSB8fFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkUHJvZ3JhbSkgJiZcbiAgICAgICAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlICE9PSAnQUNUVydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJjdXJyZW50V29ya2Zsb3dcIj5cbiAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCIgI2Ryb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgPlNlbGVjdCBhIFdvcmtmbG93PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnQUNUVydcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgICAgICAgICAgID5Bc3NpZ24gYSBDYXNlIHRvIFdvcmtmbG93PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgID4qPC9zcGFuXG4gICAgICAgICAgICAgICAgICA+PC9sYWJlbFxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjdXJyZW50V29ya2Zsb3cgJiYgY3VycmVudFdvcmtmbG93Py5jb2RlICE9PSAnQUNUVydcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRXb3JrZmxvdygpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIFdvcmtmbG93XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQgZmlyc3QtZmllbGRcIiAqbmdJZj1cImN1cnJlbnRXb3JrZmxvd1wiPlxuICAgICAgICAgICAgICAgICAgPCEtLSB7e2N1cnJlbnRXb3JrZmxvdyB8IGpzb259fSAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0IG5vLXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjdXJyZW50V29ya2Zsb3c/LndvcmtmbG93TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtmbG93VHlwZSA9PT0gJ0FDVFcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJzxzdHJvbmc+Q2FzZSBSZXBvcnRlZCBCeTogPC9zdHJvbmc+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcG9ydEJ5IHwgdXNlclBpcGUgOiB1c2VyTGlzdCk/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFdvcmtmbG93Py53b3JrZmxvd05hbWVcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiPnt7Y3VycmVudFdvcmtmbG93Py53b3JrZmxvd05hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRXb3JrZmxvdygpXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAhd29ya2Zsb3dMaXN0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgb3BlbmVkRnJvbSAhPSAnQVNTRVNTTUVOVCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0NBUFInICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCdXNpbmVzc0N5Y2xlICYmXG4gICAgICAgICAgICAgICAgICAgICFwcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmFtLWJ1c2luZXNzLWN5Y2xlIHZ4LWZzLTExIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMSB2eC1wbC0yIHZ4LXByLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtbXItMVwiPiYjeGU5NjM7PC9pPiBUaGlzIHByb2dyYW0gaXNcbiAgICAgICAgICAgICAgICAgIGJlaW5nIHNldC11cCBmb3IgdGhlIGJ1c2luZXNzIGN5Y2xlOlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mdy02MDAgdngtbWwtMVwiPnt7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCdXNpbmVzc0N5Y2xlXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwhLS0gPGFwcC1jcmVhdGUtZG9jdW1lbnRzPjwvYXBwLWNyZWF0ZS1kb2N1bWVudHM+IC0tPlxuICAgICAgICA8IS0tIDxhcHAtYnVsay12aWV3PjwvYXBwLWJ1bGstdmlldz4gLS0+XG4gICAgICAgIDwhLS0gPGFwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXc+PC9hcHAtYnVsay1yZXNwb25zaWJpbGl0eS12aWV3PiAtLT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1jb21wbGlhbmNlXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxuICAgICAgICAgIFtpc0VudHJ1c3RdPVwiZW50cnVzdEJ1dHRvbk5hbWUudG9Mb3dlckNhc2UoKSA9PSAnZW50cnVzdCdcIlxuICAgICAgICAgIFtyZXNwb25zaWJpbGl0eUlkXT1cImlkXCJcbiAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgICBbZnJhbWV3b3JrRGV0YWlsc109XCJmcmFtZXdvcmtEZXRhaWxzXCJcbiAgICAgICAgICBbYXNzZXNzbWVudERldGFpbHNdPVwiYXNzZXNzbWVudERldGFpbHNcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDQVInXCJcbiAgICAgICAgICAjcmVzcG9uc2liaWxpdHlcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKCRldmVudClcIlxuICAgICAgICAgIFtzZWxlY3RlZFJDXT1cInNlbGVjdGVkUkNcIlxuICAgICAgICAgIFtjbG9zZU9uRXNjXT1cImNsb3NlT25Fc2NcIlxuICAgICAgICAgIChhc3NpZ25lZVR5cGVDaGFuZ2UpPVwiYXNzaWduZWVUeXBlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChvblJldmlld2VyVHlwZUNoYW5nZSk9XCJvblJldmlld2VyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxuICAgICAgICAgIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIlxuICAgICAgICAgIChyY1NlbGVjdGVkKT1cIm9uUmNTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAocmVzZXRGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgIChvblJlbW92aW5nQ2hlY2twb2ludCk9XCJvblJlbW92aW5nQ2hlY2twb2ludCgkZXZlbnQsIGZhbHNlLCB0cnVlKVwiXG4gICAgICAgICAgKGlzQXNzZXNzbWVudERpc2FibGVkKT1cImlzQXNzZXNzbWVudERpc2FibGVkKCRldmVudClcIlxuICAgICAgICAgIChjaGVja3BvaW50Q291bnRVcGRhdGVkKT1cImNoZWNrcG9pbnRDb3VudCA9ICRldmVudFwiXG4gICAgICAgICAgW3NlbGVjdGVkUHJvZ3JhbV09XCJzZWxlY3RlZFByb2dyYW1cIlxuICAgICAgICA+PC9hcHAtd29ya2Zsb3ctY29tcGxpYW5jZT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1yaXNrXG4gICAgICAgICAgW3NlY29uZGFyeU9wZW5Qb3J0YWxdPVwic2Vjb25kYXJ5T3BlblBvcnRhbFwiXG4gICAgICAgICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQUFSJ1wiXG4gICAgICAgICAgI3Jpc2tcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCJcbiAgICAgICAgICAoaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHJlZnJlc2hGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgIChyY1NlbGVjdGVkKT1cIm9uUmNTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgICBbcmlza0lkXT1cImlkXCJcbiAgICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICAgICAgPjwvYXBwLXdvcmtmbG93LXJpc2s+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctcG9saWN5XG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQJ1wiXG4gICAgICAgICAgI3BvbGljeVxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIlxuICAgICAgICAgIChzaGlmdFRvRWRpdE1vZGUpPVwic2hpZnRUb0VkaXRNb2RlKClcIlxuICAgICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxuICAgICAgICAgIFtwb2xpY3lJZF09XCJpZFwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgW3RlbXBsYXRlSWRdPVwidGVtcGxhdGVJZFwiXG4gICAgICAgICAgW2NvbnZlcnRGaWxlRGF0YV09XCJjb252ZXJ0RmlsZURhdGFcIlxuICAgICAgICAgIFtzZWxlY3RlZENhdGVnb3J5XT1cInNlbGVjdGVkQ2F0ZWdvcnlcIlxuICAgICAgICAgIFtpc1NlbmRGb3JBdHRlc3RhdGlvbl09XCJpc1NlbmRGb3JBdHRlc3RhdGlvblwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgPjwvYXBwLXdvcmtmbG93LXBvbGljeT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1zdXJ2ZXktZm9ybVxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FTJ1wiXG4gICAgICAgICAgI3N1cnZleUZvcm1cbiAgICAgICAgPjwvYXBwLXdvcmtmbG93LXN1cnZleS1mb3JtPlxuICAgICAgICA8YXBwLWFkZC1tdWx0aXBsZS1yaXNrXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQU1SJ1wiXG4gICAgICAgICAgI211bHRpcGxlUmlza1xuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXG4gICAgICAgID48L2FwcC1hZGQtbXVsdGlwbGUtcmlzaz5cbiAgICAgICAgPCEtLSA8YXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eSAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NNUidcIiAjbXVsdGlwbGVSZXNwb25zaWJpbGl0eT5cbiAgICAgICAgICAgICAgICA8L2FwcC1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHk+IC0tPlxuXG4gICAgICAgIDxsaWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lclxuICAgICAgICAgIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ01SJ1wiXG4gICAgICAgICAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXG4gICAgICAgICAgI211bHRpcGxlUmVzcG9uc2liaWxpdHlcbiAgICAgICAgPjwvbGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXI+XG4gICAgICAgIDwhLS0gTmV3IExvZyBhbiBJc3N1ZSAtLT5cbiAgICAgICAgPGFwcC1sb2ctYW4taXNzdWVcbiAgICAgICAgICBbaXNzdWVEZXRhaWxzXT1cImlzc3VlRGF0YVwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidMQUknXCJcbiAgICAgICAgICBbcmVwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIlxuICAgICAgICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCJcbiAgICAgICAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICBbc291cmNlXT1cInNvdXJjZVwiXG4gICAgICAgICAgW2lzc3VlSWRdPVwiaWRcIlxuICAgICAgICAgICNsb2dBbklzc3VlXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICBbKG1vZGUpXT1cIm1vZGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvYXBwLWxvZy1hbi1pc3N1ZT5cbiAgICAgICAgPCEtLSBPbGQgTG9nIGFuIGlzc3VlIC0tPlxuICAgICAgICA8IS0tIDxhcHAtbG9nLWFuLWlzc3VlICpuZ1N3aXRjaENhc2U9XCInTEFJJ1wiIFtyZXNwb25zaWJpbGl0aWVzRGF0YV09XCJyZXBvbnNpYmlsdHlEYXRhXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgICAgICAgI2xvZ0FuSXNzdWUgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2FwcC1sb2ctYW4taXNzdWU+IC0tPlxuXG4gICAgICAgIDxhcHAtd29ya2Zsb3ctYXNzZXNzbWVudFxuICAgICAgICAgIFthc3Nlc3NtZW50SWRdPVwiaWRcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0FBQSdcIlxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocmVmcmVzaEZvcm0pPVwib25SZXNldEZvcm0oKVwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgI2Fzc2Vzc21lbnRcbiAgICAgICAgPjwvYXBwLXdvcmtmbG93LWFzc2Vzc21lbnQ+XG4gICAgICAgIDxhcHAtaW1wb3J0LWFuLWFzc2Vzc21lbnRcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidJQUEnXCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHJlZnJlc2hGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgICNpbXBvcnRBc3Nlc3NtZW50XG4gICAgICAgID48L2FwcC1pbXBvcnQtYW4tYXNzZXNzbWVudD5cbiAgICAgICAgPCEtLSA8YXBwLXdvcmtmbG93LXByb2dyYW0gI3Byb2dyYW0gKm5nU3dpdGNoQ2FzZT1cIidDQVBSJ1wiIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiPjwvYXBwLXdvcmtmbG93LXByb2dyYW0+IC0tPlxuICAgICAgICA8YXBwLXdvcmtmbG93LXByb2dyYW1cbiAgICAgICAgICAjcHJvZ3JhbVxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIlxuICAgICAgICAgIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxuICAgICAgICAgIFthbGxvd2VkRmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICAgICAgICAoZGlzYWJsZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImRpc2FibGVNb3JlT3B0aW9ucygnQ0FQUicsICRldmVudClcIlxuICAgICAgICAgIFtwcm9ncmFtVHlwZV09XCJwcm9ncmFtVHlwZVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocmVmcmVzaEZvcm0pPVwib25SZXNldEZvcm0oKVwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgW3Byb2dyYW1JZF09XCJpZFwiXG4gICAgICAgICAgKG9uUmVtb3ZpbmdSb2xlKT1cIm9uUmVtb3ZpbmdSb2xlKCRldmVudClcIlxuICAgICAgICAgIFtjYW5GcmFtZXdvcmtDaGFuZ2VdPVwiY2FuRnJhbWV3b3JrQ2hhbmdlXCJcbiAgICAgICAgICBbYWRkVG9Qcm9ncmFtRGV0YWlsc109XCJhZGRUb1Byb2dyYW1EZXRhaWxzXCJcbiAgICAgICAgPjwvYXBwLXdvcmtmbG93LXByb2dyYW0+XG5cbiAgICAgICAgPCEtLSBHUkMgT2JqZWN0IC0tPlxuICAgICAgICA8bGliLWdyYy1vYmplY3QtY29udGFpbmVyXG4gICAgICAgICAgI2dyY09iamVjdFxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInR1JDJ1wiXG4gICAgICAgICAgW2dyY1R5cGVdPVwiZ3JjVHlwZVwiXG4gICAgICAgICAgW01PREVdPVwibW9kZVwiXG4gICAgICAgICAgW0lEXT1cImlkXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKHJlc2V0Rm9ybSk9XCJvblJlc2V0R1JDRm9ybSgpXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiXG4gICAgICAgICAgKGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyk9XCJoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMoJGV2ZW50KVwiXG4gICAgICAgID48L2xpYi1ncmMtb2JqZWN0LWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFJlcG9ydCBhIENhc2UgLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctY2FzZVxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInUkFDJ1wiXG4gICAgICAgICAgI3JlcG9ydENhc2VcbiAgICAgICAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICBbc291cmNlXT1cInNvdXJjZVwiXG4gICAgICAgICAgW2Nhc2VJZF09XCJpZFwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgW3Jlc3BvbnNpYmlsaXR5RGF0YV09XCJyZXBvbnNpYmlsaXR5RGF0YVwiXG4gICAgICAgICAgW2Fzc2Vzc21lbnRRdWVzdGlvbl09XCJhc3Nlc3NtZW50UXVlc3Rpb25cIlxuICAgICAgICAgIFtjYXNlVHlwZVBlcm1pc3Npb25dPVwiY2FzZVR5cGVQZXJtaXNzaW9uXCJcbiAgICAgICAgICBbd29ya2Zsb3dUeXBlXT1cIidSQUMnXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICA+PC9hcHAtd29ya2Zsb3ctY2FzZT5cbiAgICAgICAgPCEtLSBBc3NpZ24gY2FzZSB0byB3b3JrZmxvdyAtLT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1jYXNlXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidBQ1RXJ1wiXG4gICAgICAgICAgI3JlcG9ydENhc2VcbiAgICAgICAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICBbc291cmNlXT1cInNvdXJjZVwiXG4gICAgICAgICAgW2Nhc2VJZF09XCJpZFwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgW3dvcmtmbG93VHlwZV09XCInQUNUVydcIlxuICAgICAgICAgIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIlxuICAgICAgICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCJcbiAgICAgICAgICBbY2FzZVR5cGVQZXJtaXNzaW9uXT1cImNhc2VUeXBlUGVybWlzc2lvblwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGNhc2VSZXBvcnRlZEJ5KT1cImNhc2VSZXBvcnRlZEJ5KCRldmVudClcIlxuICAgICAgICAgICh1c2VyTGlzdEVtaXR0ZXIpPVwidXNlckxpc3RFbWl0dGVyKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgID48L2FwcC13b3JrZmxvdy1jYXNlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiWydSQUMnLCAnQUNUVyddLmluY2x1ZGVzKGN1cnJlbnRXb3JrZmxvdz8uY29kZSlcIlxuICAgICAgICBjbGFzcz1cInZ4LWQtZmxleFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImNhbmNlbFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIENBTkNFTFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic3VibWl0XCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgbW9kZSA9PT0gXCJFRElUXCIgJiYgY3VycmVudFdvcmtmbG93Py5jb2RlID09PSBcIlJBQ1wiXG4gICAgICAgICAgICAgID8gXCJVcGRhdGVcIlxuICAgICAgICAgICAgICA6IFwiUmVwb3J0XCJcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQUFSJ1wiXG4gICAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgbW9kZSA9PT0gXCJFRElUXCIgJiYgb3BlbmVkRnJvbSAhPT0gXCJNT1ZFX1RPX1JFR0lTVEVSXCJcbiAgICAgICAgICAgID8gXCJVcGRhdGVcIlxuICAgICAgICAgICAgOiBcIkFkZFwiXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdWJtaXRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgfHxcbiAgICAgICAgICAhcmlza0J1bGtVcGxvYWQ/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XG4gICAgICAgIFwiXG4gICAgICAgIChjbGljayk9XCJidWxrVXBsb2FkQnJvd3NlKCdBTVInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQU1SJ1wiXG4gICAgICA+XG4gICAgICAgIEJyb3dzZVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3VibWl0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cImJ1bGtVcGxvYWRCcm93c2UoJ0NNUicpXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDTVInXCJcbiAgICAgID5cbiAgICAgICAgQnJvd3NlXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBUaGlzIGhhcyB0ZXJuYXJ5IG9wZXJhdGlvbiB0byBoYW5kbGUgdGhlIGJvdGggc2NlbmFyaW9zIG9mIGhvdyBpdCB3b3JrcyB3aXRoIGNvbXBsaWFuY2UgYW5kIHByb2dyYW0gbW9kdWxlLCBwbGVhc2UgZG9uJ3QgY2hhbmdlIHRoaXMuIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FSJ1wiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgZW50cnVzdEJ1dHRvbk5hbWUgIT09IFwiXCIgJiYgbW9kZSAhPT0gXCJFRElUXCJcbiAgICAgICAgICAgID8gZW50cnVzdEJ1dHRvbk5hbWVcbiAgICAgICAgICAgIDogbW9kZSA9PT0gXCJFRElUXCJcbiAgICAgICAgICAgID8gXCJVUERBVEVcIlxuICAgICAgICAgICAgOiBcIkVudHJ1c3RcIlxuICAgICAgICB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3VibWl0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInN1Ym1pdCgpXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDQVAnXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICBtb2RlID09IFwiRURJVFwiXG4gICAgICAgICAgICA/IGlzU2VuZEZvckF0dGVzdGF0aW9uXG4gICAgICAgICAgICAgID8gXCJTZW5kIGZvciBhdHRlc3RhdGlvblwiXG4gICAgICAgICAgICAgIDogXCJVcGRhdGVcIlxuICAgICAgICAgICAgOiBcIkNvbnRpbnVlIHRvIGRyYWZ0XCJcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FTJ1wiXG4gICAgICA+XG4gICAgICAgIENvbnRpbnVlIHRvIGRyYWZ0XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdWJtaXRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0xBSSdcIlxuICAgICAgICAoY2xpY2spPVwic3VibWl0KClcIlxuICAgICAgPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIkFkZFwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJzdWJtaXRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0FBQSdcIlxuICAgICAgICAoY2xpY2spPVwic3VibWl0KClcIlxuICAgICAgPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIkNvbnRpbnVlIHRvIGRyYWZ0XCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN1Ym1pdFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJidWxrVXBsb2FkQnJvd3NlKCdJQUEnKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInSUFBJ1wiXG4gICAgICA+XG4gICAgICAgIEJyb3dzZVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3VibWl0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8ICFwcm9ncmFtPy52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJzdWJtaXQoJ0NBUFInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIlxuICAgICAgPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIlNhdmVcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3VibWl0XCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8ICFwcm9ncmFtPy52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJzdWJtaXQoJ0NBUFInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIlxuICAgICAgPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIlNhdmVcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgKGNsaWNrKT1cInN1Ym1pdCgpXCIgKm5nU3dpdGNoQ2FzZT1cIidHUkMnXCI+XG4gICAgICAgIHt7IG1vZGUgPT09IFwiRURJVFwiID8gXCJVcGRhdGVcIiA6IFwiU2F2ZVwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93blwiXG4gICAgICAgICpuZ0lmPVwid29ya2Zsb3dMaXN0XCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlV29ya2Zsb3dMaXN0KClcIlxuICAgICAgICBbc3R5bGUudG9wLnB4XT1cImRyb3Bkb3duVG9wXCJcbiAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiZHJvcGRvd25MZWZ0XCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImRyb3Bkb3duV2lkdGhcIlxuICAgICAgPlxuICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1saXN0XCI+XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgd29ya2Zsb3cgb2Ygd29ya2Zsb3dUeXBlTGlzdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlV29ya2Zsb3coJGV2ZW50LCB3b3JrZmxvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgICAgKm5nSWY9XCJ3b3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIndvcmtmbG93Py5jb2RlXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudFdvcmtmbG93Py5jb2RlID09PSB3b3JrZmxvdz8uY29kZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHdvcmtmbG93Py53b3JrZmxvd05hbWUgfX08L2FwcC1jcy1yYWRpb1xuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vdmVybGF5XCJcbiAgICAgICAgKm5nSWY9XCJ3b3JrZmxvd0xpc3RcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0xpc3QoKVwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1jb25maXJtYXRpb24tYWxlcnRcbiAgICAgIGlkPVwiY29uZmlybWF0aW9uLWRpYWxvZ3VlXCJcbiAgICAgIChhY3Rpb24pPVwiY29uZmlybVdvcmtmbG93Q2hhbmdlKCRldmVudClcIlxuICAgICAgKm5nSWY9XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8uaXNWaXNpYmxlXCJcbiAgICAgIFttZXNzYWdlXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5tZXNzYWdlXCJcbiAgICAgIFtjb25maWddPVwiY29uZmlybWF0aW9uQWxlcnRDb25maWdcIlxuICAgID48L2FwcC1jb25maXJtYXRpb24tYWxlcnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -855,7 +855,7 @@ class ReportCasePermissionService {
|
|
|
855
855
|
constructor(rbacService, authService) {
|
|
856
856
|
this.rbacService = rbacService;
|
|
857
857
|
this.authService = authService;
|
|
858
|
-
this.hasPermission = new
|
|
858
|
+
this.hasPermission = new Subject();
|
|
859
859
|
this.checkReportACasePermission();
|
|
860
860
|
}
|
|
861
861
|
checkReportACasePermission() {
|
|
@@ -875,6 +875,9 @@ class ReportCasePermissionService {
|
|
|
875
875
|
if (data?.includes('CCMMC')) {
|
|
876
876
|
this.hasPermission.next(true);
|
|
877
877
|
}
|
|
878
|
+
else {
|
|
879
|
+
this.hasPermission.next(false);
|
|
880
|
+
}
|
|
878
881
|
return data?.includes('CCMMC');
|
|
879
882
|
});
|
|
880
883
|
return false;
|
|
@@ -49117,13 +49120,14 @@ class WorkflowEngineContainerComponent {
|
|
|
49117
49120
|
this.permissionSubscription.unsubscribe();
|
|
49118
49121
|
}
|
|
49119
49122
|
checkPermission() {
|
|
49120
|
-
this.permissionSubscription =
|
|
49121
|
-
this.
|
|
49122
|
-
|
|
49123
|
+
this.permissionSubscription =
|
|
49124
|
+
this.reportCasePermissionService.hasPermission.subscribe((hasPermission) => {
|
|
49125
|
+
this.caseTypePermission = hasPermission;
|
|
49123
49126
|
this.reportACaseService.caseTypeLoader.next(false);
|
|
49124
|
-
|
|
49125
|
-
|
|
49126
|
-
|
|
49127
|
+
if (hasPermission) {
|
|
49128
|
+
this.checkReportCasePermission();
|
|
49129
|
+
}
|
|
49130
|
+
});
|
|
49127
49131
|
}
|
|
49128
49132
|
setNetworkListner() {
|
|
49129
49133
|
addEventListener('offline', (e) => {
|