vcomply-workflow-engine 6.1.60 → 6.1.62
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/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +10 -3
- package/esm2022/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +3 -3
- package/esm2022/lib/workflow/shared/services/grc.service.mjs +6 -1
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +24 -18
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +2 -1
- package/esm2022/lib/workflow-services/responsibility.service.mjs +2 -2
- package/fesm2022/vcomply-workflow-engine.mjs +41 -22
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/workflow/shared/services/grc.service.d.ts +1 -0
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -0
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -370,6 +370,7 @@ export class WorkflowEngineContainerComponent {
|
|
|
370
370
|
break;
|
|
371
371
|
}
|
|
372
372
|
case 'GRC': {
|
|
373
|
+
console.log('this.grcObject', this.grcObject);
|
|
373
374
|
this.grcObject.saveGRCObject();
|
|
374
375
|
break;
|
|
375
376
|
}
|
|
@@ -851,4 +852,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
851
852
|
type: HostListener,
|
|
852
853
|
args: ['window:resize', ['$event']]
|
|
853
854
|
}] } });
|
|
854
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzdELE1BQU0sT0FBTyxnQ0FBZ0M7SUFRM0MsWUFDUyxZQUEwQixFQUN6QixRQUF5QixFQUMxQixJQUFpQixFQUNoQixnQkFBMkMsRUFDM0Msa0JBQXNDLEVBQ3RDLDJCQUF3RCxFQUN4RCxhQUE0QixFQUM1QixxQkFBNEM7UUFQN0MsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBQzNDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QiwwQkFBcUIs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QUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVGLFVBQVU7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDbkIsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUN3QixXQUFXO3NCQUF2RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3RCLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDTSxpQkFBaUI7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWTtnQkFFdkIsMkJBQTJCO3NCQUQxQixTQUFTO3VCQUFDLFlBQVk7Z0JBR3ZCLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRVAsT0FBTztzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUV2QyxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFaEIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQU9kLE9BQU87c0JBQWYsS0FBSztnQkFJK0MsZ0JBQWdCO3NCQUFwRSxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTZUbkQsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIGVmZmVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZGRNdWx0aXBsZVJpc2tDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtbXVsdGlwbGUtcmlzay9hZGQtbXVsdGlwbGUtcmlzay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XG5pbXBvcnQgeyBJc3N1ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lzc3VlLWRhdGEnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0Fzc2Vzc21lbnRDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1hc3Nlc3NtZW50L3dvcmtmbG93LWFzc2Vzc21lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEltcG9ydEFuQXNzZXNzbWVudENvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93LWFzc2Vzc21lbnQvaW1wb3J0LWFuLWFzc2Vzc21lbnQvaW1wb3J0LWFuLWFzc2Vzc21lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFdvcmtmbG93Q29tcGxpYW5jZUNvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93LWNvbXBsaWFuY2Uvd29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dQb2xpY3lDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1wb2xpY3kvd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd1Jpc2tDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1yaXNrL3dvcmtmbG93LXJpc2suY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ0FuSXNzdWVDb21wb25lbnQgfSBmcm9tICcuLy4uL2xvZy1hbi1pc3N1ZS9sb2ctYW4taXNzdWUuY29tcG9uZW50JztcbmltcG9ydCB7IE1vcmVPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLy4uL21vcmUtb3B0aW9uL21vcmUtb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd1Byb2dyYW1Db21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50JztcbmltcG9ydCB7IEdyY09iamVjdENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93L2dyYy1vYmplY3QvZ3JjLW9iamVjdC1jb250YWluZXIvZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVwb3J0QUNhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vcmVwb3J0LWEtY2FzZS9zZXJ2aWNlcy9yZXBvcnQtYS1jYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dDYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVwb3J0LWEtY2FzZS93b3JrZmxvdy1jYXNlL3dvcmtmbG93LWNhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlcG9ydC1jYXNlLXBlcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9zdE1lc3NhZ2VFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWZyYW1lLXR5cGUnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdmNvbXBseS13b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dFbmdpbmVDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBpc0hvc3RSZWZyZXNoQWN0aXZlID0gdHJ1ZTtcbiAgaXNSQ1NlbGVjdGVkID0gZmFsc2U7XG4gIGZlYXR1cmVGbGFnX2dyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xuICBhZGRUb0Nhc2VNb2RlID0gJyc7XG5cbiAgcGVybWlzc2lvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgcHVibGljIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnQ29tbW9uU2VydmljZTogT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlcG9ydEFDYXNlU2VydmljZTogUmVwb3J0QUNhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlOiBSZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZnJhbWVTZXJ2aWNlOiBJZnJhbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jaGVja0N1cnJlbnRXb3JrZmxvdygpO1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLmNhc2VUeXBlTG9hZGVyLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jaGVja1Blcm1pc3Npb24oKTtcbiAgfVxuICBASW5wdXQoKSB3b3JrZmxvd1R5cGUgPSAnJztcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSBvcGVuZWRGcm9tID0gJ0dMT0JBTCc7XG4gIEBJbnB1dCgpIHNvdXJjZTogJ1NBUCcgfCAnV09SS1JPT00nIHwgJycgPSAnJztcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGFsbG93ZWRXb3JrZmxvd3M6IGFueSA9IFtdO1xuICBASW5wdXQoKSBmcmFtZXdvcmtEZXRhaWxzOiBBcnJheTxhbnk+ID0gW107IC8vIG9ubHkgZm9yIGNvbXBsaWFuY2UgcGFydCBmb3IgZnJhbWV3b3JrXG4gIEBJbnB1dCgpIHNlbGVjdGVkUkMgPSAnJztcbiAgQElucHV0KCkgc2Vjb25kYXJ5T3BlblBvcnRhbCA9ICcnO1xuICBASW5wdXQoKSBkZWZhdWx0Umlza1R5cGUgPSAnTk9STUFMJztcbiAgQElucHV0KCkgbW92ZVRvUmVnaXN0ZXJNb2RlID0gJyc7XG4gIEBJbnB1dCgpIHdvcmtmbG93RGV0YWlsczogYW55O1xuICBASW5wdXQoKSByZXBvbnNpYmlsaXR5RGF0YSA9IHtcbiAgICAvLyBvbmx5IHVzZWQgYnkgbG9nIGFuIGlzc3VlXG4gICAgcmlkOiBudWxsLFxuICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogJycsXG4gICAgcmNJZDogbnVsbCxcbiAgICBkdWVEYXRlSWQ6ICcnLFxuICB9O1xuICBASW5wdXQoKSBhc3Nlc3NtZW50UXVlc3Rpb246IGFueSA9IHtcbiAgICBxdWVzdGlvbk5hbWU6ICcnLFxuICAgIHF1ZXN0aW9uTnVtYmVyOiAnJyxcbiAgICBxdWVzdGlvbklkOiAnJyxcbiAgICBhc3Nlc3NtZW50SWQ6ICcnLFxuICAgIGF1ZGl0ZWVJZDogbnVsbCxcbiAgfTtcbiAgQElucHV0KCkgcGlkID0gJyc7XG4gIEBJbnB1dCgpIHByb2dyYW1UeXBlOiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBpc3N1ZURhdGEgPSB7XG4gICAgYXVkaXRQbGFuSWQ6IG51bGwsXG4gICAgYXVkaXRQbGFuTmFtZTogJycsXG4gICAgcmNJZDogbnVsbCxcbiAgfTtcbiAgQElucHV0KCkgZW50cnVzdEJ1dHRvbk5hbWUgPSAnRW50cnVzdCc7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IElzc3VlQ29uZmlndXJhdGlvbjtcbiAgQElucHV0KCkgY29udmVydEZpbGVEYXRhID0ge307XG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2F0ZWdvcnkgPSAnJztcblxuICBASW5wdXQoKSBzZWxlY3RlZFByb2dyYW06IGFueSA9IG51bGw7XG4gIEBJbnB1dCgpIGNhbkZyYW1ld29ya0NoYW5nZTogYm9vbGVhbiA9IHRydWU7IC8vIGlmIGZyYW1ld29yayBjYW4gRWRpdGVkIG9yIG5vdDsgRm9yIENyZWF0ZSBhIHByb2dyYW1cbiAgQElucHV0KCkgLyogICovXG4gIC8qICAqL1xuICBASW5wdXQoKVxuICBhZGRUb1Byb2dyYW1EZXRhaWxzOiB7XG4gICAgX2lkOiBzdHJpbmc7XG4gICAgZnJhbWV3b3JrX25hbWU6IHN0cmluZztcbiAgICBpZD86IG51bWJlcjtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgfSA9IHtcbiAgICBfaWQ6ICcnLFxuICAgIGZyYW1ld29ya19uYW1lOiAnJyxcbiAgICBpZDogMCxcbiAgICB0eXBlOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gIH07XG4gIEBJbnB1dCgpIGdyY1R5cGU6IDAgfCAxIHwgMiB8IDMgPSAwO1xuICBASW5wdXQoKSBpc1NlbmRGb3JBdHRlc3RhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhc3Nlc3NtZW50RGV0YWlsczogYW55O1xuICBASW5wdXQoKSB0ZW1wbGF0ZUlkOiBzdHJpbmcgPSAnJztcblxuICBvcmdEZXRhaWxzOiBhbnk7XG4gIHByb2dyYW1TaW1wbGlmeUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuICBjYXNlRmVhdHVyZUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBhbmltYXRpb24gPSB0cnVlO1xuICB3b3JrZmxvd0xpc3QgPSBmYWxzZTtcbiAgc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICBpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgZGlzYWJsZVdvcmtmbG93Q2hhbmdlITogYm9vbGVhbjtcbiAgY2hlY2twb2ludENvdW50OiBudW1iZXIgPSAwO1xuICByZXBvcnRCeTogc3RyaW5nID0gJyc7XG4gIGN1cnJlbnRCdXNpbmVzc0N5Y2xlOiBhbnkgPSAnJztcbiAgY2FzZVR5cGVQZXJtaXNzaW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ3Jpc2snLCB7IHN0YXRpYzogZmFsc2UgfSkgcmlza0NvbXBvbmVudCE6IFdvcmtmbG93Umlza0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbXVsdGlwbGVSaXNrJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHJpc2tCdWxrVXBsb2FkITogQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtdWx0aXBsZVJlc3BvbnNpYmlsaXR5JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCE6IEFkZE11bHRpcGxlUmlza0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncmVzcG9uc2liaWxpdHknLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY29tcGxpYW5jZSE6IFdvcmtmbG93Q29tcGxpYW5jZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbW9yZU9wdGlvbicsIHsgc3RhdGljOiBmYWxzZSB9KSBtb3JlT3B0aW9uITogTW9yZU9wdGlvbkNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKSBkcm9wZG93biE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duUm93JywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duUm93ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9saWN5JykgcG9saWN5ITogV29ya2Zsb3dQb2xpY3lDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2xvZ0FuSXNzdWUnKSBsb2dJc3N1ZUNvbXBvbmVudCE6IExvZ0FuSXNzdWVDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2Fzc2Vzc21lbnQnKVxuICB3b3JrZmxvd0Fzc2Vzc21lbnRDb21wb25lbnQhOiBXb3JrZmxvd0Fzc2Vzc21lbnRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2ltcG9ydEFzc2Vzc21lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgaW1wb3J0QW5Bc3Nlc3NtZW50ITogSW1wb3J0QW5Bc3Nlc3NtZW50Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdwcm9ncmFtJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByb2dyYW0hOiBXb3JrZmxvd1Byb2dyYW1Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2dyY09iamVjdCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBncmNPYmplY3QhOiBHcmNPYmplY3RDb250YWluZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3JlcG9ydENhc2UnKSByZXBvcnRDYXNlITogV29ya2Zsb3dDYXNlQ29tcG9uZW50O1xuXG4gIGRyb3Bkb3duTGVmdCE6IGFueTtcbiAgZHJvcGRvd25Ub3AhOiBhbnk7XG4gIGRyb3Bkb3duV2lkdGghOiBhbnk7XG4gIGNsb3NlT25Fc2M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gZmVhdHVyZSBmbGFnXG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgb3JnYW5pemF0aW9uRGV0YWlsczogYW55O1xuICBzZWxlY3RlZEFzc2Vzc21lbnQ6IGFueTtcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnRcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgW1xuICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQ/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLmNvbXBsaWFuY2U/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMuaW1wb3J0QW5Bc3Nlc3NtZW50Py5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLmxvZ0lzc3VlQ29tcG9uZW50Py5zaG93U21pbGV5LFxuICAgICAgXS5pbmNsdWRlcyh0cnVlKSB8fFxuICAgICAgdGhpcy5wcm9ncmFtPy5hY3RpdmVMaXN0IHx8XG4gICAgICB0aGlzLmNvbXBsaWFuY2U/LmFjdGl2ZVNlbGVjdG9yIHx8XG4gICAgICB0aGlzLmdyY09iamVjdD8ub3BlbmVkUG9wdXBcbiAgICApIHtcbiAgICAgIC8vRG8gTm90aGluZ1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3dFbmdpbmUoKTtcbiAgICB9XG4gIH1cblxuICB1c2VyTGlzdDogYW55ID0gW107XG4gIGN1cnJlbnRXb3JrZmxvdyE6IGFueTtcbiAgd29ya2Zsb3dUeXBlTGlzdDogYW55ID0gW1xuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIFJlc3BvbnNpYmlsaXR5JyxcbiAgICAgIGNvZGU6ICdDQVInLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdSRVNQT05TSUJJTElUWScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgTXVsdGlwbGUgUmVzcG9uc2liaWxpdGllcycsXG4gICAgICBjb2RlOiAnQ01SJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnTVVMVElQTEVfUkVTUE9OU0lCSUxJVFknLFxuICAgIH0sXG4gICAgeyB3b3JrZmxvd05hbWU6ICdBZGQgYSBSaXNrJywgY29kZTogJ0FBUicsIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUklTSycgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgTXVsdGlwbGUgUmlza3MnLFxuICAgICAgY29kZTogJ0FNUicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ01VTFRJUExFX1JJU0snLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgUG9saWN5JyxcbiAgICAgIGNvZGU6ICdDQVAnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdQT0xJQ1knLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgU3VydmV5JyxcbiAgICAgIGNvZGU6ICdDQVMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdTVVJWRVknLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgRm9ybScsXG4gICAgICBjb2RlOiAnQ0FGJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnRk9STScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdMb2cgYW4gSXNzdWUnLFxuICAgICAgY29kZTogJ0xBSScsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ0lTU1VFJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhbiBBc3Nlc3NtZW50JyxcbiAgICAgIGNvZGU6ICdBQUEnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdBU1NFU1NNRU5UJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0ltcG9ydCBhbiBBc3Nlc3NtZW50JyxcbiAgICAgIGNvZGU6ICdJQUEnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdJTVBPUlRfQVNTRVNTTUVOVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgYSBQcm9ncmFtJyxcbiAgICAgIGNvZGU6ICdDQVBSJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUFJPR1JBTScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgYSBHUkMgT2JqZWN0JyxcbiAgICAgIGNvZGU6ICdHUkMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdHUkNfT0JKRUNUUycsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdSZXBvcnQgYSBDYXNlJyxcbiAgICAgIGNvZGU6ICdSQUMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdSRVBPUlRfQV9DQVNFJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0Fzc2lnbiBjYXNlIHRvIHdvcmtmbG93JyxcbiAgICAgIGNvZGU6ICdBQ1RXJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUkVQT1JUX0FfQ0FTRScsXG4gICAgfSxcbiAgXTtcbiAgYWRkaXRpb25hbEluZm9ybWF0aW9uTGlzdCA9IFtcbiAgICAnT2JqZWN0aXZlJyxcbiAgICAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAnUmVzcG9uc2liaWxpdHkgQ2F0ZWdvcnknLFxuICBdO1xuICBjb25maXJtYXRpb25BbGVydENvbmZpZzogQ29uZmlybWF0aW9uQWxlcnQgPSB7IGlzVmlzaWJsZTogZmFsc2UgfTtcblxuICBjaGVja0N1cnJlbnRXb3JrZmxvdygpIHtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS53b3JrZmxvd0NvZGUuc3Vic2NyaWJlKChjb2RlKSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gJ0FDVycgfHwgY29kZSA9PT0gJ0FDVFcnKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmFkZFRvQ2FzZU1vZGUgPSBjb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFkZFRvQ2FzZU1vZGUgPSAnJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBjbG9zZVdvcmtmbG93RW5naW5lKGV2dD86IGFueSkge1xuICAgIGlmIChldnQ/LmNvbmZpcm0gPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdChldnQgPyBldnQuZXZ0IDogZXZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm0oZXZ0KTtcbiAgICB9XG4gIH1cblxuICBjbG9zZUNvbmZpcm0oZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ0lmIHlvdSBuYXZpZ2F0ZSBhd2F5LCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdpbGwgYmUgbG9zdC4nLFxuICAgICAgYWN0aW9uOiAnV09SS0ZMT1dfQ0xPU0UnLFxuICAgICAgZGF0YTogZXZ0LFxuICAgIH07XG4gIH1cbiAgZXhlY3V0ZUNsb3NlKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dC5hY3Rpb24gPT09ICdZRVMnKSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCgpO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE5ldHdvcmtMaXN0bmVyKCk7XG4gICAgdGhpcy5zZXRXb3JrZmxvdyh0aGlzLndvcmtmbG93VHlwZSwgdGhpcy53b3JrZmxvd1R5cGVMaXN0KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgICB0aGlzLnNldFdvcmtmbG93KHRoaXMud29ya2Zsb3dUeXBlLCB0aGlzLndvcmtmbG93VHlwZUxpc3QpO1xuICAgIHRoaXMuZGVjaWRlVmlld01vcmVPcHRpb24oKTtcbiAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uRGV0YWlscygpO1xuICAgIHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcbiAgICB0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9wcm9ncmFtX3NpbXBsaWZ5J1xuICAgICk7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9ncm91cHMnXG4gICAgKTtcbiAgICB0aGlzLmNhc2VGZWF0dXJlRmxhZyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9jYXNlc19lbmFibGVkJyk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZnkoKTtcbiAgICB0aGlzLmdldEFzc2Vzc21lbnREZXRhaWxzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNoZWNrUGVybWlzc2lvbigpIHtcbiAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24gPVxuICAgICAgdGhpcy5yZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UuaGFzUGVybWlzc2lvbi5zdWJzY3JpYmUoXG4gICAgICAgIChoYXNQZXJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlVHlwZVBlcm1pc3Npb24gPSBoYXNQZXJtaXNzaW9uO1xuICAgICAgICAgIGlmIChoYXNQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrUmVwb3J0Q2FzZVBlcm1pc3Npb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuY2FzZVR5cGVMb2FkZXIubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBzZXROZXR3b3JrTGlzdG5lcigpIHtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgKGUpID0+IHtcbiAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgJ0Nvbm5lY3Rpb24gbG9zdCE8YnI+Q2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpdml0eS4nLFxuICAgICAgICAnYWxlcnQnXG4gICAgICApO1xuICAgIH0pO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIChlKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coXCJZb3UncmUgYmFjayBvbmxpbmUhXCIsICdzdWNjZXNzJyk7XG4gICAgfSk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMud29ya2Zsb3dUeXBlTGlzdCA9IHRoaXMud29ya2Zsb3dUeXBlTGlzdC5maWx0ZXIoKHdvcmtmbG93OiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLmFsbG93ZWRXb3JrZmxvd3MuaW5jbHVkZXMod29ya2Zsb3cucGVybWlzc2lvbklkZW50aWZpZXIpKSB7XG4gICAgICAgIHJldHVybiB3b3JrZmxvdztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnKSB7XG4gICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy5kaXNhYmxlV29ya2Zsb3dDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrUmVwb3J0Q2FzZVBlcm1pc3Npb24oKSB7XG4gICAgY29uc3QgaGFzUGVybWlzc2lvbiA9XG4gICAgICB0aGlzLnJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZS5jaGVja1JlcG9ydEFDYXNlUGVybWlzc2lvbigpO1xuICAgIGlmIChoYXNQZXJtaXNzaW9uICYmIHRoaXMuY2FzZUZlYXR1cmVGbGFnKSB7XG4gICAgICB0aGlzLmFsbG93ZWRXb3JrZmxvd3MucHVzaCgnUkVQT1JUX0FfQ0FTRScpO1xuICAgICAgdGhpcy5hbGxvd2VkV29ya2Zsb3dzID0gdGhpcy5hbGxvd2VkV29ya2Zsb3dzLmZpbHRlcihcbiAgICAgICAgKHdvcmtmbG93OiBhbnkpID0+IHdvcmtmbG93ICE9PSAnSVNTVUUnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFsbG93ZWRXb3JrZmxvd3MgPSB0aGlzLmFsbG93ZWRXb3JrZmxvd3MuZmlsdGVyKFxuICAgICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3cgIT09ICdSRVBPUlRfQV9DQVNFJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1c2VyTGlzdEVtaXR0ZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXNlckxpc3QgPSBldmVudDtcbiAgfVxuXG4gIGRlY2lkZVZpZXdNb3JlT3B0aW9uKHR5cGU/OiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIHRoaXMuY2xvc2VPbkVzYyA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoWydDTVInLCAnQU1SJywgJ0FBQScsICdJQUEnXS5pbmNsdWRlcyh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgIGlmICh0eXBlID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuYWRkVG9DYXNlTW9kZSA9PT0gJ0FDVycpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgdGhpcy5zZXRXb3JrZmxvd1NlbGVjdG9yKHR5cGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09ICdSQUMnKSB7XG4gICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLnNldFdvcmtmbG93U2VsZWN0b3IodHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgc2V0V29ya2Zsb3dTZWxlY3Rvcih0eXBlPzogYm9vbGVhbil7XG4gICAgaWYgKHR5cGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNhc2VSZXBvcnRlZEJ5KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlcG9ydEJ5ID0gZXZlbnQ7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgaWYodGhpcy5hZGRUb0Nhc2VNb2RlID09PSAnQUNXJyB8fCB0aGlzLmFkZFRvQ2FzZU1vZGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5yZXBvcnRDYXNlLmFkZFRvQ2FzZSgpO1xuICAgICAgdGhpcy5zdWJtaXRXb3JrZmxvdygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKSB7XG4gICAgICBjYXNlICdBQVInOlxuICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQuc3VibWl0UmlzaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xBSSc6XG4gICAgICAgIHRoaXMubG9nSXNzdWVDb21wb25lbnQuYWRkSXNzdWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVInOlxuICAgICAgICB0aGlzLmNvbXBsaWFuY2Uuc3VibWl0UmVzcG9uc2liaWxpdHkoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVAnOlxuICAgICAgICB0aGlzLnBvbGljeS5zdWJtaXRQb2xpY3koKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBQUEnOlxuICAgICAgICB0aGlzLndvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudC5zdWJtaXRBc3Nlc3NtZW50KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FQUic6IHtcbiAgICAgICAgdGhpcy5wcm9ncmFtLnNhdmVQcm9ncmFtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnR1JDJzoge1xuICAgICAgICB0aGlzLmdyY09iamVjdC5zYXZlR1JDT2JqZWN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkFDJzoge1xuICAgICAgICB0aGlzLnJlcG9ydENhc2UucmVwb3J0Q2FzZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIGNhc2UgJ0lBQSc6XG4gICAgICAvLyAgIHRoaXMuaW1wb3J0QW5Bc3Nlc3NtZW50LnN1Ym1pdEFzc2Vzc21lbnQoKTtcbiAgICB9XG4gICAgdGhpcy5zdWJtaXRXb3JrZmxvdygpO1xuICB9XG5cbiAgc3VibWl0V29ya2Zsb3coKSB7IFxuICAgIGNvbnN0IG1lc3NhZ2UgPSB7dHlwZTonc3VibWl0J31cbiAgICBjb25zdCB0YXJnZXRPcmlnaW4gPSB0aGlzLmdldE9yaWdpbigpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luKTtcbiAgfSBcbiAgXG4gIHByaXZhdGUgZ2V0T3JpZ2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gIH1cblxuICBlZGl0V29ya2Zsb3coKSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSAhdGhpcy53b3JrZmxvd0xpc3Q7XG4gICAgY29uc3QgZHJvcGRvd24gPSB0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdGhpcy5kcm9wZG93bkxlZnQgPSBkcm9wZG93bi5sZWZ0O1xuICAgIHRoaXMuZHJvcGRvd25Ub3AgPSBkcm9wZG93bi50b3AgKyBkcm9wZG93bi5oZWlnaHQ7XG4gICAgdGhpcy5kcm9wZG93bldpZHRoID0gZHJvcGRvd24ud2lkdGg7XG4gIH1cbiAgY2xvc2VXb3JrZmxvd0xpc3QoKSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSBmYWxzZTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgc2l6ZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSBmYWxzZTtcbiAgfVxuICBjaGFuZ2VXb3JrZmxvdyhldnQ6IGFueSwgc2VsZWN0ZWRXb3JrZmxvdzogYW55KSB7XG4gICAgaWYgKHNlbGVjdGVkV29ya2Zsb3c/LmNvZGUgPT09IHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiAnSWYgeW91IGNoYW5nZSB0aGUgd29ya2Zsb3csIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nLFxuICAgICAgYWN0aW9uOiAnV09SS0ZMT1dfQ0hBTkdFJyxcbiAgICAgIGRhdGE6IHNlbGVjdGVkV29ya2Zsb3csXG4gICAgfTtcbiAgfVxuXG4gIGNvbmZpcm1Xb3JrZmxvd0NoYW5nZShldnQ6IGFueSkge1xuICAgIGlmIChldnQuYWN0aW9uID09PSAnWUVTJykge1xuICAgICAgdGhpcy5jbG9zZU9uRXNjID0gdHJ1ZTtcbiAgICAgIHN3aXRjaCAoZXZ0LnBheWxvYWQuYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ1dPUktGTE9XX0NIQU5HRSc6XG4gICAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSBldnQ/LnBheWxvYWQ/LmRhdGEgPz8gbnVsbDtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLnJlc2V0QWxsKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGVjaWRlVmlld01vcmVPcHRpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRURJVF9SSVNLJzpcbiAgICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQuY3JlYXRlUmlzayh0aGlzLnJpc2tDb21wb25lbnQucmlza0Zvcm0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQT0xJQ1lfUE9SVEFMJzpcbiAgICAgICAgICB0aGlzLnBvbGljeS5jb25maXJtUG9saWN5UG9ydGFsKGV2dC5hY3Rpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdXT1JLRkxPV19DTE9TRSc6XG4gICAgICAgICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoZXZ0Py5wYXlsb2FkPy5kYXRhKTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5pZnJhbWVTZXJ2aWNlLmdldENsb3NlV2Vidmlld01lc3NhZ2UoUG9zdE1lc3NhZ2VFdmVudC5DTE9TRV9XRUJWSUVXLCAnJyk7XG4gICAgICAgICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnBvc3RNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjaGVja3BvaW50JzpcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBvcHRpb24/LmNvZGUgPT09ICdBU1NFU1NNRU5UJyB8fFxuICAgICAgICAgICAgICBvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTJykge1xuICAgICAgICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVtb3ZlQ2hlY2twb2ludCgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1JPTEUnOlxuICAgICAgICAgIHRoaXMucHJvZ3JhbS5yZW1vdmUoZXZ0LnBheWxvYWQuZGF0YSwgJ1JPTEUnKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICduZXctY2hlY2twb2ludHMnOlxuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgJiYgIWV2dC5wYXlsb2FkLmlzRGF0YVJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTJyAmJiAhZXZ0LnBheWxvYWQuaXNEYXRhUmVtb3ZlZCkge1xuICAgICAgICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGV2dC5wYXlsb2FkLmlzQ2hlY2twb2ludENoZWNrZWQgJiZcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5tb3JlT3B0aW9ucy5DSEVDS1BPSU5UU19ORVcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZW1vdmUoJ25ldy1jaGVja3BvaW50cycpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhc3NpZ25lZVR5cGVDaGFuZ2UnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID0gJ0FMTCc7XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9XG4gICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2Uuc2V0TGlzdChcbiAgICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5vcmlnaW5hbEFzc2lnbmVlLFxuICAgICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlWydyZXNwb25zaWJpbGl0eUZvcm0nXVsnYXNzaWduZWVHcm91cHMnXVsnbGlzdCddID1cbiAgICAgICAgICAgICAgW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NlcXVlbnRpYWwnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYW55UmV2aWV3ZXInOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoZXZ0LnBheWxvYWQuYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ1BPTElDWV9QT1JUQUwnOlxuICAgICAgICAgIHRoaXMucG9saWN5LmNvbmZpcm1Qb2xpY3lQb3J0YWwoZXZ0LmFjdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Fzc2lnbmVlVHlwZUNoYW5nZSc6XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPVxuICAgICAgICAgICAgJ0FOWV9PTkUnO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NlcXVlbnRpYWwnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FueVJldmlld2VyJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICBhY3Rpb246ICcnLFxuICAgICAgZGF0YTogbnVsbCxcbiAgICB9O1xuICAgIHJldHVybiBldnQ7XG4gIH1cblxuICBzZXRXb3JrZmxvdyh3b3JrRmxvd0NvZGU6IGFueSwgd29ya0Zsb3dMaXN0OiBhbnkpIHtcbiAgICBjb25zdCBzZWxlY3RlZFdvcmtmbG93ID0gd29ya0Zsb3dMaXN0LmZpbmQoXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Py5jb2RlID09PSB3b3JrRmxvd0NvZGVcbiAgICApO1xuICAgIHNlbGVjdGVkV29ya2Zsb3dcbiAgICAgID8gKHRoaXMuY3VycmVudFdvcmtmbG93ID0gc2VsZWN0ZWRXb3JrZmxvdylcbiAgICAgIDogKHRoaXMuY3VycmVudFdvcmtmbG93ID0gbnVsbCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkV29ya2Zsb3c7XG4gIH1cblxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkge1xuICAgICAgY2FzZSAnQUFSJzpcbiAgICAgICAgdGhpcy5yaXNrQ29tcG9uZW50Py5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTEFJJzpcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUNvbXBvbmVudD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1JBQyc6XG4gICAgICBjYXNlICdBQ1RXJzpcbiAgICAgICAgdGhpcy5yZXBvcnRDYXNlLmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVInOlxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgJ2NvbXBsaWFuY2VfYXVkaXQnXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb3JlT3B0aW9uPy5tb3JlT3B0aW9uc0xpc3Q/LkNBUj8uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNvZGUgPT09ICdBU1NFU1NNRU5UJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XS5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XS5jaGVja2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlPy5hZGRNb3JlSW5mbyhcbiAgICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVJbaW5kZXhdXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcGxpYW5jZT8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUCc6XG4gICAgICAgIHRoaXMucG9saWN5Py5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FQUic6XG4gICAgICAgIHRoaXMucHJvZ3JhbT8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dSQyc6XG4gICAgICAgIHRoaXMuZ3JjT2JqZWN0Py5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlTW9yZU9wdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMubW9yZU9wdGlvbikge1xuICAgICAgdGhpcy5tb3JlT3B0aW9uLnBvcHVsYXRlKGV2ZW50KTtcbiAgICB9XG4gIH1cbiAgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm1vcmVPcHRpb24/LmhpZGVFbGVtZW50cyhldmVudCk7XG4gIH1cblxuICBzaG93Q29uZmlybWF0aW9uUG9wdXAoY29uZmlnOiBDb25maXJtYXRpb25BbGVydCkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSBjb25maWc7XG4gIH1cblxuICBidWxrVXBsb2FkQnJvd3NlKGV2ZW50OiBhbnkpIHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdBTVInOlxuICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLnRyaWdnZXJCcm93c2VGaWxlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ01SJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQudHJpZ2dlckJyb3dzZUZpbGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdJQUEnOlxuICAgICAgICB0aGlzLmltcG9ydEFuQXNzZXNzbWVudC50cmlnZ2VyQnJvd3NlRmlsZSgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25SZXNldEZvcm0oKSB7XG4gICAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XG4gICAgdGhpcy5lbnRydXN0QnV0dG9uTmFtZSA9ICdFbnRydXN0JztcbiAgfVxuXG4gIG9uUmVzZXRHUkNGb3JtKCkge1xuICAgIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xuICB9XG4gIHNoaWZ0VG9FZGl0TW9kZSgpIHtcbiAgICB0aGlzLm1vZGUgPSAnRURJVCc7XG4gIH1cbiAgc2Nyb2xsRm9ybSgpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93blJvdz8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/LnRvcCA8IDM4KSB7XG4gICAgICB0aGlzLmRyb3Bkb3duUm93Py5uYXRpdmVFbGVtZW50Py5jbGFzc0xpc3Q/LmFkZCgnaGlkZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyb3Bkb3duUm93Py5uYXRpdmVFbGVtZW50Py5jbGFzc0xpc3Q/LnJlbW92ZSgnaGlkZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgd2hpY2ggbW9yZSBvcHRpb25zIHdlIGFyZSByZW1vdmluZy5cbiAgICogQHBhcmFtIGlzQ2hlY2twb2ludENoZWNrZWQgIGlzIHRydWUgaWYgdmFsdWUgY2hlY2twb2ludHMgaXMgcmVtb3ZlZCBieSBjbGlja2luZyBvbiBtb3JlIG9wdGlvbnNcbiAgICovXG4gIG9uUmVtb3ZpbmdDaGVja3BvaW50KFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgaXNDaGVja3BvaW50Q2hlY2tlZD86IGJvb2xlYW4sXG4gICAgaXNEYXRhUmVtb3ZlZD86IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgbGV0IG1zZyA9ICcnO1xuICAgIGlmIChldmVudCA9PT0gJ25ldy1jaGVja3BvaW50cycpIHtcbiAgICAgIG1zZyA9XG4gICAgICAgICdJZiB5b3UgY2hvb3NlIHRvIHJlbW92ZSB0aGVzZSBDaGVja3BvaW50cywgdGhleSB3aWxsIGJlIGRlbGV0ZWQgYW5kIGNhbm5vdCBiZSByZXN0b3JlZC4gSG93ZXZlciwgeW91IHdpbGwgc3RpbGwgYmUgYWJsZSB0byBjcmVhdGUgbmV3IENoZWNrcG9pbnRzIG9yIGxpbmsgYW4gQXNzZXNzbWVudC4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgPVxuICAgICAgICAnSWYgeW91IGNob29zZSB0byByZW1vdmUgdGhlc2UgY2hlY2twb2ludHMsIHRoZXkgd2lsbCBiZSBkZWxldGVkIGFuZCBjYW5ub3QgYmUgcmVzdG9yZWQuJztcbiAgICB9XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGFjdGlvbjogZXZlbnQsXG4gICAgICBkYXRhOiB7IHR5cGU6ICdyZXNwb25zaWJpbGl0eUNoZWNrcG9pbnQnIH0sXG4gICAgICBpc0NoZWNrcG9pbnRDaGVja2VkOiBpc0NoZWNrcG9pbnRDaGVja2VkID8/IGZhbHNlLFxuICAgICAgaXNEYXRhUmVtb3ZlZDogaXNEYXRhUmVtb3ZlZCA/PyBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgb25SZW1vdmluZ1JvbGUoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBtc2cgPSAnJztcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIG1zZyA9ICdJZiB5b3UgY2hhbmdlIHRoZSByb2xlcywgYW55IHVuc2F2ZWQgY2hhbmdlcyB3b3VsZCBiZSBsb3N0Lic7XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiBtc2csXG4gICAgICBhY3Rpb246ICdST0xFJyxcbiAgICAgIGRhdGE6IGV2ZW50LFxuICAgIH07XG4gIH1cblxuICBpc0Fzc2Vzc21lbnREaXNhYmxlZChpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVIuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgIGlmIChvcHRpb24/LmNvZGUgPT09ICdBU1NFU1NNRU5UJyB8fCBvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnKSB7XG4gICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRpc2FibGVNb3JlT3B0aW9ucyh3b3JrZmxvd0NvZGU6IGFueSwgZGlzYWJsZWRFbGVtZW50c0NvZGU6IGFueSkge1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0KS5pbmNsdWRlcyh3b3JrZmxvd0NvZGUpKSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0W3dvcmtmbG93Q29kZV0uZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGRpc2FibGVkRWxlbWVudHNDb2RlLmluY2x1ZGVzKG9wdGlvbj8uY29kZSkpIHtcbiAgICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hlY2twb2ludFNlbGVjdGlvbihldmVudDogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSBldmVudDtcbiAgfVxuXG4gIG9uUmNTZWxlY3RlZChpc1JjU2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzUkNTZWxlY3RlZCA9IGlzUmNTZWxlY3RlZDtcbiAgfVxuXG4gIGZldGNoT3JnYW5pemF0aW9uRGV0YWlscygpIHtcbiAgICB0aGlzLm9yZ0NvbW1vblNlcnZpY2U/LmdldE9yZ0RldGFpbHNJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vcmdEZXRhaWxzID0gcmVzO1xuICAgICAgICBpZiAocmVzPy5idXNpbmVzc19jeWNsZXNfYXJyICYmIHJlcz8uYnVzaW5lc3NfY3ljbGVzX2Fycj8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSByZXM/LmJ1c2luZXNzX2N5Y2xlc19hcnIuZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LnNlbGVjdGVkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBzcGxpdHRlZCA9IHNlbGVjdGVkWzBdLmJ1c2luZXNzX2N5Y2xlPy5zcGxpdCgnLScpO1xuICAgICAgICAgIHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGUgPSBgJHtzcGxpdHRlZFswXT8uc2xpY2UoXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKX0gLSAke3NwbGl0dGVkWzFdPy5zbGljZSg0KX1gO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGdldFVzZXJEZXRhaWxzKCkge1xuICAgIHRoaXMub3JnQ29tbW9uU2VydmljZT8uZ2V0T3JnVXNlckluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmF1dGgudXNlckRldGFpbHMgPSByZXM7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG9yZ2FuaXphdGlvbiB1c2VycycsIGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXNzaWduZWVUeXBlQ2hhbmdlKCkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICAnVGhpcyBhY3Rpb24gd2lsbCByZXNldCB0aGUgY2hhbmdlcyBhbmQgYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSBiYWNrIHRvIHRoZSBvcmlnaW5hbCBhc3NpZ25lZS4nLFxuICAgICAgYWN0aW9uOiAnYXNzaWduZWVUeXBlQ2hhbmdlJyxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgaXNSZWRBbGVydDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgLy8gZXZlbnQgPT4gJ3NlcXVlbnRpYWwnIHx8ICdhbnlSZXZpZXdlcidcbiAgb25SZXZpZXdlckNoYW5nZShldmVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgY29tbW9uVGV4dDogc3RyaW5nID1cbiAgICAgICdPbmNlIGNvbmZpcm1lZCwgdGhlIG5ldyByZXZpZXcgd29ya2Zsb3cgd2lsbCBiZSBhcHBsaWNhYmxlIGZvciBhbGwgY3VycmVudCBhbmQgZnV0dXJlIHJldmlldyBkdWUgZGF0ZXMuJztcbiAgICBjb25zdCBtc2cgPVxuICAgICAgY29tbW9uVGV4dCArXG4gICAgICAoZXZlbnQgPT09ICdhbnlSZXZpZXdlcidcbiAgICAgICAgPyBgSWYgYW55IHJldmlld2VyIGhhZCBjb21wbGV0ZWQgdGhlIHJldmlldywgdGhlIGN1cnJlbnQgcmV2aWV3IGR1ZSBkYXRlIHdpbGwgYmUgY2xvc2VkIGFuZCB0aGUgcmV2aWV3IHN0YXR1cyB3aWxsIGJlIHVwZGF0ZWQgdG8gJ0NvbXBsZXRlZCcuYFxuICAgICAgICA6ICcnKTtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgYWN0aW9uOiBldmVudCxcbiAgICB9O1xuICB9XG5cbiAgaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZ5KCkge1xuICAgIGlmICh0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcmVzcG9uc2liaWxpdHlfc2ltcGxpZmljYXRpb24nKSkge1xuICAgICAgdGhpcy53b3JrZmxvd1R5cGVMaXN0WzBdLndvcmtmbG93TmFtZSA9ICdBZGQgYSBSZXNwb25zaWJpbGl0eSc7XG4gICAgICB0aGlzLndvcmtmbG93VHlwZUxpc3RbMV0ud29ya2Zsb3dOYW1lID0gJ0FkZCBNdWx0aXBsZSBSZXNwb25zaWJpbGl0aWVzJztcbiAgICB9XG4gIH1cblxuICAgLy8gVE9ETzogUG9wdWxhdGUgYXNzZXNzbWVudCBkYXRhIGZyb20gYWxyZWFkeSBzZWxlY3RlZCBkYXRhXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYXNzZXNzbWVudERldGFpbHMgOiBzZWxlY3RlZCBhc3Nlc3NtZW50IGRldGFpbHMgbGlrZSBpdCdzIG9iamVjdCBpZCBhbmQgY2F0ZWdvcnlfaWRcbiAgICovXG4gIGdldEFzc2Vzc21lbnREZXRhaWxzKCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy53b3JrZmxvd0RldGFpbHM/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQ7IFxuICAgIGlmKGlkICYmIHRoaXMud29ya2Zsb3dUeXBlID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxuICAgICAgLmdldEFzc2Vzc21lbnREZXRhaWxzQnlJRChpZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0QXNzZXNzbWVudERhdGEocmVzKTtcbiAgICAgIH0pO1xuICB9XG59XG5cbiAgc2V0QXNzZXNzbWVudERhdGEocmVzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gcmVzWzBdLmNhdGVnb3J5WzBdXG4gICAgICAgIGNvbnN0IGFzc2Vzc21lbnREYXRhID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiByZXNbMF0uY2F0ZWdvcnlbMF0uX2lkLFxuICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6IHJlc1swXS5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB7XG4gICAgICAgICAgICBpZDogcmVzWzBdLmFzc2Vzc21lbnRfaWQsXG4gICAgICAgICAgICBhc3Nlc3NtZW50X25hbWU6IHJlc1swXS5hc3Nlc3NtZW50X25hbWUsXG4gICAgICAgICAgICBxdWVzdGlvbnM6IHJlc1swXS5xdWVzdGlvbnNDb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNhdGVnb3J5X2RldGFpbHM6IGNhdGVnb3J5RGV0YWlscyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnQgPSBhc3Nlc3NtZW50RGF0YTtcbiAgXG59XG59XG4iLCI8YXBwLXNuYWNrLWJhcj48L2FwcC1zbmFjay1iYXI+XG48ZGl2IGNsYXNzPVwid29ya2Zsb3ctZW5naW5lLW92ZXJsYXlcIj48L2Rpdj5cblxuPGFwcC1hc3Nlc3NtZW50LWxpc3QgKm5nSWY9XCJ3b3JrZmxvd1R5cGUgPT09ICdBU1NFU1NNRU5UJ1wiIChjYW5jZWxBc3Nlc3NtZW50KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoKVwiIFtpc0VkaXRdPVwidHJ1ZVwiXG4gIFtpc0Z1bGxTY3JlZW5dPVwidHJ1ZVwiIFtzZWxlY3RlZEFzc2Vzc21lbnRdPVwic2VsZWN0ZWRBc3Nlc3NtZW50XCJcbiAgKG9uQXNzZXNzbWVudFNlbGVjdCk9XCJjbG9zZVdvcmtmbG93RW5naW5lKHsgZXZ0OiAkZXZlbnQsIGNvbmZpcm06IGZhbHNlIH0pXCI+PC9hcHAtYXNzZXNzbWVudC1saXN0PlxuPGRpdiAqbmdJZj1cIndvcmtmbG93VHlwZSAhPT0gJ0FTU0VTU01FTlQnXCIgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmVcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIiBbY2xhc3MuYmddPVwiXG4gICAgKCFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8IHJpc2tCdWxrVXBsb2FkPy5zaG93Q2F0ZWdvcnlMaXN0KSAmJlxuICAgICFwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcbiAgXCI+XG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyXCIgW25nU3dpdGNoXT1cImN1cnJlbnRXb3JrZmxvdz8uY29kZVwiXG4gICAgW2NsYXNzLndpdGgtcHJldmlldy1hc3Nlc3NtZW50XT1cIihhdXRoPy5wcmV2aWV3UGFuZWwgfCBhc3luYykgPT09IHRydWVcIiBbY2xhc3Mud2l0aC1mcmVxdWVuY3ldPVwiXG4gICAgICBjb21wbGlhbmNlPy5hY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeScgfHxcbiAgICAgIGNvbXBsaWFuY2U/LmFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knIHx8XG4gICAgICByaXNrQ29tcG9uZW50Py5hY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeScgfHxcbiAgICAgIHBvbGljeT8uYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knIHx8XG4gICAgICBwb2xpY3k/LmFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXG4gICAgXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgpXCIgaWQ9XCJjbG9zZS13b3JrZmxvdy1lbmdpbmUtYnRuXCIgY2xhc3M9XCJjbG9zZVwiIFthcHBUb29sdGlwXT1cIidbRXNjXSB0byBjbG9zZSdcIlxuICAgICAgcGxhY2VtZW50PVwibGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGUgfHwgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcbiAgICAgIFwiIFtjbGFzcy5zbWlsZXktb3BlbmVkXT1cIlxuICAgICAgICByaXNrQ29tcG9uZW50Py5zaG93U21pbGV5IHx8XG4gICAgICAgIGxvZ0lzc3VlQ29tcG9uZW50Py5zaG93U21pbGV5IHx8XG4gICAgICAgIGNvbXBsaWFuY2U/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzIHx8XG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uc2hvd1NtaWxleSB8fFxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnNob3dFeGNlbCB8fFxuICAgICAgICByaXNrQnVsa1VwbG9hZD8uc2hvd1NtaWxleSB8fFxuICAgICAgICByaXNrQnVsa1VwbG9hZD8uc2hvd0V4Y2VsIHx8XG4gICAgICAgIHByb2dyYW0/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgaW1wb3J0QW5Bc3Nlc3NtZW50Py5zaG93U21pbGV5XG4gICAgICBcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTNmOzwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXVpS2l0U2VydmljZS5pc1NtaWxleU9uXCIgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmUtbW9yZVwiXG4gICAgICBbaGlkZGVuXT1cInNob3dNb3JlT3B0aW9uID09PSBmYWxzZSB8fCBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGVcIiBbY2xhc3MucmVhZC1vbmx5XT1cInVpS2l0U2VydmljZT8uaXNMb2FkZXJcIj5cbiAgICAgIDxhcHAtbW9yZS1vcHRpb24gI21vcmVPcHRpb24gW2N1cnJlbnRXb3JrZmxvd109XCJjdXJyZW50V29ya2Zsb3c/LmNvZGVcIiBbaXNFZGl0TW9kZV09XCJtb2RlID09PSAnRURJVCdcIlxuICAgICAgICBbaXNSQ1NlbGVjdGVkXT1cIlxuICAgICAgICAgIGlzUkNTZWxlY3RlZCB8fFxuICAgICAgICAgIChjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09ICdHUkMnICYmXG4gICAgICAgICAgICBncmNPYmplY3Q/Lmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwKVxuICAgICAgICBcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgKHNlbGVjdGVkT3B0aW9uKT1cImFkZE1vcmVJbmZvKCRldmVudClcIiBbaXNQcm9ncmFtU2VsZWN0ZWRdPVwic2VsZWN0ZWRQcm9ncmFtXCJcbiAgICAgICAgW2FsbG93ZWRGZWF0dXJlXT1cImZlYXR1cmVcIiBbb3JnRGV0YWlsc0RhdGFdPVwib3JnRGV0YWlsc1wiIFtpc0F0dHJpYnV0ZXNBdmFpbGFibGVdPVwiXG4gICAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnR1JDJyAmJlxuICAgICAgICAgIGdyY09iamVjdD8uc2VsZWN0ZWRBdHRyaWJ1dGVzPy5hdHRyaWJ1dGVzPy5sZW5ndGggPiAwXG4gICAgICAgIFwiPlxuICAgICAgPC9hcHAtbW9yZS1vcHRpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIndvcmtmbG93LWVuZ2luZS1mb3JtXCIgW2NsYXNzLmRpc2FibGVkXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGVcIiBbY2xhc3Mubm8tc2hhZG93XT1cIlxuICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT0gJ0FNUicgfHxcbiAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09ICdDTVInIHx8XG4gICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PSAnQUFBJyB8fFxuICAgICAgICB1aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiB8fFxuICAgICAgICBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcbiAgICAgIFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIChzY3JvbGwpPVwic2Nyb2xsRm9ybSgpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJcbiAgICAgICAgICAgICFbJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCAnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIG9wZW5lZEZyb21cbiAgICAgICAgICAgIClcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiISh1aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiB8fCBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHMpXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICNkcm9wZG93blJvd1xuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAobW9kZSA9PT0gJ0VESVQnIHx8XG4gICAgICAgICAgICAgICAgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgfHxcbiAgICAgICAgICAgICAgICBkaXNhYmxlV29ya2Zsb3dDaGFuZ2UgfHxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFByb2dyYW0pICYmXG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXG4gICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiY3VycmVudFdvcmtmbG93XCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCIgI2Ryb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImN1cnJlbnRXb3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXCIgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+U2VsZWN0IGEgV29ya2Zsb3c8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0FDVFcnXCIgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QXNzaWduIGEgQ2FzZSB0byBXb3JrZmxvdzxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwiIWN1cnJlbnRXb3JrZmxvdyAmJiBjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFdvcmtmbG93KClcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGEgV29ya2Zsb3dcIiByZWFkb25seSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZCBmaXJzdC1maWVsZFwiICpuZ0lmPVwiY3VycmVudFdvcmtmbG93XCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIHt7Y3VycmVudFdvcmtmbG93IHwganNvbn19IC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTIgdngtbXItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dCBuby13aWR0aFwiIFthcHBUb29sdGlwXT1cImN1cnJlbnRXb3JrZmxvdz8ud29ya2Zsb3dOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCIgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtmbG93VHlwZSA9PT0gJ0FDVFcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJzxzdHJvbmc+Q2FzZSBSZXBvcnRlZCBCeTogPC9zdHJvbmc+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcG9ydEJ5IHwgdXNlclBpcGUgOiB1c2VyTGlzdCk/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFdvcmtmbG93Py53b3JrZmxvd05hbWVcbiAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+e3tjdXJyZW50V29ya2Zsb3c/LndvcmtmbG93TmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZWRpdFdvcmtmbG93KClcIiAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICF3b3JrZmxvd0xpc3QgJiZcbiAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRGcm9tICE9ICdBU1NFU1NNRU5UJyAmJlxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXG4gICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnQ0FQUicgJiZcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJ1c2luZXNzQ3ljbGUgJiZcbiAgICAgICAgICAgICAgICAgICAgIXByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyYW0tYnVzaW5lc3MtY3ljbGUgdngtZnMtMTEgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcHQtMiB2eC1wYi0xIHZ4LXBsLTIgdngtcHItMVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC1tci0xXCI+JiN4ZTk2Mzs8L2k+IFRoaXMgcHJvZ3JhbSBpc1xuICAgICAgICAgICAgICAgICAgYmVpbmcgc2V0LXVwIGZvciB0aGUgYnVzaW5lc3MgY3ljbGU6XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZ3LTYwMCB2eC1tbC0xXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJ1c2luZXNzQ3ljbGVcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8IS0tIDxhcHAtY3JlYXRlLWRvY3VtZW50cz48L2FwcC1jcmVhdGUtZG9jdW1lbnRzPiAtLT5cbiAgICAgICAgPCEtLSA8YXBwLWJ1bGstdmlldz48L2FwcC1idWxrLXZpZXc+IC0tPlxuICAgICAgICA8IS0tIDxhcHAtYnVsay1yZXNwb25zaWJpbGl0eS12aWV3PjwvYXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz4gLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctY29tcGxpYW5jZSAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxuICAgICAgICAgIFtpc0VudHJ1c3RdPVwiZW50cnVzdEJ1dHRvbk5hbWUudG9Mb3dlckNhc2UoKSA9PSAnZW50cnVzdCdcIiBbcmVzcG9uc2liaWxpdHlJZF09XCJpZFwiIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFtmcmFtZXdvcmtEZXRhaWxzXT1cImZyYW1ld29ya0RldGFpbHNcIiBbYXNzZXNzbWVudERldGFpbHNdPVwiYXNzZXNzbWVudERldGFpbHNcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiICpuZ1N3aXRjaENhc2U9XCInQ0FSJ1wiICNyZXNwb25zaWJpbGl0eVxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKCRldmVudClcIiBbc2VsZWN0ZWRSQ109XCJzZWxlY3RlZFJDXCJcbiAgICAgICAgICBbY2xvc2VPbkVzY109XCJjbG9zZU9uRXNjXCIgKGFzc2lnbmVlVHlwZUNoYW5nZSk9XCJhc3NpZ25lZVR5cGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uUmV2aWV3ZXJUeXBlQ2hhbmdlKT1cIm9uUmV2aWV3ZXJDaGFuZ2UoJGV2ZW50KVwiIFtmZWF0dXJlXT1cImZlYXR1cmVcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICAocmNTZWxlY3RlZCk9XCJvblJjU2VsZWN0ZWQoJGV2ZW50KVwiIChyZXNldEZvcm0pPVwib25SZXNldEZvcm0oKVwiXG4gICAgICAgICAgKG9uUmVtb3ZpbmdDaGVja3BvaW50KT1cIm9uUmVtb3ZpbmdDaGVja3BvaW50KCRldmVudCwgZmFsc2UsIHRydWUpXCJcbiAgICAgICAgICAoaXNBc3Nlc3NtZW50RGlzYWJsZWQpPVwiaXNBc3Nlc3NtZW50RGlzYWJsZWQoJGV2ZW50KVwiIChjaGVja3BvaW50Q291bnRVcGRhdGVkKT1cImNoZWNrcG9pbnRDb3VudCA9ICRldmVudFwiXG4gICAgICAgICAgW3NlbGVjdGVkUHJvZ3JhbV09XCJzZWxlY3RlZFByb2dyYW1cIiBbcmVzcG9uc2liaWxpdHlEZXRhaWxzXT1cIndvcmtmbG93RGV0YWlsc1wiPjwvYXBwLXdvcmtmbG93LWNvbXBsaWFuY2U+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctcmlzayBbc2Vjb25kYXJ5T3BlblBvcnRhbF09XCJzZWNvbmRhcnlPcGVuUG9ydGFsXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FBUidcIiAjcmlza1xuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIlxuICAgICAgICAgIChoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiIChyZWZyZXNoRm9ybSk9XCJvblJlc2V0Rm9ybSgpXCJcbiAgICAgICAgICAocmNTZWxlY3RlZCk9XCJvblJjU2VsZWN0ZWQoJGV2ZW50KVwiIFttb2RlXT1cIm1vZGVcIiBbcmlza0lkXT1cImlkXCIgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvYXBwLXdvcmtmbG93LXJpc2s+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctcG9saWN5IChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKm5nU3dpdGNoQ2FzZT1cIidDQVAnXCIgI3BvbGljeVxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIiAoc2hpZnRUb0VkaXRNb2RlKT1cInNoaWZ0VG9FZGl0TW9kZSgpXCJcbiAgICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCIgW3BvbGljeUlkXT1cImlkXCIgW21vZGVdPVwibW9kZVwiIFt0ZW1wbGF0ZUlkXT1cInRlbXBsYXRlSWRcIlxuICAgICAgICAgIFtjb252ZXJ0RmlsZURhdGFdPVwiY29udmVydEZpbGVEYXRhXCIgW3NlbGVjdGVkQ2F0ZWdvcnldPVwic2VsZWN0ZWRDYXRlZ29yeVwiXG4gICAgICAgICAgW2lzU2VuZEZvckF0dGVzdGF0aW9uXT1cImlzU2VuZEZvckF0dGVzdGF0aW9uXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCI+PC9hcHAtd29ya2Zsb3ctcG9saWN5PlxuICAgICAgICA8YXBwLXdvcmtmbG93LXN1cnZleS1mb3JtICpuZ1N3aXRjaENhc2U9XCInQ0FTJ1wiICNzdXJ2ZXlGb3JtPjwvYXBwLXdvcmtmbG93LXN1cnZleS1mb3JtPlxuICAgICAgICA8YXBwLWFkZC1tdWx0aXBsZS1yaXNrIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKm5nU3dpdGNoQ2FzZT1cIidBTVInXCIgI211bHRpcGxlUmlza1xuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmVcIj48L2FwcC1hZGQtbXVsdGlwbGUtcmlzaz5cbiAgICAgICAgPCEtLSA8YXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eSAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NNUidcIiAjbXVsdGlwbGVSZXNwb25zaWJpbGl0eT5cbiAgICAgICAgICAgICAgICA8L2FwcC1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHk+IC0tPlxuXG4gICAgICAgIDxsaWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lciBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDTVInXCIgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiICNtdWx0aXBsZVJlc3BvbnNpYmlsaXR5PjwvbGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXI+XG4gICAgICAgIDwhLS0gTmV3IExvZyBhbiBJc3N1ZSAtLT5cbiAgICAgICAgPGFwcC1sb2ctYW4taXNzdWUgW2lzc3VlRGV0YWlsc109XCJpc3N1ZURhdGFcIiAqbmdTd2l0Y2hDYXNlPVwiJ0xBSSdcIiBbcmVwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIlxuICAgICAgICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIFtzb3VyY2VdPVwic291cmNlXCIgW2lzc3VlSWRdPVwiaWRcIlxuICAgICAgICAgICNsb2dBbklzc3VlIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCIgWyhtb2RlKV09XCJtb2RlXCI+XG4gICAgICAgIDwvYXBwLWxvZy1hbi1pc3N1ZT5cbiAgICAgICAgPCEtLSBPbGQgTG9nIGFuIGlzc3VlIC0tPlxuICAgICAgICA8IS0tIDxhcHAtbG9nLWFuLWlzc3VlICpuZ1N3aXRjaENhc2U9XCInTEFJJ1wiIFtyZXNwb25zaWJpbGl0aWVzRGF0YV09XCJyZXBvbnNpYmlsdHlEYXRhXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgICAgICAgI2xvZ0FuSXNzdWUgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2FwcC1sb2ctYW4taXNzdWU+IC0tPlxuXG4gICAgICAgIDxhcHAtd29ya2Zsb3ctYXNzZXNzbWVudCBbYXNzZXNzbWVudElkXT1cImlkXCIgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKm5nU3dpdGNoQ2FzZT1cIidBQUEnXCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocmVmcmVzaEZvcm0pPVwib25SZXNldEZvcm0oKVwiIFttb2RlXT1cIm1vZGVcIiAjYXNzZXNzbWVudD48L2FwcC13b3JrZmxvdy1hc3Nlc3NtZW50PlxuICAgICAgICA8YXBwLWltcG9ydC1hbi1hc3Nlc3NtZW50IChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKm5nU3dpdGNoQ2FzZT1cIidJQUEnXCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocmVmcmVzaEZvcm0pPVwib25SZXNldEZvcm0oKVwiICNpbXBvcnRBc3Nlc3NtZW50PjwvYXBwLWltcG9ydC1hbi1hc3Nlc3NtZW50PlxuICAgICAgICA8IS0tIDxhcHAtd29ya2Zsb3ctcHJvZ3JhbSAjcHJvZ3JhbSAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCIgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCI+PC9hcHAtd29ya2Zsb3ctcHJvZ3JhbT4gLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctcHJvZ3JhbSAjcHJvZ3JhbSAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCIgW29yZ0RldGFpbHNdPVwib3JnRGV0YWlsc1wiIFthbGxvd2VkRmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICAgICAgICAoZGlzYWJsZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImRpc2FibGVNb3JlT3B0aW9ucygnQ0FQUicsICRldmVudClcIiBbcHJvZ3JhbVR5cGVdPVwicHJvZ3JhbVR5cGVcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiXG4gICAgICAgICAgKHNob3dDb25maXJtYXRpb25BbGVydCk9XCJzaG93Q29uZmlybWF0aW9uUG9wdXAoJGV2ZW50KVwiIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHJlZnJlc2hGb3JtKT1cIm9uUmVzZXRGb3JtKClcIiBbbW9kZV09XCJtb2RlXCIgW3Byb2dyYW1JZF09XCJpZFwiIFtwcm9ncmFtRGV0YWlsc109XCJ3b3JrZmxvd0RldGFpbHNcIlxuICAgICAgICAgIChvblJlbW92aW5nUm9sZSk9XCJvblJlbW92aW5nUm9sZSgkZXZlbnQpXCIgW2NhbkZyYW1ld29ya0NoYW5nZV09XCJjYW5GcmFtZXdvcmtDaGFuZ2VcIlxuICAgICAgICAgIFthZGRUb1Byb2dyYW1EZXRhaWxzXT1cImFkZFRvUHJvZ3JhbURldGFpbHNcIj48L2FwcC13b3JrZmxvdy1wcm9ncmFtPlxuXG4gICAgICAgIDwhLS0gR1JDIE9iamVjdCAtLT5cbiAgICAgICAgPGxpYi1ncmMtb2JqZWN0LWNvbnRhaW5lciAjZ3JjT2JqZWN0ICpuZ1N3aXRjaENhc2U9XCInR1JDJ1wiIFtncmNUeXBlXT1cImdyY1R5cGVcIiBbTU9ERV09XCJtb2RlXCIgW0lEXT1cImlkXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIiAocmVzZXRGb3JtKT1cIm9uUmVzZXRHUkNGb3JtKClcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAoaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucygkZXZlbnQpXCI+PC9saWItZ3JjLW9iamVjdC1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBSZXBvcnQgYSBDYXNlIC0tPlxuICAgICAgICA8YXBwLXdvcmtmbG93LWNhc2UgKm5nU3dpdGNoQ2FzZT1cIidSQUMnXCIgI3JlcG9ydENhc2UgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIFtzb3VyY2VdPVwic291cmNlXCIgW2Nhc2VJZF09XCJpZFwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIiBbYXNzZXNzbWVudFF1ZXN0aW9uXT1cImFzc2Vzc21lbnRRdWVzdGlvblwiXG4gICAgICAgICAgW2Nhc2VUeXBlUGVybWlzc2lvbl09XCJjYXNlVHlwZVBlcm1pc3Npb25cIiBbd29ya2Zsb3dUeXBlXT1cIidSQUMnXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCI+PC9hcHAtd29ya2Zsb3ctY2FzZT5cbiAgICAgICAgPCEtLSBBc3NpZ24gY2FzZSB0byB3b3JrZmxvdyAtLT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1jYXNlICpuZ1N3aXRjaENhc2U9XCInQUNUVydcIiAjcmVwb3J0Q2FzZSBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgW3NvdXJjZV09XCJzb3VyY2VcIiBbY2FzZUlkXT1cImlkXCJcbiAgICAgICAgICBbbW9kZV09XCJtb2RlXCIgW3dvcmtmbG93VHlwZV09XCInQUNUVydcIiBbcmVzcG9uc2liaWxpdHlEYXRhXT1cInJlcG9uc2liaWxpdHlEYXRhXCJcbiAgICAgICAgICBbYXNzZXNzbWVudFF1ZXN0aW9uXT1cImFzc2Vzc21lbnRRdWVzdGlvblwiIFtjYXNlVHlwZVBlcm1pc3Npb25dPVwiY2FzZVR5cGVQZXJtaXNzaW9uXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGNhc2VSZXBvcnRlZEJ5KT1cImNhc2VSZXBvcnRlZEJ5KCRldmVudClcIiAodXNlckxpc3RFbWl0dGVyKT1cInVzZXJMaXN0RW1pdHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIj48L2FwcC13b3JrZmxvdy1jYXNlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiWydSQUMnLCAnQUNUVyddLmluY2x1ZGVzKGN1cnJlbnRXb3JrZmxvdz8uY29kZSlcIiBjbGFzcz1cInZ4LWQtZmxleFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKGNsaWNrKT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoKVwiPlxuICAgICAgICAgIENBTkNFTFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgbW9kZSA9PT0gXCJFRElUXCIgJiYgY3VycmVudFdvcmtmbG93Py5jb2RlID09PSBcIlJBQ1wiXG4gICAgICAgICAgPyBcIlVwZGF0ZVwiXG4gICAgICAgICAgOiBcIlJlcG9ydFwiXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FBUidcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3tcbiAgICAgICAgbW9kZSA9PT0gXCJFRElUXCIgJiYgb3BlbmVkRnJvbSAhPT0gXCJNT1ZFX1RPX1JFR0lTVEVSXCJcbiAgICAgICAgPyBcIlVwZGF0ZVwiXG4gICAgICAgIDogXCJBZGRcIlxuICAgICAgICB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8XG4gICAgICAgICAgIXJpc2tCdWxrVXBsb2FkPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVxuICAgICAgICBcIiAoY2xpY2spPVwiYnVsa1VwbG9hZEJyb3dzZSgnQU1SJylcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FNUidcIj5cbiAgICAgICAgQnJvd3NlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAoY2xpY2spPVwiYnVsa1VwbG9hZEJyb3dzZSgnQ01SJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NNUidcIj5cbiAgICAgICAgQnJvd3NlXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBUaGlzIGhhcyB0ZXJuYXJ5IG9wZXJhdGlvbiB0byBoYW5kbGUgdGhlIGJvdGggc2NlbmFyaW9zIG9mIGhvdyBpdCB3b3JrcyB3aXRoIGNvbXBsaWFuY2UgYW5kIHByb2dyYW0gbW9kdWxlLCBwbGVhc2UgZG9uJ3QgY2hhbmdlIHRoaXMuIC0tPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ1N3aXRjaENhc2U9XCInQ0FSJ1wiPlxuICAgICAgICB7e1xuICAgICAgICBlbnRydXN0QnV0dG9uTmFtZSAhPT0gXCJcIiAmJiBtb2RlICE9PSBcIkVESVRcIlxuICAgICAgICA/IGVudHJ1c3RCdXR0b25OYW1lXG4gICAgICAgIDogbW9kZSA9PT0gXCJFRElUXCIgJiYgIXdvcmtmbG93RGV0YWlscz8uZHVwbGljYXRlXG4gICAgICAgID8gXCJVUERBVEVcIlxuICAgICAgICA6IFwiRW50cnVzdFwiXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAoY2xpY2spPVwic3VibWl0KClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NBUCdcIj5cbiAgICAgICAge3tcbiAgICAgICAgbW9kZSA9PSBcIkVESVRcIlxuICAgICAgICA/IGlzU2VuZEZvckF0dGVzdGF0aW9uXG4gICAgICAgID8gXCJTZW5kIGZvciBhdHRlc3RhdGlvblwiXG4gICAgICAgIDogXCJVcGRhdGVcIlxuICAgICAgICA6IFwiQ29udGludWUgdG8gZHJhZnRcIlxuICAgICAgICB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKm5nU3dpdGNoQ2FzZT1cIidDQVMnXCI+XG4gICAgICAgIENvbnRpbnVlIHRvIGRyYWZ0XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0xBSSdcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJBZGRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKm5nU3dpdGNoQ2FzZT1cIidBQUEnXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgIHt7IG1vZGUgPT09IFwiRURJVFwiID8gXCJVcGRhdGVcIiA6IFwiQ29udGludWUgdG8gZHJhZnRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKGNsaWNrKT1cImJ1bGtVcGxvYWRCcm93c2UoJ0lBQScpXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidJQUEnXCI+XG4gICAgICAgIEJyb3dzZVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8ICFwcm9ncmFtPy52YWxpZFwiIChjbGljayk9XCJzdWJtaXQoJ0NBUFInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJTYXZlXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCB8fCAhcHJvZ3JhbT8udmFsaWRcIiAoY2xpY2spPVwic3VibWl0KCdDQVBSJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCI+XG4gICAgICAgIHt7IG1vZGUgPT09IFwiRURJVFwiID8gXCJVcGRhdGVcIiA6IFwiU2F2ZVwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiAoY2xpY2spPVwic3VibWl0KClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0dSQydcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJTYXZlXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgKm5nSWY9XCJ3b3JrZmxvd0xpc3RcIiAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0xpc3QoKVwiIFtzdHlsZS50b3AucHhdPVwiZHJvcGRvd25Ub3BcIlxuICAgICAgICBbc3R5bGUubGVmdC5weF09XCJkcm9wZG93bkxlZnRcIiBbc3R5bGUud2lkdGgucHhdPVwiZHJvcGRvd25XaWR0aFwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1saXN0XCI+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCB3b3JrZmxvdyBvZiB3b3JrZmxvd1R5cGVMaXN0XCIgKGNsaWNrKT1cImNoYW5nZVdvcmtmbG93KCRldmVudCwgd29ya2Zsb3cpXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvICpuZ0lmPVwid29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1wiIFt2YWx1ZV09XCJ3b3JrZmxvdz8uY29kZVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gd29ya2Zsb3c/LmNvZGVcIj5cbiAgICAgICAgICAgICAge3sgd29ya2Zsb3c/LndvcmtmbG93TmFtZSB9fTwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vdmVybGF5XCIgKm5nSWY9XCJ3b3JrZmxvd0xpc3RcIiAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0xpc3QoKVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxhcHAtY29uZmlybWF0aW9uLWFsZXJ0IGlkPVwiY29uZmlybWF0aW9uLWRpYWxvZ3VlXCIgKGFjdGlvbik9XCJjb25maXJtV29ya2Zsb3dDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAqbmdJZj1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGVcIiBbbWVzc2FnZV09XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8ubWVzc2FnZVwiXG4gICAgICBbY29uZmlnXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnXCI+PC9hcHAtY29uZmlybWF0aW9uLWFsZXJ0PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
855
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzdELE1BQU0sT0FBTyxnQ0FBZ0M7SUFRM0MsWUFDUyxZQUEwQixFQUN6QixRQUF5QixFQUMxQixJQUFpQixFQUNoQixnQkFBMkMsRUFDM0Msa0JBQXNDLEVBQ3RDLDJCQUF3RCxFQUN4RCxhQUE0QixFQUM1QixxQkFBNEM7UUFQN0MsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBQzNDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QiwwQkFBcUIs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TSxFQUFFLEtBQUssRUFBRTtnQkFHdEQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFRixVQUFVO3NCQUFyRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ25CLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDd0IsV0FBVztzQkFBdkQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUN0QixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ00saUJBQWlCO3NCQUF6QyxTQUFTO3VCQUFDLFlBQVk7Z0JBRXZCLDJCQUEyQjtzQkFEMUIsU0FBUzt1QkFBQyxZQUFZO2dCQUd2QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVQLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFdkMsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRWhCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFPZCxPQUFPO3NCQUFmLEtBQUs7Z0JBSStDLGdCQUFnQjtzQkFBcEUsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE4VG5ELFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgVmlld0NoaWxkLFxuICBlZmZlY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkFsZXJ0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maXJtYXRpb24tYWxlcnQnO1xuaW1wb3J0IHsgSXNzdWVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pc3N1ZS1kYXRhJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctYXNzZXNzbWVudC93b3JrZmxvdy1hc3Nlc3NtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbXBvcnRBbkFzc2Vzc21lbnRDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1hc3Nlc3NtZW50L2ltcG9ydC1hbi1hc3Nlc3NtZW50L2ltcG9ydC1hbi1hc3Nlc3NtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd0NvbXBsaWFuY2VDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IFdvcmtmbG93UG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dSaXNrQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcmlzay93b3JrZmxvdy1yaXNrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dBbklzc3VlQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9sb2ctYW4taXNzdWUvbG9nLWFuLWlzc3VlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb3JlT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9tb3JlLW9wdGlvbi9tb3JlLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmNPYmplY3RDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy9ncmMtb2JqZWN0L2dyYy1vYmplY3QtY29udGFpbmVyL2dyYy1vYmplY3QtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlcG9ydEFDYXNlU2VydmljZSB9IGZyb20gJy4uL3JlcG9ydC1hLWNhc2Uvc2VydmljZXMvcmVwb3J0LWEtY2FzZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtmbG93Q2FzZUNvbXBvbmVudCB9IGZyb20gJy4uL3JlcG9ydC1hLWNhc2Uvd29ya2Zsb3ctY2FzZS93b3JrZmxvdy1jYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZXBvcnQtY2FzZS1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2lmcmFtZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvc3RNZXNzYWdlRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lmcmFtZS10eXBlJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZjb21wbHktd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93RW5naW5lQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgaXNIb3N0UmVmcmVzaEFjdGl2ZSA9IHRydWU7XG4gIGlzUkNTZWxlY3RlZCA9IGZhbHNlO1xuICBmZWF0dXJlRmxhZ19ncm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkVG9DYXNlTW9kZSA9ICcnO1xuXG4gIHBlcm1pc3Npb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIG9yZ0NvbW1vblNlcnZpY2U6IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvcnRBQ2FzZVNlcnZpY2U6IFJlcG9ydEFDYXNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZTogUmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY2hlY2tDdXJyZW50V29ya2Zsb3coKTtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5jYXNlVHlwZUxvYWRlci5uZXh0KHRydWUpO1xuICAgIHRoaXMuY2hlY2tQZXJtaXNzaW9uKCk7XG4gIH1cbiAgQElucHV0KCkgd29ya2Zsb3dUeXBlID0gJyc7XG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcbiAgQElucHV0KCkgaWQgPSAnJztcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICdHTE9CQUwnO1xuICBASW5wdXQoKSBzb3VyY2U6ICdTQVAnIHwgJ1dPUktST09NJyB8ICcnID0gJyc7XG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBhbGxvd2VkV29ya2Zsb3dzOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgZnJhbWV3b3JrRGV0YWlsczogQXJyYXk8YW55PiA9IFtdOyAvLyBvbmx5IGZvciBjb21wbGlhbmNlIHBhcnQgZm9yIGZyYW1ld29ya1xuICBASW5wdXQoKSBzZWxlY3RlZFJDID0gJyc7XG4gIEBJbnB1dCgpIHNlY29uZGFyeU9wZW5Qb3J0YWwgPSAnJztcbiAgQElucHV0KCkgZGVmYXVsdFJpc2tUeXBlID0gJ05PUk1BTCc7XG4gIEBJbnB1dCgpIG1vdmVUb1JlZ2lzdGVyTW9kZSA9ICcnO1xuICBASW5wdXQoKSB3b3JrZmxvd0RldGFpbHM6IGFueTtcbiAgQElucHV0KCkgcmVwb25zaWJpbGl0eURhdGEgPSB7XG4gICAgLy8gb25seSB1c2VkIGJ5IGxvZyBhbiBpc3N1ZVxuICAgIHJpZDogbnVsbCxcbiAgICByZXNwb25zaWJpbGl0eU5hbWU6ICcnLFxuICAgIHJjSWQ6IG51bGwsXG4gICAgZHVlRGF0ZUlkOiAnJyxcbiAgfTtcbiAgQElucHV0KCkgYXNzZXNzbWVudFF1ZXN0aW9uOiBhbnkgPSB7XG4gICAgcXVlc3Rpb25OYW1lOiAnJyxcbiAgICBxdWVzdGlvbk51bWJlcjogJycsXG4gICAgcXVlc3Rpb25JZDogJycsXG4gICAgYXNzZXNzbWVudElkOiAnJyxcbiAgICBhdWRpdGVlSWQ6IG51bGwsXG4gIH07XG4gIEBJbnB1dCgpIHBpZCA9ICcnO1xuICBASW5wdXQoKSBwcm9ncmFtVHlwZTogbnVtYmVyID0gMTtcbiAgQElucHV0KCkgaXNzdWVEYXRhID0ge1xuICAgIGF1ZGl0UGxhbklkOiBudWxsLFxuICAgIGF1ZGl0UGxhbk5hbWU6ICcnLFxuICAgIHJjSWQ6IG51bGwsXG4gIH07XG4gIEBJbnB1dCgpIGVudHJ1c3RCdXR0b25OYW1lID0gJ0VudHJ1c3QnO1xuICBASW5wdXQoKSBjb25maWchOiBJc3N1ZUNvbmZpZ3VyYXRpb247XG4gIEBJbnB1dCgpIGNvbnZlcnRGaWxlRGF0YSA9IHt9O1xuICBASW5wdXQoKSBzZWxlY3RlZENhdGVnb3J5ID0gJyc7XG5cbiAgQElucHV0KCkgc2VsZWN0ZWRQcm9ncmFtOiBhbnkgPSBudWxsO1xuICBASW5wdXQoKSBjYW5GcmFtZXdvcmtDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlOyAvLyBpZiBmcmFtZXdvcmsgY2FuIEVkaXRlZCBvciBub3Q7IEZvciBDcmVhdGUgYSBwcm9ncmFtXG4gIEBJbnB1dCgpIC8qICAqL1xuICAvKiAgKi9cbiAgQElucHV0KClcbiAgYWRkVG9Qcm9ncmFtRGV0YWlsczoge1xuICAgIF9pZDogc3RyaW5nO1xuICAgIGZyYW1ld29ya19uYW1lOiBzdHJpbmc7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIH0gPSB7XG4gICAgX2lkOiAnJyxcbiAgICBmcmFtZXdvcmtfbmFtZTogJycsXG4gICAgaWQ6IDAsXG4gICAgdHlwZTogJycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICB9O1xuICBASW5wdXQoKSBncmNUeXBlOiAwIHwgMSB8IDIgfCAzID0gMDtcbiAgQElucHV0KCkgaXNTZW5kRm9yQXR0ZXN0YXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYXNzZXNzbWVudERldGFpbHM6IGFueTtcbiAgQElucHV0KCkgdGVtcGxhdGVJZDogc3RyaW5nID0gJyc7XG5cbiAgb3JnRGV0YWlsczogYW55O1xuICBwcm9ncmFtU2ltcGxpZnlGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmeUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2FzZUZlYXR1cmVGbGFnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgd29ya2Zsb3dMaXN0ID0gZmFsc2U7XG4gIHNob3dNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gIGRpc2FibGVXb3JrZmxvd0NoYW5nZSE6IGJvb2xlYW47XG4gIGNoZWNrcG9pbnRDb3VudDogbnVtYmVyID0gMDtcbiAgcmVwb3J0Qnk6IHN0cmluZyA9ICcnO1xuICBjdXJyZW50QnVzaW5lc3NDeWNsZTogYW55ID0gJyc7XG4gIGNhc2VUeXBlUGVybWlzc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdyaXNrJywgeyBzdGF0aWM6IGZhbHNlIH0pIHJpc2tDb21wb25lbnQhOiBXb3JrZmxvd1Jpc2tDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ211bHRpcGxlUmlzaycsIHsgc3RhdGljOiBmYWxzZSB9KVxuICByaXNrQnVsa1VwbG9hZCE6IEFkZE11bHRpcGxlUmlza0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbXVsdGlwbGVSZXNwb25zaWJpbGl0eScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQhOiBBZGRNdWx0aXBsZVJpc2tDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3Jlc3BvbnNpYmlsaXR5JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGNvbXBsaWFuY2UhOiBXb3JrZmxvd0NvbXBsaWFuY2VDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ21vcmVPcHRpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9yZU9wdGlvbiE6IE1vcmVPcHRpb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJykgZHJvcGRvd24hOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93blJvdycsIHsgc3RhdGljOiBmYWxzZSB9KSBkcm9wZG93blJvdyE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvbGljeScpIHBvbGljeSE6IFdvcmtmbG93UG9saWN5Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdsb2dBbklzc3VlJykgbG9nSXNzdWVDb21wb25lbnQhOiBMb2dBbklzc3VlQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdhc3Nlc3NtZW50JylcbiAgd29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50ITogV29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdpbXBvcnRBc3Nlc3NtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGltcG9ydEFuQXNzZXNzbWVudCE6IEltcG9ydEFuQXNzZXNzbWVudENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncHJvZ3JhbScsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm9ncmFtITogV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdncmNPYmplY3QnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZ3JjT2JqZWN0ITogR3JjT2JqZWN0Q29udGFpbmVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdyZXBvcnRDYXNlJykgcmVwb3J0Q2FzZSE6IFdvcmtmbG93Q2FzZUNvbXBvbmVudDtcblxuICBkcm9wZG93bkxlZnQhOiBhbnk7XG4gIGRyb3Bkb3duVG9wITogYW55O1xuICBkcm9wZG93bldpZHRoITogYW55O1xuICBjbG9zZU9uRXNjOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIGZlYXR1cmUgZmxhZ1xuICBASW5wdXQoKSBmZWF0dXJlOiBhbnk7XG4gIG9yZ2FuaXphdGlvbkRldGFpbHM6IGFueTtcbiAgc2VsZWN0ZWRBc3Nlc3NtZW50OiBhbnk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50XG4gICkge1xuICAgIGlmIChcbiAgICAgIFtcbiAgICAgICAgdGhpcy5yaXNrQ29tcG9uZW50Py5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkPy5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uc2hvd1NtaWxleSxcbiAgICAgICAgdGhpcy5jb21wbGlhbmNlPy5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLmltcG9ydEFuQXNzZXNzbWVudD8uc2hvd1NtaWxleSxcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUNvbXBvbmVudD8uc2hvd1NtaWxleSxcbiAgICAgIF0uaW5jbHVkZXModHJ1ZSkgfHxcbiAgICAgIHRoaXMucHJvZ3JhbT8uYWN0aXZlTGlzdCB8fFxuICAgICAgdGhpcy5jb21wbGlhbmNlPy5hY3RpdmVTZWxlY3RvciB8fFxuICAgICAgdGhpcy5ncmNPYmplY3Q/Lm9wZW5lZFBvcHVwXG4gICAgKSB7XG4gICAgICAvL0RvIE5vdGhpbmdcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZVdvcmtmbG93RW5naW5lKCk7XG4gICAgfVxuICB9XG5cbiAgdXNlckxpc3Q6IGFueSA9IFtdO1xuICBjdXJyZW50V29ya2Zsb3chOiBhbnk7XG4gIHdvcmtmbG93VHlwZUxpc3Q6IGFueSA9IFtcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgYSBSZXNwb25zaWJpbGl0eScsXG4gICAgICBjb2RlOiAnQ0FSJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUkVTUE9OU0lCSUxJVFknLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIE11bHRpcGxlIFJlc3BvbnNpYmlsaXRpZXMnLFxuICAgICAgY29kZTogJ0NNUicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ01VTFRJUExFX1JFU1BPTlNJQklMSVRZJyxcbiAgICB9LFxuICAgIHsgd29ya2Zsb3dOYW1lOiAnQWRkIGEgUmlzaycsIGNvZGU6ICdBQVInLCBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1JJU0snIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQWRkIE11bHRpcGxlIFJpc2tzJyxcbiAgICAgIGNvZGU6ICdBTVInLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdNVUxUSVBMRV9SSVNLJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIFBvbGljeScsXG4gICAgICBjb2RlOiAnQ0FQJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUE9MSUNZJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIFN1cnZleScsXG4gICAgICBjb2RlOiAnQ0FTJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnU1VSVkVZJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIEZvcm0nLFxuICAgICAgY29kZTogJ0NBRicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ0ZPUk0nLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnTG9nIGFuIElzc3VlJyxcbiAgICAgIGNvZGU6ICdMQUknLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdJU1NVRScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgYW4gQXNzZXNzbWVudCcsXG4gICAgICBjb2RlOiAnQUFBJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnQVNTRVNTTUVOVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdJbXBvcnQgYW4gQXNzZXNzbWVudCcsXG4gICAgICBjb2RlOiAnSUFBJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnSU1QT1JUX0FTU0VTU01FTlQnLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQWRkIGEgUHJvZ3JhbScsXG4gICAgICBjb2RlOiAnQ0FQUicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1BST0dSQU0nLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQWRkIGEgR1JDIE9iamVjdCcsXG4gICAgICBjb2RlOiAnR1JDJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnR1JDX09CSkVDVFMnLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnUmVwb3J0IGEgQ2FzZScsXG4gICAgICBjb2RlOiAnUkFDJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUkVQT1JUX0FfQ0FTRScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBc3NpZ24gY2FzZSB0byB3b3JrZmxvdycsXG4gICAgICBjb2RlOiAnQUNUVycsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1JFUE9SVF9BX0NBU0UnLFxuICAgIH0sXG4gIF07XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbkxpc3QgPSBbXG4gICAgJ09iamVjdGl2ZScsXG4gICAgJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgJ1Jlc3BvbnNpYmlsaXR5IENhdGVnb3J5JyxcbiAgXTtcbiAgY29uZmlybWF0aW9uQWxlcnRDb25maWc6IENvbmZpcm1hdGlvbkFsZXJ0ID0geyBpc1Zpc2libGU6IGZhbHNlIH07XG5cbiAgY2hlY2tDdXJyZW50V29ya2Zsb3coKSB7XG4gICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2Uud29ya2Zsb3dDb2RlLnN1YnNjcmliZSgoY29kZSkgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09ICdBQ1cnIHx8IGNvZGUgPT09ICdBQ1RXJykge1xuICAgICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZGRUb0Nhc2VNb2RlID0gY29kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZGRUb0Nhc2VNb2RlID0gJyc7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgY2xvc2VXb3JrZmxvd0VuZ2luZShldnQ/OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py5jb25maXJtID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoZXZ0ID8gZXZ0LmV2dCA6IGV2dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2VDb25maXJtKGV2dCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VDb25maXJtKGV2dDogYW55KSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdJZiB5b3UgbmF2aWdhdGUgYXdheSwgYW55IHVuc2F2ZWQgY2hhbmdlcyB3aWxsIGJlIGxvc3QuJyxcbiAgICAgIGFjdGlvbjogJ1dPUktGTE9XX0NMT1NFJyxcbiAgICAgIGRhdGE6IGV2dCxcbiAgICB9O1xuICB9XG4gIGV4ZWN1dGVDbG9zZShldnQ6IGFueSkge1xuICAgIGlmIChldnQuYWN0aW9uID09PSAnWUVTJykge1xuICAgICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoKTtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXROZXR3b3JrTGlzdG5lcigpO1xuICAgIHRoaXMuc2V0V29ya2Zsb3codGhpcy53b3JrZmxvd1R5cGUsIHRoaXMud29ya2Zsb3dUeXBlTGlzdCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDUwMCk7XG4gICAgdGhpcy5zZXRXb3JrZmxvdyh0aGlzLndvcmtmbG93VHlwZSwgdGhpcy53b3JrZmxvd1R5cGVMaXN0KTtcbiAgICB0aGlzLmRlY2lkZVZpZXdNb3JlT3B0aW9uKCk7XG4gICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvbkRldGFpbHMoKTtcbiAgICB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcHJvZ3JhbV9zaW1wbGlmeSdcbiAgICApO1xuICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfZ3JvdXBzJ1xuICAgICk7XG4gICAgdGhpcy5jYXNlRmVhdHVyZUZsYWcgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfY2FzZXNfZW5hYmxlZCcpO1xuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZ5KCk7XG4gICAgdGhpcy5nZXRBc3Nlc3NtZW50RGV0YWlscygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjaGVja1Blcm1pc3Npb24oKSB7XG4gICAgdGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMucmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlLmhhc1Blcm1pc3Npb24uc3Vic2NyaWJlKFxuICAgICAgICAoaGFzUGVybWlzc2lvbikgPT4ge1xuICAgICAgICAgIHRoaXMuY2FzZVR5cGVQZXJtaXNzaW9uID0gaGFzUGVybWlzc2lvbjtcbiAgICAgICAgICBpZiAoaGFzUGVybWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5jaGVja1JlcG9ydENhc2VQZXJtaXNzaW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLmNhc2VUeXBlTG9hZGVyLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgc2V0TmV0d29ya0xpc3RuZXIoKSB7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcignb2ZmbGluZScsIChlKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICdDb25uZWN0aW9uIGxvc3QhPGJyPkNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aXZpdHkuJyxcbiAgICAgICAgJ2FsZXJ0J1xuICAgICAgKTtcbiAgICB9KTtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAoZSkgPT4ge1xuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFwiWW91J3JlIGJhY2sgb25saW5lIVwiLCAnc3VjY2VzcycpO1xuICAgIH0pO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLndvcmtmbG93VHlwZUxpc3QgPSB0aGlzLndvcmtmbG93VHlwZUxpc3QuZmlsdGVyKCh3b3JrZmxvdzogYW55KSA9PiB7XG4gICAgICBpZiAodGhpcy5hbGxvd2VkV29ya2Zsb3dzLmluY2x1ZGVzKHdvcmtmbG93LnBlcm1pc3Npb25JZGVudGlmaWVyKSkge1xuICAgICAgICByZXR1cm4gd29ya2Zsb3c7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJykge1xuICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGlzYWJsZVdvcmtmbG93Q2hhbmdlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjaGVja1JlcG9ydENhc2VQZXJtaXNzaW9uKCkge1xuICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPVxuICAgICAgdGhpcy5yZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UuY2hlY2tSZXBvcnRBQ2FzZVBlcm1pc3Npb24oKTtcbiAgICBpZiAoaGFzUGVybWlzc2lvbiAmJiB0aGlzLmNhc2VGZWF0dXJlRmxhZykge1xuICAgICAgdGhpcy5hbGxvd2VkV29ya2Zsb3dzLnB1c2goJ1JFUE9SVF9BX0NBU0UnKTtcbiAgICAgIHRoaXMuYWxsb3dlZFdvcmtmbG93cyA9IHRoaXMuYWxsb3dlZFdvcmtmbG93cy5maWx0ZXIoXG4gICAgICAgICh3b3JrZmxvdzogYW55KSA9PiB3b3JrZmxvdyAhPT0gJ0lTU1VFJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hbGxvd2VkV29ya2Zsb3dzID0gdGhpcy5hbGxvd2VkV29ya2Zsb3dzLmZpbHRlcihcbiAgICAgICAgKHdvcmtmbG93OiBhbnkpID0+IHdvcmtmbG93ICE9PSAnUkVQT1JUX0FfQ0FTRSdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdXNlckxpc3RFbWl0dGVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnVzZXJMaXN0ID0gZXZlbnQ7XG4gIH1cblxuICBkZWNpZGVWaWV3TW9yZU9wdGlvbih0eXBlPzogYm9vbGVhbikge1xuICAgIGlmICh0eXBlKSB7XG4gICAgICB0aGlzLmNsb3NlT25Fc2MgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKFsnQ01SJywgJ0FNUicsICdBQUEnLCAnSUFBJ10uaW5jbHVkZXModGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpKSB7XG4gICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gZmFsc2U7XG4gICAgICBpZiAodHlwZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmFkZFRvQ2FzZU1vZGUgPT09ICdBQ1cnKSB7XG4gICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0V29ya2Zsb3dTZWxlY3Rvcih0eXBlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnUkFDJykge1xuICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRXb3JrZmxvd1NlbGVjdG9yKHR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIHNldFdvcmtmbG93U2VsZWN0b3IodHlwZT86IGJvb2xlYW4pe1xuICAgIGlmICh0eXBlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjYXNlUmVwb3J0ZWRCeShldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXBvcnRCeSA9IGV2ZW50O1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGlmKHRoaXMuYWRkVG9DYXNlTW9kZSA9PT0gJ0FDVycgfHwgdGhpcy5hZGRUb0Nhc2VNb2RlID09PSAnQUNUVycpIHtcbiAgICAgIHRoaXMucmVwb3J0Q2FzZS5hZGRUb0Nhc2UoKTtcbiAgICAgIHRoaXMuc3VibWl0V29ya2Zsb3coKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkge1xuICAgICAgY2FzZSAnQUFSJzpcbiAgICAgICAgdGhpcy5yaXNrQ29tcG9uZW50LnN1Ym1pdFJpc2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdMQUknOlxuICAgICAgICB0aGlzLmxvZ0lzc3VlQ29tcG9uZW50LmFkZElzc3VlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FSJzpcbiAgICAgICAgdGhpcy5jb21wbGlhbmNlLnN1Ym1pdFJlc3BvbnNpYmlsaXR5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FQJzpcbiAgICAgICAgdGhpcy5wb2xpY3kuc3VibWl0UG9saWN5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQUFBJzpcbiAgICAgICAgdGhpcy53b3JrZmxvd0Fzc2Vzc21lbnRDb21wb25lbnQuc3VibWl0QXNzZXNzbWVudCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUFInOiB7XG4gICAgICAgIHRoaXMucHJvZ3JhbS5zYXZlUHJvZ3JhbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0dSQyc6IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3RoaXMuZ3JjT2JqZWN0JywgdGhpcy5ncmNPYmplY3QpO1xuICAgICAgICB0aGlzLmdyY09iamVjdC5zYXZlR1JDT2JqZWN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkFDJzoge1xuICAgICAgICB0aGlzLnJlcG9ydENhc2UucmVwb3J0Q2FzZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIGNhc2UgJ0lBQSc6XG4gICAgICAvLyAgIHRoaXMuaW1wb3J0QW5Bc3Nlc3NtZW50LnN1Ym1pdEFzc2Vzc21lbnQoKTtcbiAgICB9XG4gICAgdGhpcy5zdWJtaXRXb3JrZmxvdygpO1xuICB9XG5cbiAgc3VibWl0V29ya2Zsb3coKSB7IFxuICAgIGNvbnN0IG1lc3NhZ2UgPSB7dHlwZTonc3VibWl0J31cbiAgICBjb25zdCB0YXJnZXRPcmlnaW4gPSB0aGlzLmdldE9yaWdpbigpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luKTtcbiAgfSBcbiAgXG4gIHByaXZhdGUgZ2V0T3JpZ2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gIH1cblxuICBlZGl0V29ya2Zsb3coKSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSAhdGhpcy53b3JrZmxvd0xpc3Q7XG4gICAgY29uc3QgZHJvcGRvd24gPSB0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdGhpcy5kcm9wZG93bkxlZnQgPSBkcm9wZG93bi5sZWZ0O1xuICAgIHRoaXMuZHJvcGRvd25Ub3AgPSBkcm9wZG93bi50b3AgKyBkcm9wZG93bi5oZWlnaHQ7XG4gICAgdGhpcy5kcm9wZG93bldpZHRoID0gZHJvcGRvd24ud2lkdGg7XG4gIH1cbiAgY2xvc2VXb3JrZmxvd0xpc3QoKSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSBmYWxzZTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgc2l6ZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy53b3JrZmxvd0xpc3QgPSBmYWxzZTtcbiAgfVxuICBjaGFuZ2VXb3JrZmxvdyhldnQ6IGFueSwgc2VsZWN0ZWRXb3JrZmxvdzogYW55KSB7XG4gICAgaWYgKHNlbGVjdGVkV29ya2Zsb3c/LmNvZGUgPT09IHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiAnSWYgeW91IGNoYW5nZSB0aGUgd29ya2Zsb3csIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nLFxuICAgICAgYWN0aW9uOiAnV09SS0ZMT1dfQ0hBTkdFJyxcbiAgICAgIGRhdGE6IHNlbGVjdGVkV29ya2Zsb3csXG4gICAgfTtcbiAgfVxuXG4gIGNvbmZpcm1Xb3JrZmxvd0NoYW5nZShldnQ6IGFueSkge1xuICAgIGlmIChldnQuYWN0aW9uID09PSAnWUVTJykge1xuICAgICAgdGhpcy5jbG9zZU9uRXNjID0gdHJ1ZTtcbiAgICAgIHN3aXRjaCAoZXZ0LnBheWxvYWQuYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ1dPUktGTE9XX0NIQU5HRSc6XG4gICAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSBldnQ/LnBheWxvYWQ/LmRhdGEgPz8gbnVsbDtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLnJlc2V0QWxsKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGVjaWRlVmlld01vcmVPcHRpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRURJVF9SSVNLJzpcbiAgICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQuY3JlYXRlUmlzayh0aGlzLnJpc2tDb21wb25lbnQucmlza0Zvcm0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQT0xJQ1lfUE9SVEFMJzpcbiAgICAgICAgICB0aGlzLnBvbGljeS5jb25maXJtUG9saWN5UG9ydGFsKGV2dC5hY3Rpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdXT1JLRkxPV19DTE9TRSc6XG4gICAgICAgICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoZXZ0Py5wYXlsb2FkPy5kYXRhKTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5pZnJhbWVTZXJ2aWNlLmdldENsb3NlV2Vidmlld01lc3NhZ2UoUG9zdE1lc3NhZ2VFdmVudC5DTE9TRV9XRUJWSUVXLCAnJyk7XG4gICAgICAgICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnBvc3RNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjaGVja3BvaW50JzpcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBvcHRpb24/LmNvZGUgPT09ICdBU1NFU1NNRU5UJyB8fFxuICAgICAgICAgICAgICBvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTJykge1xuICAgICAgICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVtb3ZlQ2hlY2twb2ludCgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1JPTEUnOlxuICAgICAgICAgIHRoaXMucHJvZ3JhbS5yZW1vdmUoZXZ0LnBheWxvYWQuZGF0YSwgJ1JPTEUnKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICduZXctY2hlY2twb2ludHMnOlxuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgJiYgIWV2dC5wYXlsb2FkLmlzRGF0YVJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTJyAmJiAhZXZ0LnBheWxvYWQuaXNEYXRhUmVtb3ZlZCkge1xuICAgICAgICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGV2dC5wYXlsb2FkLmlzQ2hlY2twb2ludENoZWNrZWQgJiZcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5tb3JlT3B0aW9ucy5DSEVDS1BPSU5UU19ORVcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZW1vdmUoJ25ldy1jaGVja3BvaW50cycpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhc3NpZ25lZVR5cGVDaGFuZ2UnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID0gJ0FMTCc7XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9XG4gICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2Uuc2V0TGlzdChcbiAgICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5vcmlnaW5hbEFzc2lnbmVlLFxuICAgICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlWydyZXNwb25zaWJpbGl0eUZvcm0nXVsnYXNzaWduZWVHcm91cHMnXVsnbGlzdCddID1cbiAgICAgICAgICAgICAgW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NlcXVlbnRpYWwnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYW55UmV2aWV3ZXInOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoZXZ0LnBheWxvYWQuYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ1BPTElDWV9QT1JUQUwnOlxuICAgICAgICAgIHRoaXMucG9saWN5LmNvbmZpcm1Qb2xpY3lQb3J0YWwoZXZ0LmFjdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Fzc2lnbmVlVHlwZUNoYW5nZSc6XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPVxuICAgICAgICAgICAgJ0FOWV9PTkUnO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NlcXVlbnRpYWwnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ3Jldmlld2VycyddW1xuICAgICAgICAgICAgJ3NlcXVlbnRpYWxXb3JrZmxvdydcbiAgICAgICAgICBdID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FueVJldmlld2VyJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICBhY3Rpb246ICcnLFxuICAgICAgZGF0YTogbnVsbCxcbiAgICB9O1xuICAgIHJldHVybiBldnQ7XG4gIH1cblxuICBzZXRXb3JrZmxvdyh3b3JrRmxvd0NvZGU6IGFueSwgd29ya0Zsb3dMaXN0OiBhbnkpIHtcbiAgICBjb25zdCBzZWxlY3RlZFdvcmtmbG93ID0gd29ya0Zsb3dMaXN0LmZpbmQoXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Py5jb2RlID09PSB3b3JrRmxvd0NvZGVcbiAgICApO1xuICAgIHNlbGVjdGVkV29ya2Zsb3dcbiAgICAgID8gKHRoaXMuY3VycmVudFdvcmtmbG93ID0gc2VsZWN0ZWRXb3JrZmxvdylcbiAgICAgIDogKHRoaXMuY3VycmVudFdvcmtmbG93ID0gbnVsbCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkV29ya2Zsb3c7XG4gIH1cblxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkge1xuICAgICAgY2FzZSAnQUFSJzpcbiAgICAgICAgdGhpcy5yaXNrQ29tcG9uZW50Py5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTEFJJzpcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUNvbXBvbmVudD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1JBQyc6XG4gICAgICBjYXNlICdBQ1RXJzpcbiAgICAgICAgdGhpcy5yZXBvcnRDYXNlLmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVInOlxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgJ2NvbXBsaWFuY2VfYXVkaXQnXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb3JlT3B0aW9uPy5tb3JlT3B0aW9uc0xpc3Q/LkNBUj8uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LmNvZGUgPT09ICdBU1NFU1NNRU5UJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XS5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XS5jaGVja2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlPy5hZGRNb3JlSW5mbyhcbiAgICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVJbaW5kZXhdXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcGxpYW5jZT8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUCc6XG4gICAgICAgIHRoaXMucG9saWN5Py5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FQUic6XG4gICAgICAgIHRoaXMucHJvZ3JhbT8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dSQyc6XG4gICAgICAgIHRoaXMuZ3JjT2JqZWN0Py5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlTW9yZU9wdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMubW9yZU9wdGlvbikge1xuICAgICAgdGhpcy5tb3JlT3B0aW9uLnBvcHVsYXRlKGV2ZW50KTtcbiAgICB9XG4gIH1cbiAgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm1vcmVPcHRpb24/LmhpZGVFbGVtZW50cyhldmVudCk7XG4gIH1cblxuICBzaG93Q29uZmlybWF0aW9uUG9wdXAoY29uZmlnOiBDb25maXJtYXRpb25BbGVydCkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSBjb25maWc7XG4gIH1cblxuICBidWxrVXBsb2FkQnJvd3NlKGV2ZW50OiBhbnkpIHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdBTVInOlxuICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLnRyaWdnZXJCcm93c2VGaWxlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ01SJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQudHJpZ2dlckJyb3dzZUZpbGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdJQUEnOlxuICAgICAgICB0aGlzLmltcG9ydEFuQXNzZXNzbWVudC50cmlnZ2VyQnJvd3NlRmlsZSgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25SZXNldEZvcm0oKSB7XG4gICAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XG4gICAgdGhpcy5lbnRydXN0QnV0dG9uTmFtZSA9ICdFbnRydXN0JztcbiAgfVxuXG4gIG9uUmVzZXRHUkNGb3JtKCkge1xuICAgIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xuICB9XG4gIHNoaWZ0VG9FZGl0TW9kZSgpIHtcbiAgICB0aGlzLm1vZGUgPSAnRURJVCc7XG4gIH1cbiAgc2Nyb2xsRm9ybSgpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93blJvdz8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/LnRvcCA8IDM4KSB7XG4gICAgICB0aGlzLmRyb3Bkb3duUm93Py5uYXRpdmVFbGVtZW50Py5jbGFzc0xpc3Q/LmFkZCgnaGlkZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyb3Bkb3duUm93Py5uYXRpdmVFbGVtZW50Py5jbGFzc0xpc3Q/LnJlbW92ZSgnaGlkZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgd2hpY2ggbW9yZSBvcHRpb25zIHdlIGFyZSByZW1vdmluZy5cbiAgICogQHBhcmFtIGlzQ2hlY2twb2ludENoZWNrZWQgIGlzIHRydWUgaWYgdmFsdWUgY2hlY2twb2ludHMgaXMgcmVtb3ZlZCBieSBjbGlja2luZyBvbiBtb3JlIG9wdGlvbnNcbiAgICovXG4gIG9uUmVtb3ZpbmdDaGVja3BvaW50KFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgaXNDaGVja3BvaW50Q2hlY2tlZD86IGJvb2xlYW4sXG4gICAgaXNEYXRhUmVtb3ZlZD86IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgbGV0IG1zZyA9ICcnO1xuICAgIGlmIChldmVudCA9PT0gJ25ldy1jaGVja3BvaW50cycpIHtcbiAgICAgIG1zZyA9XG4gICAgICAgICdJZiB5b3UgY2hvb3NlIHRvIHJlbW92ZSB0aGVzZSBDaGVja3BvaW50cywgdGhleSB3aWxsIGJlIGRlbGV0ZWQgYW5kIGNhbm5vdCBiZSByZXN0b3JlZC4gSG93ZXZlciwgeW91IHdpbGwgc3RpbGwgYmUgYWJsZSB0byBjcmVhdGUgbmV3IENoZWNrcG9pbnRzIG9yIGxpbmsgYW4gQXNzZXNzbWVudC4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgPVxuICAgICAgICAnSWYgeW91IGNob29zZSB0byByZW1vdmUgdGhlc2UgY2hlY2twb2ludHMsIHRoZXkgd2lsbCBiZSBkZWxldGVkIGFuZCBjYW5ub3QgYmUgcmVzdG9yZWQuJztcbiAgICB9XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGFjdGlvbjogZXZlbnQsXG4gICAgICBkYXRhOiB7IHR5cGU6ICdyZXNwb25zaWJpbGl0eUNoZWNrcG9pbnQnIH0sXG4gICAgICBpc0NoZWNrcG9pbnRDaGVja2VkOiBpc0NoZWNrcG9pbnRDaGVja2VkID8/IGZhbHNlLFxuICAgICAgaXNEYXRhUmVtb3ZlZDogaXNEYXRhUmVtb3ZlZCA/PyBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgb25SZW1vdmluZ1JvbGUoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBtc2cgPSAnJztcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIG1zZyA9ICdJZiB5b3UgY2hhbmdlIHRoZSByb2xlcywgYW55IHVuc2F2ZWQgY2hhbmdlcyB3b3VsZCBiZSBsb3N0Lic7XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiBtc2csXG4gICAgICBhY3Rpb246ICdST0xFJyxcbiAgICAgIGRhdGE6IGV2ZW50LFxuICAgIH07XG4gIH1cblxuICBpc0Fzc2Vzc21lbnREaXNhYmxlZChpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVIuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgIGlmIChvcHRpb24/LmNvZGUgPT09ICdBU1NFU1NNRU5UJyB8fCBvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UU19ORVcnKSB7XG4gICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRpc2FibGVNb3JlT3B0aW9ucyh3b3JrZmxvd0NvZGU6IGFueSwgZGlzYWJsZWRFbGVtZW50c0NvZGU6IGFueSkge1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0KS5pbmNsdWRlcyh3b3JrZmxvd0NvZGUpKSB7XG4gICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0W3dvcmtmbG93Q29kZV0uZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGRpc2FibGVkRWxlbWVudHNDb2RlLmluY2x1ZGVzKG9wdGlvbj8uY29kZSkpIHtcbiAgICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hlY2twb2ludFNlbGVjdGlvbihldmVudDogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSBldmVudDtcbiAgfVxuXG4gIG9uUmNTZWxlY3RlZChpc1JjU2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzUkNTZWxlY3RlZCA9IGlzUmNTZWxlY3RlZDtcbiAgfVxuXG4gIGZldGNoT3JnYW5pemF0aW9uRGV0YWlscygpIHtcbiAgICB0aGlzLm9yZ0NvbW1vblNlcnZpY2U/LmdldE9yZ0RldGFpbHNJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vcmdEZXRhaWxzID0gcmVzO1xuICAgICAgICBpZiAocmVzPy5idXNpbmVzc19jeWNsZXNfYXJyICYmIHJlcz8uYnVzaW5lc3NfY3ljbGVzX2Fycj8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSByZXM/LmJ1c2luZXNzX2N5Y2xlc19hcnIuZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LnNlbGVjdGVkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBzcGxpdHRlZCA9IHNlbGVjdGVkWzBdLmJ1c2luZXNzX2N5Y2xlPy5zcGxpdCgnLScpO1xuICAgICAgICAgIHRoaXMuY3VycmVudEJ1c2luZXNzQ3ljbGUgPSBgJHtzcGxpdHRlZFswXT8uc2xpY2UoXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKX0gLSAke3NwbGl0dGVkWzFdPy5zbGljZSg0KX1gO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGdldFVzZXJEZXRhaWxzKCkge1xuICAgIHRoaXMub3JnQ29tbW9uU2VydmljZT8uZ2V0T3JnVXNlckluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmF1dGgudXNlckRldGFpbHMgPSByZXM7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG9yZ2FuaXphdGlvbiB1c2VycycsIGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXNzaWduZWVUeXBlQ2hhbmdlKCkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICAnVGhpcyBhY3Rpb24gd2lsbCByZXNldCB0aGUgY2hhbmdlcyBhbmQgYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSBiYWNrIHRvIHRoZSBvcmlnaW5hbCBhc3NpZ25lZS4nLFxuICAgICAgYWN0aW9uOiAnYXNzaWduZWVUeXBlQ2hhbmdlJyxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgaXNSZWRBbGVydDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgLy8gZXZlbnQgPT4gJ3NlcXVlbnRpYWwnIHx8ICdhbnlSZXZpZXdlcidcbiAgb25SZXZpZXdlckNoYW5nZShldmVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgY29tbW9uVGV4dDogc3RyaW5nID1cbiAgICAgICdPbmNlIGNvbmZpcm1lZCwgdGhlIG5ldyByZXZpZXcgd29ya2Zsb3cgd2lsbCBiZSBhcHBsaWNhYmxlIGZvciBhbGwgY3VycmVudCBhbmQgZnV0dXJlIHJldmlldyBkdWUgZGF0ZXMuJztcbiAgICBjb25zdCBtc2cgPVxuICAgICAgY29tbW9uVGV4dCArXG4gICAgICAoZXZlbnQgPT09ICdhbnlSZXZpZXdlcidcbiAgICAgICAgPyBgSWYgYW55IHJldmlld2VyIGhhZCBjb21wbGV0ZWQgdGhlIHJldmlldywgdGhlIGN1cnJlbnQgcmV2aWV3IGR1ZSBkYXRlIHdpbGwgYmUgY2xvc2VkIGFuZCB0aGUgcmV2aWV3IHN0YXR1cyB3aWxsIGJlIHVwZGF0ZWQgdG8gJ0NvbXBsZXRlZCcuYFxuICAgICAgICA6ICcnKTtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgYWN0aW9uOiBldmVudCxcbiAgICB9O1xuICB9XG5cbiAgaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZ5KCkge1xuICAgIGlmICh0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcmVzcG9uc2liaWxpdHlfc2ltcGxpZmljYXRpb24nKSkge1xuICAgICAgdGhpcy53b3JrZmxvd1R5cGVMaXN0WzBdLndvcmtmbG93TmFtZSA9ICdBZGQgYSBSZXNwb25zaWJpbGl0eSc7XG4gICAgICB0aGlzLndvcmtmbG93VHlwZUxpc3RbMV0ud29ya2Zsb3dOYW1lID0gJ0FkZCBNdWx0aXBsZSBSZXNwb25zaWJpbGl0aWVzJztcbiAgICB9XG4gIH1cblxuICAgLy8gVE9ETzogUG9wdWxhdGUgYXNzZXNzbWVudCBkYXRhIGZyb20gYWxyZWFkeSBzZWxlY3RlZCBkYXRhXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYXNzZXNzbWVudERldGFpbHMgOiBzZWxlY3RlZCBhc3Nlc3NtZW50IGRldGFpbHMgbGlrZSBpdCdzIG9iamVjdCBpZCBhbmQgY2F0ZWdvcnlfaWRcbiAgICovXG4gIGdldEFzc2Vzc21lbnREZXRhaWxzKCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy53b3JrZmxvd0RldGFpbHM/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQ7IFxuICAgIGlmKGlkICYmIHRoaXMud29ya2Zsb3dUeXBlID09PSAnQVNTRVNTTUVOVCcpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxuICAgICAgLmdldEFzc2Vzc21lbnREZXRhaWxzQnlJRChpZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0QXNzZXNzbWVudERhdGEocmVzKTtcbiAgICAgIH0pO1xuICB9XG59XG5cbiAgc2V0QXNzZXNzbWVudERhdGEocmVzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gcmVzWzBdLmNhdGVnb3J5WzBdXG4gICAgICAgIGNvbnN0IGFzc2Vzc21lbnREYXRhID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiByZXNbMF0uY2F0ZWdvcnlbMF0uX2lkLFxuICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6IHJlc1swXS5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB7XG4gICAgICAgICAgICBpZDogcmVzWzBdLmFzc2Vzc21lbnRfaWQsXG4gICAgICAgICAgICBhc3Nlc3NtZW50X25hbWU6IHJlc1swXS5hc3Nlc3NtZW50X25hbWUsXG4gICAgICAgICAgICBxdWVzdGlvbnM6IHJlc1swXS5xdWVzdGlvbnNDb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNhdGVnb3J5X2RldGFpbHM6IGNhdGVnb3J5RGV0YWlscyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnQgPSBhc3Nlc3NtZW50RGF0YTtcbiAgXG59XG59XG4iLCI8YXBwLXNuYWNrLWJhcj48L2FwcC1zbmFjay1iYXI+XG48ZGl2IGNsYXNzPVwid29ya2Zsb3ctZW5naW5lLW92ZXJsYXlcIj48L2Rpdj5cblxuPGFwcC1hc3Nlc3NtZW50LWxpc3QgKm5nSWY9XCJ3b3JrZmxvd1R5cGUgPT09ICdBU1NFU1NNRU5UJ1wiIChjYW5jZWxBc3Nlc3NtZW50KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoKVwiIFtpc0VkaXRdPVwidHJ1ZVwiXG4gIFtpc0Z1bGxTY3JlZW5dPVwidHJ1ZVwiIFtzZWxlY3RlZEFzc2Vzc21lbnRdPVwic2VsZWN0ZWRBc3Nlc3NtZW50XCJcbiAgKG9uQXNzZXNzbWVudFNlbGVjdCk9XCJjbG9zZVdvcmtmbG93RW5naW5lKHsgZXZ0OiAkZXZlbnQsIGNvbmZpcm06IGZhbHNlIH0pXCI+PC9hcHAtYXNzZXNzbWVudC1saXN0PlxuPGRpdiAqbmdJZj1cIndvcmtmbG93VHlwZSAhPT0gJ0FTU0VTU01FTlQnXCIgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmVcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIiBbY2xhc3MuYmddPVwiXG4gICAgKCFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8IHJpc2tCdWxrVXBsb2FkPy5zaG93Q2F0ZWdvcnlMaXN0KSAmJlxuICAgICFwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcbiAgXCI+XG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyXCIgW25nU3dpdGNoXT1cImN1cnJlbnRXb3JrZmxvdz8uY29kZVwiXG4gICAgW2NsYXNzLndpdGgtcHJldmlldy1hc3Nlc3NtZW50XT1cIihhdXRoPy5wcmV2aWV3UGFuZWwgfCBhc3luYykgPT09IHRydWVcIiBbY2xhc3Mud2l0aC1mcmVxdWVuY3ldPVwiXG4gICAgICBjb21wbGlhbmNlPy5hY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeScgfHxcbiAgICAgIGNvbXBsaWFuY2U/LmFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knIHx8XG4gICAgICByaXNrQ29tcG9uZW50Py5hY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeScgfHxcbiAgICAgIHBvbGljeT8uYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knIHx8XG4gICAgICBwb2xpY3k/LmFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXG4gICAgXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgpXCIgaWQ9XCJjbG9zZS13b3JrZmxvdy1lbmdpbmUtYnRuXCIgY2xhc3M9XCJjbG9zZVwiIFthcHBUb29sdGlwXT1cIidbRXNjXSB0byBjbG9zZSdcIlxuICAgICAgcGxhY2VtZW50PVwibGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGUgfHwgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcbiAgICAgIFwiIFtjbGFzcy5zbWlsZXktb3BlbmVkXT1cIlxuICAgICAgICByaXNrQ29tcG9uZW50Py5zaG93U21pbGV5IHx8XG4gICAgICAgIGxvZ0lzc3VlQ29tcG9uZW50Py5zaG93U21pbGV5IHx8XG4gICAgICAgIGNvbXBsaWFuY2U/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzIHx8XG4gICAgICAgIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZD8uc2hvd1NtaWxleSB8fFxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnNob3dFeGNlbCB8fFxuICAgICAgICByaXNrQnVsa1VwbG9hZD8uc2hvd1NtaWxleSB8fFxuICAgICAgICByaXNrQnVsa1VwbG9hZD8uc2hvd0V4Y2VsIHx8XG4gICAgICAgIHByb2dyYW0/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgaW1wb3J0QW5Bc3Nlc3NtZW50Py5zaG93U21pbGV5XG4gICAgICBcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTNmOzwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXVpS2l0U2VydmljZS5pc1NtaWxleU9uXCIgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmUtbW9yZVwiXG4gICAgICBbaGlkZGVuXT1cInNob3dNb3JlT3B0aW9uID09PSBmYWxzZSB8fCBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGVcIiBbY2xhc3MucmVhZC1vbmx5XT1cInVpS2l0U2VydmljZT8uaXNMb2FkZXJcIj5cbiAgICAgIDxhcHAtbW9yZS1vcHRpb24gI21vcmVPcHRpb24gW2N1cnJlbnRXb3JrZmxvd109XCJjdXJyZW50V29ya2Zsb3c/LmNvZGVcIiBbaXNFZGl0TW9kZV09XCJtb2RlID09PSAnRURJVCdcIlxuICAgICAgICBbaXNSQ1NlbGVjdGVkXT1cIlxuICAgICAgICAgIGlzUkNTZWxlY3RlZCB8fFxuICAgICAgICAgIChjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09ICdHUkMnICYmXG4gICAgICAgICAgICBncmNPYmplY3Q/Lmxpc3RPYmplY3QuUkMuc2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwKVxuICAgICAgICBcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgKHNlbGVjdGVkT3B0aW9uKT1cImFkZE1vcmVJbmZvKCRldmVudClcIiBbaXNQcm9ncmFtU2VsZWN0ZWRdPVwic2VsZWN0ZWRQcm9ncmFtXCJcbiAgICAgICAgW2FsbG93ZWRGZWF0dXJlXT1cImZlYXR1cmVcIiBbb3JnRGV0YWlsc0RhdGFdPVwib3JnRGV0YWlsc1wiIFtpc0F0dHJpYnV0ZXNBdmFpbGFibGVdPVwiXG4gICAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnR1JDJyAmJlxuICAgICAgICAgIGdyY09iamVjdD8uc2VsZWN0ZWRBdHRyaWJ1dGVzPy5hdHRyaWJ1dGVzPy5sZW5ndGggPiAwXG4gICAgICAgIFwiPlxuICAgICAgPC9hcHAtbW9yZS1vcHRpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIndvcmtmbG93LWVuZ2luZS1mb3JtXCIgW2NsYXNzLmRpc2FibGVkXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGVcIiBbY2xhc3Mubm8tc2hhZG93XT1cIlxuICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT0gJ0FNUicgfHxcbiAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09ICdDTVInIHx8XG4gICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PSAnQUFBJyB8fFxuICAgICAgICB1aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiB8fFxuICAgICAgICBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHNcbiAgICAgIFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIChzY3JvbGwpPVwic2Nyb2xsRm9ybSgpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJcbiAgICAgICAgICAgICFbJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCAnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIG9wZW5lZEZyb21cbiAgICAgICAgICAgIClcbiAgICAgICAgICBcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiISh1aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiB8fCBwb2xpY3k/LnNob3dDcmVhdGVEb2N1bWVudHMpXCIgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICNkcm9wZG93blJvd1xuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAobW9kZSA9PT0gJ0VESVQnIHx8XG4gICAgICAgICAgICAgICAgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgfHxcbiAgICAgICAgICAgICAgICBkaXNhYmxlV29ya2Zsb3dDaGFuZ2UgfHxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFByb2dyYW0pICYmXG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXG4gICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiY3VycmVudFdvcmtmbG93XCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCIgI2Ryb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImN1cnJlbnRXb3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXCIgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+U2VsZWN0IGEgV29ya2Zsb3c8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0FDVFcnXCIgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+QXNzaWduIGEgQ2FzZSB0byBXb3JrZmxvdzxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwiIWN1cnJlbnRXb3JrZmxvdyAmJiBjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFdvcmtmbG93KClcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGEgV29ya2Zsb3dcIiByZWFkb25seSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZCBmaXJzdC1maWVsZFwiICpuZ0lmPVwiY3VycmVudFdvcmtmbG93XCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIHt7Y3VycmVudFdvcmtmbG93IHwganNvbn19IC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTIgdngtbXItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dCBuby13aWR0aFwiIFthcHBUb29sdGlwXT1cImN1cnJlbnRXb3JrZmxvdz8ud29ya2Zsb3dOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCIgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtmbG93VHlwZSA9PT0gJ0FDVFcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJzxzdHJvbmc+Q2FzZSBSZXBvcnRlZCBCeTogPC9zdHJvbmc+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcG9ydEJ5IHwgdXNlclBpcGUgOiB1c2VyTGlzdCk/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFdvcmtmbG93Py53b3JrZmxvd05hbWVcbiAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+e3tjdXJyZW50V29ya2Zsb3c/LndvcmtmbG93TmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZWRpdFdvcmtmbG93KClcIiAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICF3b3JrZmxvd0xpc3QgJiZcbiAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRGcm9tICE9ICdBU1NFU1NNRU5UJyAmJlxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXG4gICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnQ0FQUicgJiZcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJ1c2luZXNzQ3ljbGUgJiZcbiAgICAgICAgICAgICAgICAgICAgIXByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyYW0tYnVzaW5lc3MtY3ljbGUgdngtZnMtMTEgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcHQtMiB2eC1wYi0xIHZ4LXBsLTIgdngtcHItMVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC1tci0xXCI+JiN4ZTk2Mzs8L2k+IFRoaXMgcHJvZ3JhbSBpc1xuICAgICAgICAgICAgICAgICAgYmVpbmcgc2V0LXVwIGZvciB0aGUgYnVzaW5lc3MgY3ljbGU6XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZ3LTYwMCB2eC1tbC0xXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEJ1c2luZXNzQ3ljbGVcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8IS0tIDxhcHAtY3JlYXRlLWRvY3VtZW50cz48L2FwcC1jcmVhdGUtZG9jdW1lbnRzPiAtLT5cbiAgICAgICAgPCEtLSA8YXBwLWJ1bGstdmlldz48L2FwcC1idWxrLXZpZXc+IC0tPlxuICAgICAgICA8IS0tIDxhcHAtYnVsay1yZXNwb25zaWJpbGl0eS12aWV3PjwvYXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz4gLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctY29tcGxpYW5jZSAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxuICAgICAgICAgIFtpc0VudHJ1c3RdPVwiZW50cnVzdEJ1dHRvbk5hbWUudG9Mb3dlckNhc2UoKSA9PSAnZW50cnVzdCdcIiBbcmVzcG9uc2liaWxpdHlJZF09XCJpZFwiIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFtmcmFtZXdvcmtEZXRhaWxzXT1cImZyYW1ld29ya0RldGFpbHNcIiBbYXNzZXNzbWVudERldGFpbHNdPVwiYXNzZXNzbWVudERldGFpbHNcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiICpuZ1N3aXRjaENhc2U9XCInQ0FSJ1wiICNyZXNwb25zaWJpbGl0eVxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKCRldmVudClcIiBbc2VsZWN0ZWRSQ109XCJzZWxlY3RlZFJDXCJcbiAgICAgICAgICBbY2xvc2VPbkVzY109XCJjbG9zZU9uRXNjXCIgKGFzc2lnbmVlVHlwZUNoYW5nZSk9XCJhc3NpZ25lZVR5cGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uUmV2aWV3ZXJUeXBlQ2hhbmdlKT1cIm9uUmV2aWV3ZXJDaGFuZ2UoJGV2ZW50KVwiIFtmZWF0dXJlXT1cImZlYXR1cmVcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICAocmNTZWxlY3RlZCk9XCJvblJjU2VsZWN0ZWQoJGV2ZW50KVwiIChyZXNldEZvcm0pPVwib25SZXNldEZvcm0oKVwiXG4gICAgICAgICAgKG9uUmVtb3ZpbmdDaGVja3BvaW50KT1cIm9uUmVtb3ZpbmdDaGVja3BvaW50KCRldmVudCwgZmFsc2UsIHRydWUpXCJcbiAgICAgICAgICAoaXNBc3Nlc3NtZW50RGlzYWJsZWQpPVwiaXNBc3Nlc3NtZW50RGlzYWJsZWQoJGV2ZW50KVwiIChjaGVja3BvaW50Q291bnRVcGRhdGVkKT1cImNoZWNrcG9pbnRDb3VudCA9ICRldmVudFwiXG4gICAgICAgICAgW3NlbGVjdGVkUHJvZ3JhbV09XCJzZWxlY3RlZFByb2dyYW1cIiBbcmVzcG9uc2liaWxpdHlEZXRhaWxzXT1cIndvcmtmbG93RGV0YWlsc1wiPjwvYXBwLXdvcmtmbG93LWNvbXBsaWFuY2U+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctcmlzayBbc2Vjb25kYXJ5T3BlblBvcnRhbF09XCJzZWNvbmRhcnlPcGVuUG9ydGFsXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FBUidcIiAjcmlza1xuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIlxuICAgICAgICAgIChoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiIChyZWZyZXNoRm9ybSk9XCJvblJlc2V0Rm9ybSgpXCJcbiAgICAgICAgICAocmNTZWxlY3RlZCk9XCJvblJjU2VsZWN0ZWQoJGV2ZW50KVwiIFttb2RlXT1cIm1vZGVcIiBbcmlza0lkXT1cImlkXCIgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvYXBwLXdvcmtmbG93LXJpc2s+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctcG9saWN5IChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKm5nU3dpdGNoQ2FzZT1cIidDQVAnXCIgI3BvbGljeVxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIiAoc2hpZnRUb0VkaXRNb2RlKT1cInNoaWZ0VG9FZGl0TW9kZSgpXCJcbiAgICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCIgW3BvbGljeUlkXT1cImlkXCIgW21vZGVdPVwibW9kZVwiIFt0ZW1wbGF0ZUlkXT1cInRlbXBsYXRlSWRcIlxuICAgICAgICAgIFtjb252ZXJ0RmlsZURhdGFdPVwiY29udmVydEZpbGVEYXRhXCIgW3NlbGVjdGVkQ2F0ZWdvcnldPVwic2VsZWN0ZWRDYXRlZ29yeVwiXG4gICAgICAgICAgW2lzU2VuZEZvckF0dGVzdGF0aW9uXT1cImlzU2VuZEZvckF0dGVzdGF0aW9uXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCI+PC9hcHAtd29ya2Zsb3ctcG9saWN5PlxuICAgICAgICA8YXBwLXdvcmtmbG93LXN1cnZleS1mb3JtICpuZ1N3aXRjaENhc2U9XCInQ0FTJ1wiICNzdXJ2ZXlGb3JtPjwvYXBwLXdvcmtmbG93LXN1cnZleS1mb3JtPlxuICAgICAgICA8YXBwLWFkZC1tdWx0aXBsZS1yaXNrIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKm5nU3dpdGNoQ2FzZT1cIidBTVInXCIgI211bHRpcGxlUmlza1xuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmVcIj48L2FwcC1hZGQtbXVsdGlwbGUtcmlzaz5cbiAgICAgICAgPCEtLSA8YXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eSAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NNUidcIiAjbXVsdGlwbGVSZXNwb25zaWJpbGl0eT5cbiAgICAgICAgICAgICAgICA8L2FwcC1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHk+IC0tPlxuXG4gICAgICAgIDxsaWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lciBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDTVInXCIgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiICNtdWx0aXBsZVJlc3BvbnNpYmlsaXR5PjwvbGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXI+XG4gICAgICAgIDwhLS0gTmV3IExvZyBhbiBJc3N1ZSAtLT5cbiAgICAgICAgPGFwcC1sb2ctYW4taXNzdWUgW2lzc3VlRGV0YWlsc109XCJpc3N1ZURhdGFcIiAqbmdTd2l0Y2hDYXNlPVwiJ0xBSSdcIiBbcmVwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIlxuICAgICAgICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIFtzb3VyY2VdPVwic291cmNlXCIgW2lzc3VlSWRdPVwiaWRcIlxuICAgICAgICAgICNsb2dBbklzc3VlIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCIgWyhtb2RlKV09XCJtb2RlXCI+XG4gICAgICAgIDwvYXBwLWxvZy1hbi1pc3N1ZT5cbiAgICAgICAgPCEtLSBPbGQgTG9nIGFuIGlzc3VlIC0tPlxuICAgICAgICA8IS0tIDxhcHAtbG9nLWFuLWlzc3VlICpuZ1N3aXRjaENhc2U9XCInTEFJJ1wiIFtyZXNwb25zaWJpbGl0aWVzRGF0YV09XCJyZXBvbnNpYmlsdHlEYXRhXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgICAgICAgI2xvZ0FuSXNzdWUgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2FwcC1sb2ctYW4taXNzdWU+IC0tPlxuXG4gICAgICAgIDxhcHAtd29ya2Zsb3ctYXNzZXNzbWVudCBbYXNzZXNzbWVudElkXT1cImlkXCIgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKm5nU3dpdGNoQ2FzZT1cIidBQUEnXCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocmVmcmVzaEZvcm0pPVwib25SZXNldEZvcm0oKVwiIFttb2RlXT1cIm1vZGVcIiAjYXNzZXNzbWVudD48L2FwcC13b3JrZmxvdy1hc3Nlc3NtZW50PlxuICAgICAgICA8YXBwLWltcG9ydC1hbi1hc3Nlc3NtZW50IChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKm5nU3dpdGNoQ2FzZT1cIidJQUEnXCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocmVmcmVzaEZvcm0pPVwib25SZXNldEZvcm0oKVwiICNpbXBvcnRBc3Nlc3NtZW50PjwvYXBwLWltcG9ydC1hbi1hc3Nlc3NtZW50PlxuICAgICAgICA8IS0tIDxhcHAtd29ya2Zsb3ctcHJvZ3JhbSAjcHJvZ3JhbSAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCIgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCI+PC9hcHAtd29ya2Zsb3ctcHJvZ3JhbT4gLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctcHJvZ3JhbSAjcHJvZ3JhbSAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCIgW29yZ0RldGFpbHNdPVwib3JnRGV0YWlsc1wiIFthbGxvd2VkRmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgICAgICAgICAoZGlzYWJsZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImRpc2FibGVNb3JlT3B0aW9ucygnQ0FQUicsICRldmVudClcIiBbcHJvZ3JhbVR5cGVdPVwicHJvZ3JhbVR5cGVcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiXG4gICAgICAgICAgKHNob3dDb25maXJtYXRpb25BbGVydCk9XCJzaG93Q29uZmlybWF0aW9uUG9wdXAoJGV2ZW50KVwiIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHJlZnJlc2hGb3JtKT1cIm9uUmVzZXRGb3JtKClcIiBbbW9kZV09XCJtb2RlXCIgW3Byb2dyYW1JZF09XCJpZFwiIFtwcm9ncmFtRGV0YWlsc109XCJ3b3JrZmxvd0RldGFpbHNcIlxuICAgICAgICAgIChvblJlbW92aW5nUm9sZSk9XCJvblJlbW92aW5nUm9sZSgkZXZlbnQpXCIgW2NhbkZyYW1ld29ya0NoYW5nZV09XCJjYW5GcmFtZXdvcmtDaGFuZ2VcIlxuICAgICAgICAgIFthZGRUb1Byb2dyYW1EZXRhaWxzXT1cImFkZFRvUHJvZ3JhbURldGFpbHNcIj48L2FwcC13b3JrZmxvdy1wcm9ncmFtPlxuXG4gICAgICAgIDwhLS0gR1JDIE9iamVjdCAtLT5cbiAgICAgICAgPGxpYi1ncmMtb2JqZWN0LWNvbnRhaW5lciAjZ3JjT2JqZWN0ICpuZ1N3aXRjaENhc2U9XCInR1JDJ1wiIFtncmNUeXBlXT1cImdyY1R5cGVcIiBbTU9ERV09XCJtb2RlXCIgW0lEXT1cImlkXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIiAocmVzZXRGb3JtKT1cIm9uUmVzZXRHUkNGb3JtKClcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAoaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucygkZXZlbnQpXCI+PC9saWItZ3JjLW9iamVjdC1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBSZXBvcnQgYSBDYXNlIC0tPlxuICAgICAgICA8YXBwLXdvcmtmbG93LWNhc2UgKm5nU3dpdGNoQ2FzZT1cIidSQUMnXCIgI3JlcG9ydENhc2UgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIFtzb3VyY2VdPVwic291cmNlXCIgW2Nhc2VJZF09XCJpZFwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIiBbYXNzZXNzbWVudFF1ZXN0aW9uXT1cImFzc2Vzc21lbnRRdWVzdGlvblwiXG4gICAgICAgICAgW2Nhc2VUeXBlUGVybWlzc2lvbl09XCJjYXNlVHlwZVBlcm1pc3Npb25cIiBbd29ya2Zsb3dUeXBlXT1cIidSQUMnXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCI+PC9hcHAtd29ya2Zsb3ctY2FzZT5cbiAgICAgICAgPCEtLSBBc3NpZ24gY2FzZSB0byB3b3JrZmxvdyAtLT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1jYXNlICpuZ1N3aXRjaENhc2U9XCInQUNUVydcIiAjcmVwb3J0Q2FzZSBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgW3NvdXJjZV09XCJzb3VyY2VcIiBbY2FzZUlkXT1cImlkXCJcbiAgICAgICAgICBbbW9kZV09XCJtb2RlXCIgW3dvcmtmbG93VHlwZV09XCInQUNUVydcIiBbcmVzcG9uc2liaWxpdHlEYXRhXT1cInJlcG9uc2liaWxpdHlEYXRhXCJcbiAgICAgICAgICBbYXNzZXNzbWVudFF1ZXN0aW9uXT1cImFzc2Vzc21lbnRRdWVzdGlvblwiIFtjYXNlVHlwZVBlcm1pc3Npb25dPVwiY2FzZVR5cGVQZXJtaXNzaW9uXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiIChwb3B1bGF0ZU9wdGlvbik9XCJwb3B1bGF0ZU1vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGNhc2VSZXBvcnRlZEJ5KT1cImNhc2VSZXBvcnRlZEJ5KCRldmVudClcIiAodXNlckxpc3RFbWl0dGVyKT1cInVzZXJMaXN0RW1pdHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIj48L2FwcC13b3JrZmxvdy1jYXNlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiWydSQUMnLCAnQUNUVyddLmluY2x1ZGVzKGN1cnJlbnRXb3JrZmxvdz8uY29kZSlcIiBjbGFzcz1cInZ4LWQtZmxleFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKGNsaWNrKT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoKVwiPlxuICAgICAgICAgIENBTkNFTFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgbW9kZSA9PT0gXCJFRElUXCIgJiYgY3VycmVudFdvcmtmbG93Py5jb2RlID09PSBcIlJBQ1wiXG4gICAgICAgICAgPyBcIlVwZGF0ZVwiXG4gICAgICAgICAgOiBcIlJlcG9ydFwiXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FBUidcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3tcbiAgICAgICAgbW9kZSA9PT0gXCJFRElUXCIgJiYgb3BlbmVkRnJvbSAhPT0gXCJNT1ZFX1RPX1JFR0lTVEVSXCJcbiAgICAgICAgPyBcIlVwZGF0ZVwiXG4gICAgICAgIDogXCJBZGRcIlxuICAgICAgICB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8XG4gICAgICAgICAgIXJpc2tCdWxrVXBsb2FkPy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeVxuICAgICAgICBcIiAoY2xpY2spPVwiYnVsa1VwbG9hZEJyb3dzZSgnQU1SJylcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FNUidcIj5cbiAgICAgICAgQnJvd3NlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAoY2xpY2spPVwiYnVsa1VwbG9hZEJyb3dzZSgnQ01SJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NNUidcIj5cbiAgICAgICAgQnJvd3NlXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBUaGlzIGhhcyB0ZXJuYXJ5IG9wZXJhdGlvbiB0byBoYW5kbGUgdGhlIGJvdGggc2NlbmFyaW9zIG9mIGhvdyBpdCB3b3JrcyB3aXRoIGNvbXBsaWFuY2UgYW5kIHByb2dyYW0gbW9kdWxlLCBwbGVhc2UgZG9uJ3QgY2hhbmdlIHRoaXMuIC0tPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ1N3aXRjaENhc2U9XCInQ0FSJ1wiPlxuICAgICAgICB7e1xuICAgICAgICBlbnRydXN0QnV0dG9uTmFtZSAhPT0gXCJcIiAmJiBtb2RlICE9PSBcIkVESVRcIlxuICAgICAgICA/IGVudHJ1c3RCdXR0b25OYW1lXG4gICAgICAgIDogbW9kZSA9PT0gXCJFRElUXCIgJiYgIXdvcmtmbG93RGV0YWlscz8uZHVwbGljYXRlXG4gICAgICAgID8gXCJVUERBVEVcIlxuICAgICAgICA6IFwiRW50cnVzdFwiXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAoY2xpY2spPVwic3VibWl0KClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NBUCdcIj5cbiAgICAgICAge3tcbiAgICAgICAgbW9kZSA9PSBcIkVESVRcIlxuICAgICAgICA/IGlzU2VuZEZvckF0dGVzdGF0aW9uXG4gICAgICAgID8gXCJTZW5kIGZvciBhdHRlc3RhdGlvblwiXG4gICAgICAgIDogXCJVcGRhdGVcIlxuICAgICAgICA6IFwiQ29udGludWUgdG8gZHJhZnRcIlxuICAgICAgICB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKm5nU3dpdGNoQ2FzZT1cIidDQVMnXCI+XG4gICAgICAgIENvbnRpbnVlIHRvIGRyYWZ0XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0xBSSdcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJBZGRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKm5nU3dpdGNoQ2FzZT1cIidBQUEnXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgIHt7IG1vZGUgPT09IFwiRURJVFwiID8gXCJVcGRhdGVcIiA6IFwiQ29udGludWUgdG8gZHJhZnRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKGNsaWNrKT1cImJ1bGtVcGxvYWRCcm93c2UoJ0lBQScpXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidJQUEnXCI+XG4gICAgICAgIEJyb3dzZVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8ICFwcm9ncmFtPy52YWxpZFwiIChjbGljayk9XCJzdWJtaXQoJ0NBUFInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJTYXZlXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCB8fCAhcHJvZ3JhbT8udmFsaWRcIiAoY2xpY2spPVwic3VibWl0KCdDQVBSJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NBUFInXCI+XG4gICAgICAgIHt7IG1vZGUgPT09IFwiRURJVFwiID8gXCJVcGRhdGVcIiA6IFwiU2F2ZVwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiAoY2xpY2spPVwic3VibWl0KClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0dSQydcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJTYXZlXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgKm5nSWY9XCJ3b3JrZmxvd0xpc3RcIiAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0xpc3QoKVwiIFtzdHlsZS50b3AucHhdPVwiZHJvcGRvd25Ub3BcIlxuICAgICAgICBbc3R5bGUubGVmdC5weF09XCJkcm9wZG93bkxlZnRcIiBbc3R5bGUud2lkdGgucHhdPVwiZHJvcGRvd25XaWR0aFwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1saXN0XCI+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCB3b3JrZmxvdyBvZiB3b3JrZmxvd1R5cGVMaXN0XCIgKGNsaWNrKT1cImNoYW5nZVdvcmtmbG93KCRldmVudCwgd29ya2Zsb3cpXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvICpuZ0lmPVwid29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1wiIFt2YWx1ZV09XCJ3b3JrZmxvdz8uY29kZVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gd29ya2Zsb3c/LmNvZGVcIj5cbiAgICAgICAgICAgICAge3sgd29ya2Zsb3c/LndvcmtmbG93TmFtZSB9fTwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vdmVybGF5XCIgKm5nSWY9XCJ3b3JrZmxvd0xpc3RcIiAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0xpc3QoKVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxhcHAtY29uZmlybWF0aW9uLWFsZXJ0IGlkPVwiY29uZmlybWF0aW9uLWRpYWxvZ3VlXCIgKGFjdGlvbik9XCJjb25maXJtV29ya2Zsb3dDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAqbmdJZj1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5pc1Zpc2libGVcIiBbbWVzc2FnZV09XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8ubWVzc2FnZVwiXG4gICAgICBbY29uZmlnXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnXCI+PC9hcHAtY29uZmlybWF0aW9uLWFsZXJ0PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|