vcomply-workflow-engine 7.1.2 → 7.1.4
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/more-option/more-option.component.mjs +10 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +77 -13
- package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +13 -35
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +36 -23
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -4
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +8 -7
- package/fesm2022/vcomply-workflow-engine.mjs +211 -150
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +1 -0
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -5
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -427,9 +427,6 @@ export class WorkflowEngineContainerComponent {
|
|
|
427
427
|
this.moreOption.resetAll(this.currentWorkflow?.code);
|
|
428
428
|
}
|
|
429
429
|
this.decideViewMoreOption();
|
|
430
|
-
if (this.currentWorkflow?.code === 'CAR' && this.workflowDetails) {
|
|
431
|
-
this.workflowDetails.onCompletionResponsibility = null;
|
|
432
|
-
}
|
|
433
430
|
}
|
|
434
431
|
break;
|
|
435
432
|
case 'EDIT_RISK':
|
|
@@ -858,4 +855,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
858
855
|
type: HostListener,
|
|
859
856
|
args: ['window:resize', ['$event']]
|
|
860
857
|
}] } });
|
|
861
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzdELE1BQU0sT0FBTyxnQ0FBZ0M7SUFRM0MsWUFDUyxZQUEwQixFQUN6QixRQUF5QixFQUMxQixJQUFpQixFQUNoQixnQkFBMkMsRUFDM0Msa0JBQXNDLEVBQ3RDLDJCQUF3RCxFQUN4RCxhQUE0QixFQUM1QixxQkFBNEM7UUFQN0MsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBQzNDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QiwwQkFBcUIs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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgVmlld0NoaWxkLFxuICBlZmZlY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkFsZXJ0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maXJtYXRpb24tYWxlcnQnO1xuaW1wb3J0IHsgSXNzdWVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pc3N1ZS1kYXRhJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctYXNzZXNzbWVudC93b3JrZmxvdy1hc3Nlc3NtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbXBvcnRBbkFzc2Vzc21lbnRDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1hc3Nlc3NtZW50L2ltcG9ydC1hbi1hc3Nlc3NtZW50L2ltcG9ydC1hbi1hc3Nlc3NtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd0NvbXBsaWFuY2VDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IFdvcmtmbG93UG9saWN5Q29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dSaXNrQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcmlzay93b3JrZmxvdy1yaXNrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dBbklzc3VlQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9sb2ctYW4taXNzdWUvbG9nLWFuLWlzc3VlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb3JlT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9tb3JlLW9wdGlvbi9tb3JlLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50IH0gZnJvbSAnLi4vd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmNPYmplY3RDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy9ncmMtb2JqZWN0L2dyYy1vYmplY3QtY29udGFpbmVyL2dyYy1vYmplY3QtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlcG9ydEFDYXNlU2VydmljZSB9IGZyb20gJy4uL3JlcG9ydC1hLWNhc2Uvc2VydmljZXMvcmVwb3J0LWEtY2FzZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtmbG93Q2FzZUNvbXBvbmVudCB9IGZyb20gJy4uL3JlcG9ydC1hLWNhc2Uvd29ya2Zsb3ctY2FzZS93b3JrZmxvdy1jYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZXBvcnQtY2FzZS1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2lmcmFtZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvc3RNZXNzYWdlRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lmcmFtZS10eXBlJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZjb21wbHktd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93RW5naW5lQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgaXNIb3N0UmVmcmVzaEFjdGl2ZSA9IHRydWU7XG4gIGlzUkNTZWxlY3RlZCA9IGZhbHNlO1xuICBmZWF0dXJlRmxhZ19ncm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkVG9DYXNlTW9kZSA9ICcnO1xuXG4gIHBlcm1pc3Npb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIG9yZ0NvbW1vblNlcnZpY2U6IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvcnRBQ2FzZVNlcnZpY2U6IFJlcG9ydEFDYXNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZTogUmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY2hlY2tDdXJyZW50V29ya2Zsb3coKTtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5jYXNlVHlwZUxvYWRlci5uZXh0KHRydWUpO1xuICAgIHRoaXMuY2hlY2tQZXJtaXNzaW9uKCk7XG4gIH1cbiAgQElucHV0KCkgd29ya2Zsb3dUeXBlID0gJyc7XG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcbiAgQElucHV0KCkgaWQgPSAnJztcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICdHTE9CQUwnO1xuICBASW5wdXQoKSBzb3VyY2U6ICdTQVAnIHwgJ1dPUktST09NJyB8ICcnID0gJyc7XG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBhbGxvd2VkV29ya2Zsb3dzOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgZnJhbWV3b3JrRGV0YWlsczogQXJyYXk8YW55PiA9IFtdOyAvLyBvbmx5IGZvciBjb21wbGlhbmNlIHBhcnQgZm9yIGZyYW1ld29ya1xuICBASW5wdXQoKSBzZWxlY3RlZFJDID0gJyc7XG4gIEBJbnB1dCgpIHNlY29uZGFyeU9wZW5Qb3J0YWwgPSAnJztcbiAgQElucHV0KCkgZGVmYXVsdFJpc2tUeXBlID0gJ05PUk1BTCc7XG4gIEBJbnB1dCgpIG1vdmVUb1JlZ2lzdGVyTW9kZSA9ICcnO1xuICBASW5wdXQoKSB3b3JrZmxvd0RldGFpbHM6IGFueTtcbiAgQElucHV0KCkgcmVwb25zaWJpbGl0eURhdGEgPSB7XG4gICAgLy8gb25seSB1c2VkIGJ5IGxvZyBhbiBpc3N1ZVxuICAgIHJpZDogbnVsbCxcbiAgICByZXNwb25zaWJpbGl0eU5hbWU6ICcnLFxuICAgIHJjSWQ6IG51bGwsXG4gICAgZHVlRGF0ZUlkOiAnJyxcbiAgfTtcbiAgQElucHV0KCkgYXNzZXNzbWVudFF1ZXN0aW9uOiBhbnkgPSB7XG4gICAgcXVlc3Rpb25OYW1lOiAnJyxcbiAgICBxdWVzdGlvbk51bWJlcjogJycsXG4gICAgcXVlc3Rpb25JZDogJycsXG4gICAgYXNzZXNzbWVudElkOiAnJyxcbiAgICBhdWRpdGVlSWQ6IG51bGwsXG4gIH07XG4gIEBJbnB1dCgpIHBpZCA9ICcnO1xuICBASW5wdXQoKSBwcm9ncmFtVHlwZTogbnVtYmVyID0gMTtcbiAgQElucHV0KCkgaXNzdWVEYXRhID0ge1xuICAgIGF1ZGl0UGxhbklkOiBudWxsLFxuICAgIGF1ZGl0UGxhbk5hbWU6ICcnLFxuICAgIHJjSWQ6IG51bGwsXG4gIH07XG4gIEBJbnB1dCgpIGVudHJ1c3RCdXR0b25OYW1lID0gJ0VudHJ1c3QnO1xuICBASW5wdXQoKSBjb25maWchOiBJc3N1ZUNvbmZpZ3VyYXRpb247XG4gIEBJbnB1dCgpIGNvbnZlcnRGaWxlRGF0YSA9IHt9O1xuICBASW5wdXQoKSBzZWxlY3RlZENhdGVnb3J5ID0gJyc7XG5cbiAgQElucHV0KCkgc2VsZWN0ZWRQcm9ncmFtOiBhbnkgPSBudWxsO1xuICBASW5wdXQoKSBjYW5GcmFtZXdvcmtDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlOyAvLyBpZiBmcmFtZXdvcmsgY2FuIEVkaXRlZCBvciBub3Q7IEZvciBDcmVhdGUgYSBwcm9ncmFtXG4gIEBJbnB1dCgpIC8qICAqL1xuICAvKiAgKi9cbiAgQElucHV0KClcbiAgYWRkVG9Qcm9ncmFtRGV0YWlsczoge1xuICAgIF9pZDogc3RyaW5nO1xuICAgIGZyYW1ld29ya19uYW1lOiBzdHJpbmc7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIH0gPSB7XG4gICAgX2lkOiAnJyxcbiAgICBmcmFtZXdvcmtfbmFtZTogJycsXG4gICAgaWQ6IDAsXG4gICAgdHlwZTogJycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICB9O1xuICBASW5wdXQoKSBncmNUeXBlOiAwIHwgMSB8IDIgfCAzID0gMDtcbiAgQElucHV0KCkgaXNTZW5kRm9yQXR0ZXN0YXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYXNzZXNzbWVudERldGFpbHM6IGFueTtcbiAgQElucHV0KCkgdGVtcGxhdGVJZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGN1c3RvbUZpZWxkczogYW55W10gPSBbXTtcblxuICBvcmdEZXRhaWxzOiBhbnk7XG4gIHByb2dyYW1TaW1wbGlmeUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuICBjYXNlRmVhdHVyZUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBhbmltYXRpb24gPSB0cnVlO1xuICB3b3JrZmxvd0xpc3QgPSBmYWxzZTtcbiAgc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICBpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgZGlzYWJsZVdvcmtmbG93Q2hhbmdlITogYm9vbGVhbjtcbiAgY2hlY2twb2ludENvdW50OiBudW1iZXIgPSAwO1xuICByZXBvcnRCeTogc3RyaW5nID0gJyc7XG4gIGN1cnJlbnRCdXNpbmVzc0N5Y2xlOiBhbnkgPSAnJztcbiAgY2FzZVR5cGVQZXJtaXNzaW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ3Jpc2snLCB7IHN0YXRpYzogZmFsc2UgfSkgcmlza0NvbXBvbmVudCE6IFdvcmtmbG93Umlza0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbXVsdGlwbGVSaXNrJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHJpc2tCdWxrVXBsb2FkITogQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtdWx0aXBsZVJlc3BvbnNpYmlsaXR5JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCE6IEFkZE11bHRpcGxlUmlza0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncmVzcG9uc2liaWxpdHknLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY29tcGxpYW5jZSE6IFdvcmtmbG93Q29tcGxpYW5jZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbW9yZU9wdGlvbicsIHsgc3RhdGljOiBmYWxzZSB9KSBtb3JlT3B0aW9uITogTW9yZU9wdGlvbkNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKSBkcm9wZG93biE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duUm93JywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duUm93ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9saWN5JykgcG9saWN5ITogV29ya2Zsb3dQb2xpY3lDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2xvZ0FuSXNzdWUnKSBsb2dJc3N1ZUNvbXBvbmVudCE6IExvZ0FuSXNzdWVDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2Fzc2Vzc21lbnQnKVxuICB3b3JrZmxvd0Fzc2Vzc21lbnRDb21wb25lbnQhOiBXb3JrZmxvd0Fzc2Vzc21lbnRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2ltcG9ydEFzc2Vzc21lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgaW1wb3J0QW5Bc3Nlc3NtZW50ITogSW1wb3J0QW5Bc3Nlc3NtZW50Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdwcm9ncmFtJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByb2dyYW0hOiBXb3JrZmxvd1Byb2dyYW1Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2dyY09iamVjdCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBncmNPYmplY3QhOiBHcmNPYmplY3RDb250YWluZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3JlcG9ydENhc2UnKSByZXBvcnRDYXNlITogV29ya2Zsb3dDYXNlQ29tcG9uZW50O1xuXG4gIGRyb3Bkb3duTGVmdCE6IGFueTtcbiAgZHJvcGRvd25Ub3AhOiBhbnk7XG4gIGRyb3Bkb3duV2lkdGghOiBhbnk7XG4gIGNsb3NlT25Fc2M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gZmVhdHVyZSBmbGFnXG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgb3JnYW5pemF0aW9uRGV0YWlsczogYW55O1xuICBzZWxlY3RlZEFzc2Vzc21lbnQ6IGFueTtcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnRcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgW1xuICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQ/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLmNvbXBsaWFuY2U/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMuaW1wb3J0QW5Bc3Nlc3NtZW50Py5zaG93U21pbGV5LFxuICAgICAgICB0aGlzLmxvZ0lzc3VlQ29tcG9uZW50Py5zaG93U21pbGV5LFxuICAgICAgXS5pbmNsdWRlcyh0cnVlKSB8fFxuICAgICAgdGhpcy5wcm9ncmFtPy5hY3RpdmVMaXN0IHx8XG4gICAgICB0aGlzLmNvbXBsaWFuY2U/LmFjdGl2ZVNlbGVjdG9yIHx8XG4gICAgICB0aGlzLmdyY09iamVjdD8ub3BlbmVkUG9wdXBcbiAgICApIHtcbiAgICAgIC8vRG8gTm90aGluZ1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3dFbmdpbmUoKTtcbiAgICB9XG4gIH1cblxuICB1c2VyTGlzdDogYW55ID0gW107XG4gIGN1cnJlbnRXb3JrZmxvdyE6IGFueTtcbiAgd29ya2Zsb3dUeXBlTGlzdDogYW55ID0gW1xuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhIFJlc3BvbnNpYmlsaXR5JyxcbiAgICAgIGNvZGU6ICdDQVInLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdSRVNQT05TSUJJTElUWScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgTXVsdGlwbGUgUmVzcG9uc2liaWxpdGllcycsXG4gICAgICBjb2RlOiAnQ01SJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnTVVMVElQTEVfUkVTUE9OU0lCSUxJVFknLFxuICAgIH0sXG4gICAgeyB3b3JrZmxvd05hbWU6ICdBZGQgYSBSaXNrJywgY29kZTogJ0FBUicsIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUklTSycgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgTXVsdGlwbGUgUmlza3MnLFxuICAgICAgY29kZTogJ0FNUicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ01VTFRJUExFX1JJU0snLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgUG9saWN5JyxcbiAgICAgIGNvZGU6ICdDQVAnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdQT0xJQ1knLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgU3VydmV5JyxcbiAgICAgIGNvZGU6ICdDQVMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdTVVJWRVknLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgRm9ybScsXG4gICAgICBjb2RlOiAnQ0FGJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnRk9STScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdMb2cgYW4gSXNzdWUnLFxuICAgICAgY29kZTogJ0xBSScsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ0lTU1VFJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBhbiBBc3Nlc3NtZW50JyxcbiAgICAgIGNvZGU6ICdBQUEnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdBU1NFU1NNRU5UJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0ltcG9ydCBhbiBBc3Nlc3NtZW50JyxcbiAgICAgIGNvZGU6ICdJQUEnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdJTVBPUlRfQVNTRVNTTUVOVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgYSBQcm9ncmFtJyxcbiAgICAgIGNvZGU6ICdDQVBSJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUFJPR1JBTScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdBZGQgYSBHUkMgT2JqZWN0JyxcbiAgICAgIGNvZGU6ICdHUkMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdHUkNfT0JKRUNUUycsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdSZXBvcnQgYSBDYXNlJyxcbiAgICAgIGNvZGU6ICdSQUMnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdSRVBPUlRfQV9DQVNFJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0Fzc2lnbiBjYXNlIHRvIHdvcmtmbG93JyxcbiAgICAgIGNvZGU6ICdBQ1RXJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnUkVQT1JUX0FfQ0FTRScsXG4gICAgfSxcbiAgXTtcbiAgYWRkaXRpb25hbEluZm9ybWF0aW9uTGlzdCA9IFtcbiAgICAnT2JqZWN0aXZlJyxcbiAgICAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAnUmVzcG9uc2liaWxpdHkgQ2F0ZWdvcnknLFxuICBdO1xuICBjb25maXJtYXRpb25BbGVydENvbmZpZzogQ29uZmlybWF0aW9uQWxlcnQgPSB7IGlzVmlzaWJsZTogZmFsc2UgfTtcblxuICBjaGVja0N1cnJlbnRXb3JrZmxvdygpIHtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS53b3JrZmxvd0NvZGUuc3Vic2NyaWJlKChjb2RlKSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gJ0FDVycgfHwgY29kZSA9PT0gJ0FDVFcnKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmFkZFRvQ2FzZU1vZGUgPSBjb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFkZFRvQ2FzZU1vZGUgPSAnJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBjbG9zZVdvcmtmbG93RW5naW5lKGV2dD86IGFueSkge1xuICAgIGlmIChldnQ/LmNvbmZpcm0gPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdChldnQgPyBldnQuZXZ0IDogZXZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm0oZXZ0KTtcbiAgICB9XG4gIH1cblxuICBjbG9zZUNvbmZpcm0oZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ0lmIHlvdSBuYXZpZ2F0ZSBhd2F5LCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdpbGwgYmUgbG9zdC4nLFxuICAgICAgYWN0aW9uOiAnV09SS0ZMT1dfQ0xPU0UnLFxuICAgICAgZGF0YTogZXZ0LFxuICAgIH07XG4gIH1cbiAgZXhlY3V0ZUNsb3NlKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dC5hY3Rpb24gPT09ICdZRVMnKSB7XG4gICAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCgpO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE5ldHdvcmtMaXN0bmVyKCk7XG4gICAgdGhpcy5zZXRXb3JrZmxvdyh0aGlzLndvcmtmbG93VHlwZSwgdGhpcy53b3JrZmxvd1R5cGVMaXN0KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgICB0aGlzLnNldFdvcmtmbG93KHRoaXMud29ya2Zsb3dUeXBlLCB0aGlzLndvcmtmbG93VHlwZUxpc3QpO1xuICAgIHRoaXMuZGVjaWRlVmlld01vcmVPcHRpb24oKTtcbiAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uRGV0YWlscygpO1xuICAgIHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcbiAgICB0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9wcm9ncmFtX3NpbXBsaWZ5J1xuICAgICk7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9ncm91cHMnXG4gICAgKTtcbiAgICB0aGlzLmNhc2VGZWF0dXJlRmxhZyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9jYXNlc19lbmFibGVkJyk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZnkoKTtcbiAgICB0aGlzLmdldEFzc2Vzc21lbnREZXRhaWxzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNoZWNrUGVybWlzc2lvbigpIHtcbiAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24gPVxuICAgICAgdGhpcy5yZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UuaGFzUGVybWlzc2lvbi5zdWJzY3JpYmUoXG4gICAgICAgIChoYXNQZXJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlVHlwZVBlcm1pc3Npb24gPSBoYXNQZXJtaXNzaW9uO1xuICAgICAgICAgIGlmIChoYXNQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrUmVwb3J0Q2FzZVBlcm1pc3Npb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXBvcnRBQ2FzZVNlcnZpY2UuY2FzZVR5cGVMb2FkZXIubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBzZXROZXR3b3JrTGlzdG5lcigpIHtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgKGUpID0+IHtcbiAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgJ0Nvbm5lY3Rpb24gbG9zdCE8YnI+Q2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpdml0eS4nLFxuICAgICAgICAnYWxlcnQnXG4gICAgICApO1xuICAgIH0pO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIChlKSA9PiB7XG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coXCJZb3UncmUgYmFjayBvbmxpbmUhXCIsICdzdWNjZXNzJyk7XG4gICAgfSk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMud29ya2Zsb3dUeXBlTGlzdCA9IHRoaXMud29ya2Zsb3dUeXBlTGlzdC5maWx0ZXIoKHdvcmtmbG93OiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLmFsbG93ZWRXb3JrZmxvd3MuaW5jbHVkZXMod29ya2Zsb3cucGVybWlzc2lvbklkZW50aWZpZXIpKSB7XG4gICAgICAgIHJldHVybiB3b3JrZmxvdztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnKSB7XG4gICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy5kaXNhYmxlV29ya2Zsb3dDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrUmVwb3J0Q2FzZVBlcm1pc3Npb24oKSB7XG4gICAgY29uc3QgaGFzUGVybWlzc2lvbiA9XG4gICAgICB0aGlzLnJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZS5jaGVja1JlcG9ydEFDYXNlUGVybWlzc2lvbigpO1xuICAgIGlmIChoYXNQZXJtaXNzaW9uICYmIHRoaXMuY2FzZUZlYXR1cmVGbGFnKSB7XG4gICAgICB0aGlzLmFsbG93ZWRXb3JrZmxvd3MucHVzaCgnUkVQT1JUX0FfQ0FTRScpO1xuICAgICAgdGhpcy5hbGxvd2VkV29ya2Zsb3dzID0gdGhpcy5hbGxvd2VkV29ya2Zsb3dzLmZpbHRlcihcbiAgICAgICAgKHdvcmtmbG93OiBhbnkpID0+IHdvcmtmbG93ICE9PSAnSVNTVUUnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFsbG93ZWRXb3JrZmxvd3MgPSB0aGlzLmFsbG93ZWRXb3JrZmxvd3MuZmlsdGVyKFxuICAgICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3cgIT09ICdSRVBPUlRfQV9DQVNFJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1c2VyTGlzdEVtaXR0ZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXNlckxpc3QgPSBldmVudDtcbiAgfVxuXG4gIGRlY2lkZVZpZXdNb3JlT3B0aW9uKHR5cGU/OiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIHRoaXMuY2xvc2VPbkVzYyA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoWydDTVInLCAnQU1SJywgJ0FBQScsICdJQUEnXS5pbmNsdWRlcyh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgIGlmICh0eXBlID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuYWRkVG9DYXNlTW9kZSA9PT0gJ0FDVycpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgdGhpcy5zZXRXb3JrZmxvd1NlbGVjdG9yKHR5cGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09ICdSQUMnKSB7XG4gICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLnNldFdvcmtmbG93U2VsZWN0b3IodHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgc2V0V29ya2Zsb3dTZWxlY3Rvcih0eXBlPzogYm9vbGVhbil7XG4gICAgaWYgKHR5cGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNhc2VSZXBvcnRlZEJ5KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlcG9ydEJ5ID0gZXZlbnQ7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgaWYodGhpcy5hZGRUb0Nhc2VNb2RlID09PSAnQUNXJyB8fCB0aGlzLmFkZFRvQ2FzZU1vZGUgPT09ICdBQ1RXJykge1xuICAgICAgdGhpcy5yZXBvcnRDYXNlLmFkZFRvQ2FzZSgpO1xuICAgICAgdGhpcy5zdWJtaXRXb3JrZmxvdygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKSB7XG4gICAgICBjYXNlICdBQVInOlxuICAgICAgICB0aGlzLnJpc2tDb21wb25lbnQuc3VibWl0UmlzaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xBSSc6XG4gICAgICAgIHRoaXMubG9nSXNzdWVDb21wb25lbnQuYWRkSXNzdWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVInOlxuICAgICAgICB0aGlzLmNvbXBsaWFuY2Uuc3VibWl0UmVzcG9uc2liaWxpdHkoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVAnOlxuICAgICAgICB0aGlzLnBvbGljeS5zdWJtaXRQb2xpY3koKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBQUEnOlxuICAgICAgICB0aGlzLndvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudC5zdWJtaXRBc3Nlc3NtZW50KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FQUic6IHtcbiAgICAgICAgdGhpcy5wcm9ncmFtLnNhdmVQcm9ncmFtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnR1JDJzoge1xuICAgICAgICBjb25zb2xlLmxvZygndGhpcy5ncmNPYmplY3QnLCB0aGlzLmdyY09iamVjdCk7XG4gICAgICAgIHRoaXMuZ3JjT2JqZWN0LnNhdmVHUkNPYmplY3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdSQUMnOiB7XG4gICAgICAgIHRoaXMucmVwb3J0Q2FzZS5yZXBvcnRDYXNlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gY2FzZSAnSUFBJzpcbiAgICAgIC8vICAgdGhpcy5pbXBvcnRBbkFzc2Vzc21lbnQuc3VibWl0QXNzZXNzbWVudCgpO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pdFdvcmtmbG93KCk7XG4gIH1cblxuICBzdWJtaXRXb3JrZmxvdygpIHsgXG4gICAgY29uc3QgbWVzc2FnZSA9IHt0eXBlOidzdWJtaXQnfVxuICAgIGNvbnN0IHRhcmdldE9yaWdpbiA9IHRoaXMuZ2V0T3JpZ2luKCk7XG4gICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShtZXNzYWdlLCB0YXJnZXRPcmlnaW4pO1xuICB9IFxuICBcbiAgcHJpdmF0ZSBnZXRPcmlnaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgfVxuXG4gIGVkaXRXb3JrZmxvdygpIHtcbiAgICB0aGlzLndvcmtmbG93TGlzdCA9ICF0aGlzLndvcmtmbG93TGlzdDtcbiAgICBjb25zdCBkcm9wZG93biA9IHRoaXMuZHJvcGRvd24ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLmRyb3Bkb3duTGVmdCA9IGRyb3Bkb3duLmxlZnQ7XG4gICAgdGhpcy5kcm9wZG93blRvcCA9IGRyb3Bkb3duLnRvcCArIGRyb3Bkb3duLmhlaWdodDtcbiAgICB0aGlzLmRyb3Bkb3duV2lkdGggPSBkcm9wZG93bi53aWR0aDtcbiAgfVxuICBjbG9zZVdvcmtmbG93TGlzdCgpIHtcbiAgICB0aGlzLndvcmtmbG93TGlzdCA9IGZhbHNlO1xuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBzaXplQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLndvcmtmbG93TGlzdCA9IGZhbHNlO1xuICB9XG4gIGNoYW5nZVdvcmtmbG93KGV2dDogYW55LCBzZWxlY3RlZFdvcmtmbG93OiBhbnkpIHtcbiAgICBpZiAoc2VsZWN0ZWRXb3JrZmxvdz8uY29kZSA9PT0gdGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdJZiB5b3UgY2hhbmdlIHRoZSB3b3JrZmxvdywgYW55IHVuc2F2ZWQgY2hhbmdlcyB3b3VsZCBiZSBsb3N0LicsXG4gICAgICBhY3Rpb246ICdXT1JLRkxPV19DSEFOR0UnLFxuICAgICAgZGF0YTogc2VsZWN0ZWRXb3JrZmxvdyxcbiAgICB9O1xuICB9XG5cbiAgY29uZmlybVdvcmtmbG93Q2hhbmdlKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dC5hY3Rpb24gPT09ICdZRVMnKSB7XG4gICAgICB0aGlzLmNsb3NlT25Fc2MgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldnQucGF5bG9hZC5hY3Rpb24pIHtcbiAgICAgICAgY2FzZSAnV09SS0ZMT1dfQ0hBTkdFJzpcbiAgICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IGV2dD8ucGF5bG9hZD8uZGF0YSA/PyBudWxsO1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9yZU9wdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ucmVzZXRBbGwodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kZWNpZGVWaWV3TW9yZU9wdGlvbigpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnQ0FSJyAmJiB0aGlzLndvcmtmbG93RGV0YWlscykge1xuICAgICAgICAgICAgICB0aGlzLndvcmtmbG93RGV0YWlscy5vbkNvbXBsZXRpb25SZXNwb25zaWJpbGl0eSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VESVRfUklTSyc6XG4gICAgICAgICAgdGhpcy5yaXNrQ29tcG9uZW50LmNyZWF0ZVJpc2sodGhpcy5yaXNrQ29tcG9uZW50LnJpc2tGb3JtKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUE9MSUNZX1BPUlRBTCc6XG4gICAgICAgICAgdGhpcy5wb2xpY3kuY29uZmlybVBvbGljeVBvcnRhbChldnQuYWN0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnV09SS0ZMT1dfQ0xPU0UnOlxuICAgICAgICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KGV2dD8ucGF5bG9hZD8uZGF0YSk7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuaWZyYW1lU2VydmljZS5nZXRDbG9zZVdlYnZpZXdNZXNzYWdlKFBvc3RNZXNzYWdlRXZlbnQuQ0xPU0VfV0VCVklFVywgJycpO1xuICAgICAgICAgIHRoaXMuaWZyYW1lU2VydmljZS5wb3N0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2hlY2twb2ludCc6XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVIuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgfHxcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UUycpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlbW92ZUNoZWNrcG9pbnQoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdST0xFJzpcbiAgICAgICAgICB0aGlzLnByb2dyYW0ucmVtb3ZlKGV2dC5wYXlsb2FkLmRhdGEsICdST0xFJyk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnbmV3LWNoZWNrcG9pbnRzJzpcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0FTU0VTU01FTlQnICYmICFldnQucGF5bG9hZC5pc0RhdGFSZW1vdmVkKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UUycgJiYgIWV2dC5wYXlsb2FkLmlzRGF0YVJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBldnQucGF5bG9hZC5pc0NoZWNrcG9pbnRDaGVja2VkICYmXG4gICAgICAgICAgICAgIG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBvcHRpb24uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVtb3ZlKCduZXctY2hlY2twb2ludHMnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYXNzaWduZWVUeXBlQ2hhbmdlJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTEwnO1xuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPVxuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnNldExpc3QoXG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2Uub3JpZ2luYWxBc3NpZ25lZSxcbiAgICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ2Fzc2lnbmVlR3JvdXBzJ11bJ2xpc3QnXSA9XG4gICAgICAgICAgICAgIFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzZXF1ZW50aWFsJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FueVJldmlld2VyJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGV2dC5wYXlsb2FkLmFjdGlvbikge1xuICAgICAgICBjYXNlICdQT0xJQ1lfUE9SVEFMJzpcbiAgICAgICAgICB0aGlzLnBvbGljeS5jb25maXJtUG9saWN5UG9ydGFsKGV2dC5hY3Rpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhc3NpZ25lZVR5cGVDaGFuZ2UnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cbiAgICAgICAgICAgICdBTllfT05FJztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzZXF1ZW50aWFsJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhbnlSZXZpZXdlcic6XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlWydyZXNwb25zaWJpbGl0eUZvcm0nXVsncmV2aWV3ZXJzJ11bXG4gICAgICAgICAgICAnc2VxdWVudGlhbFdvcmtmbG93J1xuICAgICAgICAgIF0gPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgYWN0aW9uOiAnJyxcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgfTtcbiAgICByZXR1cm4gZXZ0O1xuICB9XG5cbiAgc2V0V29ya2Zsb3cod29ya0Zsb3dDb2RlOiBhbnksIHdvcmtGbG93TGlzdDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRXb3JrZmxvdyA9IHdvcmtGbG93TGlzdC5maW5kKFxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudD8uY29kZSA9PT0gd29ya0Zsb3dDb2RlXG4gICAgKTtcbiAgICBzZWxlY3RlZFdvcmtmbG93XG4gICAgICA/ICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHNlbGVjdGVkV29ya2Zsb3cpXG4gICAgICA6ICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IG51bGwpO1xuICAgIHJldHVybiBzZWxlY3RlZFdvcmtmbG93O1xuICB9XG5cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHN3aXRjaCAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0FBUic6XG4gICAgICAgIHRoaXMucmlza0NvbXBvbmVudD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xBSSc6XG4gICAgICAgIHRoaXMubG9nSXNzdWVDb21wb25lbnQ/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSQUMnOlxuICAgICAgY2FzZSAnQUNUVyc6XG4gICAgICAgIHRoaXMucmVwb3J0Q2FzZS5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FSJzpcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5hc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICdjb21wbGlhbmNlX2F1ZGl0J1xuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubW9yZU9wdGlvbj8ubW9yZU9wdGlvbnNMaXN0Py5DQVI/LmZpbmRJbmRleChcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jb2RlID09PSAnQVNTRVNTTUVOVCdcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uY2hlY2tlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZT8uYWRkTW9yZUluZm8oXG4gICAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBsaWFuY2U/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVAnOlxuICAgICAgICB0aGlzLnBvbGljeT8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUFInOlxuICAgICAgICB0aGlzLnByb2dyYW0/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdHUkMnOlxuICAgICAgICB0aGlzLmdyY09iamVjdD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZU1vcmVPcHRpb24oZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm1vcmVPcHRpb24pIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbi5wb3B1bGF0ZShldmVudCk7XG4gICAgfVxuICB9XG4gIGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyhldmVudDogYW55KSB7XG4gICAgdGhpcy5tb3JlT3B0aW9uPy5oaWRlRWxlbWVudHMoZXZlbnQpO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1hdGlvblBvcHVwKGNvbmZpZzogQ29uZmlybWF0aW9uQWxlcnQpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgYnVsa1VwbG9hZEJyb3dzZShldmVudDogYW55KSB7XG4gICAgc3dpdGNoIChldmVudCkge1xuICAgICAgY2FzZSAnQU1SJzpcbiAgICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZC50cmlnZ2VyQnJvd3NlRmlsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NNUic6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnRyaWdnZXJCcm93c2VGaWxlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSUFBJzpcbiAgICAgICAgdGhpcy5pbXBvcnRBbkFzc2Vzc21lbnQudHJpZ2dlckJyb3dzZUZpbGUoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVzZXRGb3JtKCkge1xuICAgIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xuICAgIHRoaXMuZW50cnVzdEJ1dHRvbk5hbWUgPSAnRW50cnVzdCc7XG4gIH1cblxuICBvblJlc2V0R1JDRm9ybSgpIHtcbiAgICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcbiAgfVxuICBzaGlmdFRvRWRpdE1vZGUoKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuICB9XG4gIHNjcm9sbEZvcm0oKSB7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25Sb3c/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy50b3AgPCAzOCkge1xuICAgICAgdGhpcy5kcm9wZG93blJvdz8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5hZGQoJ2hpZGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcm9wZG93blJvdz8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5yZW1vdmUoJ2hpZGUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IHdoaWNoIG1vcmUgb3B0aW9ucyB3ZSBhcmUgcmVtb3ZpbmcuXG4gICAqIEBwYXJhbSBpc0NoZWNrcG9pbnRDaGVja2VkICBpcyB0cnVlIGlmIHZhbHVlIGNoZWNrcG9pbnRzIGlzIHJlbW92ZWQgYnkgY2xpY2tpbmcgb24gbW9yZSBvcHRpb25zXG4gICAqL1xuICBvblJlbW92aW5nQ2hlY2twb2ludChcbiAgICBldmVudDogc3RyaW5nLFxuICAgIGlzQ2hlY2twb2ludENoZWNrZWQ/OiBib29sZWFuLFxuICAgIGlzRGF0YVJlbW92ZWQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGxldCBtc2cgPSAnJztcbiAgICBpZiAoZXZlbnQgPT09ICduZXctY2hlY2twb2ludHMnKSB7XG4gICAgICBtc2cgPVxuICAgICAgICAnSWYgeW91IGNob29zZSB0byByZW1vdmUgdGhlc2UgQ2hlY2twb2ludHMsIHRoZXkgd2lsbCBiZSBkZWxldGVkIGFuZCBjYW5ub3QgYmUgcmVzdG9yZWQuIEhvd2V2ZXIsIHlvdSB3aWxsIHN0aWxsIGJlIGFibGUgdG8gY3JlYXRlIG5ldyBDaGVja3BvaW50cyBvciBsaW5rIGFuIEFzc2Vzc21lbnQuJztcbiAgICB9IGVsc2Uge1xuICAgICAgbXNnID1cbiAgICAgICAgJ0lmIHlvdSBjaG9vc2UgdG8gcmVtb3ZlIHRoZXNlIGNoZWNrcG9pbnRzLCB0aGV5IHdpbGwgYmUgZGVsZXRlZCBhbmQgY2Fubm90IGJlIHJlc3RvcmVkLic7XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiBtc2csXG4gICAgICBhY3Rpb246IGV2ZW50LFxuICAgICAgZGF0YTogeyB0eXBlOiAncmVzcG9uc2liaWxpdHlDaGVja3BvaW50JyB9LFxuICAgICAgaXNDaGVja3BvaW50Q2hlY2tlZDogaXNDaGVja3BvaW50Q2hlY2tlZCA/PyBmYWxzZSxcbiAgICAgIGlzRGF0YVJlbW92ZWQ6IGlzRGF0YVJlbW92ZWQgPz8gZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIG9uUmVtb3ZpbmdSb2xlKGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbXNnID0gJyc7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBtc2cgPSAnSWYgeW91IGNoYW5nZSB0aGUgcm9sZXMsIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgYWN0aW9uOiAnUk9MRScsXG4gICAgICBkYXRhOiBldmVudCxcbiAgICB9O1xuICB9XG5cbiAgaXNBc3Nlc3NtZW50RGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBpZiAob3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgfHwgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJykge1xuICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkaXNhYmxlTW9yZU9wdGlvbnMod29ya2Zsb3dDb2RlOiBhbnksIGRpc2FibGVkRWxlbWVudHNDb2RlOiBhbnkpIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdCkuaW5jbHVkZXMod29ya2Zsb3dDb2RlKSkge1xuICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdFt3b3JrZmxvd0NvZGVdLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZEVsZW1lbnRzQ29kZS5pbmNsdWRlcyhvcHRpb24/LmNvZGUpKSB7XG4gICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrcG9pbnRTZWxlY3Rpb24oZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMuY2hlY2twb2ludENvdW50ID0gZXZlbnQ7XG4gIH1cblxuICBvblJjU2VsZWN0ZWQoaXNSY1NlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1JDU2VsZWN0ZWQgPSBpc1JjU2VsZWN0ZWQ7XG4gIH1cblxuICBmZXRjaE9yZ2FuaXphdGlvbkRldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdDb21tb25TZXJ2aWNlPy5nZXRPcmdEZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMub3JnRGV0YWlscyA9IHJlcztcbiAgICAgICAgaWYgKHJlcz8uYnVzaW5lc3NfY3ljbGVzX2FyciAmJiByZXM/LmJ1c2luZXNzX2N5Y2xlc19hcnI/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcmVzPy5idXNpbmVzc19jeWNsZXNfYXJyLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5zZWxlY3RlZFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgc3BsaXR0ZWQgPSBzZWxlY3RlZFswXS5idXNpbmVzc19jeWNsZT8uc3BsaXQoJy0nKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlID0gYCR7c3BsaXR0ZWRbMF0/LnNsaWNlKFxuICAgICAgICAgICAgMlxuICAgICAgICAgICl9IC0gJHtzcGxpdHRlZFsxXT8uc2xpY2UoNCl9YDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBnZXRVc2VyRGV0YWlscygpIHtcbiAgICB0aGlzLm9yZ0NvbW1vblNlcnZpY2U/LmdldE9yZ1VzZXJJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hdXRoLnVzZXJEZXRhaWxzID0gcmVzO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBvcmdhbml6YXRpb24gdXNlcnMnLCBlcnIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnbmVlVHlwZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgJ1RoaXMgYWN0aW9uIHdpbGwgcmVzZXQgdGhlIGNoYW5nZXMgYW5kIGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgYmFjayB0byB0aGUgb3JpZ2luYWwgYXNzaWduZWUuJyxcbiAgICAgIGFjdGlvbjogJ2Fzc2lnbmVlVHlwZUNoYW5nZScsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIGlzUmVkQWxlcnQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGV2ZW50ID0+ICdzZXF1ZW50aWFsJyB8fCAnYW55UmV2aWV3ZXInXG4gIG9uUmV2aWV3ZXJDaGFuZ2UoZXZlbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbW1vblRleHQ6IHN0cmluZyA9XG4gICAgICAnT25jZSBjb25maXJtZWQsIHRoZSBuZXcgcmV2aWV3IHdvcmtmbG93IHdpbGwgYmUgYXBwbGljYWJsZSBmb3IgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSByZXZpZXcgZHVlIGRhdGVzLic7XG4gICAgY29uc3QgbXNnID1cbiAgICAgIGNvbW1vblRleHQgK1xuICAgICAgKGV2ZW50ID09PSAnYW55UmV2aWV3ZXInXG4gICAgICAgID8gYElmIGFueSByZXZpZXdlciBoYWQgY29tcGxldGVkIHRoZSByZXZpZXcsIHRoZSBjdXJyZW50IHJldmlldyBkdWUgZGF0ZSB3aWxsIGJlIGNsb3NlZCBhbmQgdGhlIHJldmlldyBzdGF0dXMgd2lsbCBiZSB1cGRhdGVkIHRvICdDb21wbGV0ZWQnLmBcbiAgICAgICAgOiAnJyk7XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGFjdGlvbjogZXZlbnQsXG4gICAgfTtcbiAgfVxuXG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmeSgpIHtcbiAgICBpZiAodGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Jlc3BvbnNpYmlsaXR5X3NpbXBsaWZpY2F0aW9uJykpIHtcbiAgICAgIHRoaXMud29ya2Zsb3dUeXBlTGlzdFswXS53b3JrZmxvd05hbWUgPSAnQWRkIGEgUmVzcG9uc2liaWxpdHknO1xuICAgICAgdGhpcy53b3JrZmxvd1R5cGVMaXN0WzFdLndvcmtmbG93TmFtZSA9ICdBZGQgTXVsdGlwbGUgUmVzcG9uc2liaWxpdGllcyc7XG4gICAgfVxuICB9XG5cbiAgIC8vIFRPRE86IFBvcHVsYXRlIGFzc2Vzc21lbnQgZGF0YSBmcm9tIGFscmVhZHkgc2VsZWN0ZWQgZGF0YVxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGFzc2Vzc21lbnREZXRhaWxzIDogc2VsZWN0ZWQgYXNzZXNzbWVudCBkZXRhaWxzIGxpa2UgaXQncyBvYmplY3QgaWQgYW5kIGNhdGVnb3J5X2lkXG4gICAqL1xuICBnZXRBc3Nlc3NtZW50RGV0YWlscygpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMud29ya2Zsb3dEZXRhaWxzPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkOyBcbiAgICBpZihpZCAmJiB0aGlzLndvcmtmbG93VHlwZSA9PT0gJ0FTU0VTU01FTlQnKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgIC5nZXRBc3Nlc3NtZW50RGV0YWlsc0J5SUQoaWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldEFzc2Vzc21lbnREYXRhKHJlcyk7XG4gICAgICB9KTtcbiAgfVxufVxuXG4gIHNldEFzc2Vzc21lbnREYXRhKHJlczogYW55KSB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5RGV0YWlscyA9IHJlc1swXS5jYXRlZ29yeVswXVxuICAgICAgICBjb25zdCBhc3Nlc3NtZW50RGF0YSA9IHtcbiAgICAgICAgICBjYXRlZ29yeV9pZDogcmVzWzBdLmNhdGVnb3J5WzBdLl9pZCxcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiByZXNbMF0uYXNzZXNzbWVudF9pZCxcbiAgICAgICAgICBhc3Nlc3NtZW50RGV0YWlsczoge1xuICAgICAgICAgICAgaWQ6IHJlc1swXS5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgYXNzZXNzbWVudF9uYW1lOiByZXNbMF0uYXNzZXNzbWVudF9uYW1lLFxuICAgICAgICAgICAgcXVlc3Rpb25zOiByZXNbMF0ucXVlc3Rpb25zQ291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYXRlZ29yeV9kZXRhaWxzOiBjYXRlZ29yeURldGFpbHMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50ID0gYXNzZXNzbWVudERhdGE7XG4gIFxufVxufVxuIiwiPGFwcC1zbmFjay1iYXI+PC9hcHAtc25hY2stYmFyPlxuPGRpdiBjbGFzcz1cIndvcmtmbG93LWVuZ2luZS1vdmVybGF5XCI+PC9kaXY+XG5cbjxhcHAtYXNzZXNzbWVudC1saXN0ICpuZ0lmPVwid29ya2Zsb3dUeXBlID09PSAnQVNTRVNTTUVOVCdcIiAoY2FuY2VsQXNzZXNzbWVudCk9XCJjbG9zZVdvcmtmbG93RW5naW5lKClcIiBbaXNFZGl0XT1cInRydWVcIlxuICBbaXNGdWxsU2NyZWVuXT1cInRydWVcIiBbc2VsZWN0ZWRBc3Nlc3NtZW50XT1cInNlbGVjdGVkQXNzZXNzbWVudFwiXG4gIChvbkFzc2Vzc21lbnRTZWxlY3QpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSh7IGV2dDogJGV2ZW50LCBjb25maXJtOiBmYWxzZSB9KVwiPjwvYXBwLWFzc2Vzc21lbnQtbGlzdD5cbjxkaXYgKm5nSWY9XCJ3b3JrZmxvd1R5cGUgIT09ICdBU1NFU1NNRU5UJ1wiIGNsYXNzPVwid29ya2Zsb3ctZW5naW5lXCIgW2NsYXNzLmFuaW1hdGVdPVwiYW5pbWF0aW9uXCIgW2NsYXNzLmJnXT1cIlxuICAgICghaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCB8fCByaXNrQnVsa1VwbG9hZD8uc2hvd0NhdGVnb3J5TGlzdCkgJiZcbiAgICAhcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzXG4gIFwiPlxuICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lclwiIFtuZ1N3aXRjaF09XCJjdXJyZW50V29ya2Zsb3c/LmNvZGVcIlxuICAgIFtjbGFzcy53aXRoLXByZXZpZXctYXNzZXNzbWVudF09XCIoYXV0aD8ucHJldmlld1BhbmVsIHwgYXN5bmMpID09PSB0cnVlXCIgW2NsYXNzLndpdGgtZnJlcXVlbmN5XT1cIlxuICAgICAgY29tcGxpYW5jZT8uYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knIHx8XG4gICAgICBjb21wbGlhbmNlPy5hY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5JyB8fFxuICAgICAgcmlza0NvbXBvbmVudD8uYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knIHx8XG4gICAgICBwb2xpY3k/LmFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5JyB8fFxuICAgICAgcG9saWN5Py5hY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1xuICAgIFwiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoKVwiIGlkPVwiY2xvc2Utd29ya2Zsb3ctZW5naW5lLWJ0blwiIGNsYXNzPVwiY2xvc2VcIiBbYXBwVG9vbHRpcF09XCInW0VzY10gdG8gY2xvc2UnXCJcbiAgICAgIHBsYWNlbWVudD1cImxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBjb25maXJtYXRpb25BbGVydENvbmZpZz8uaXNWaXNpYmxlIHx8ICFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXG4gICAgICBcIiBbY2xhc3Muc21pbGV5LW9wZW5lZF09XCJcbiAgICAgICAgcmlza0NvbXBvbmVudD8uc2hvd1NtaWxleSB8fFxuICAgICAgICBsb2dJc3N1ZUNvbXBvbmVudD8uc2hvd1NtaWxleSB8fFxuICAgICAgICBjb21wbGlhbmNlPy5zaG93U21pbGV5IHx8XG4gICAgICAgIHBvbGljeT8uc2hvd0NyZWF0ZURvY3VtZW50cyB8fFxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zaG93RXhjZWwgfHxcbiAgICAgICAgcmlza0J1bGtVcGxvYWQ/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcmlza0J1bGtVcGxvYWQ/LnNob3dFeGNlbCB8fFxuICAgICAgICBwcm9ncmFtPy5zaG93U21pbGV5IHx8XG4gICAgICAgIGltcG9ydEFuQXNzZXNzbWVudD8uc2hvd1NtaWxleVxuICAgICAgXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzZjs8L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiAqbmdJZj1cIiF1aUtpdFNlcnZpY2UuaXNTbWlsZXlPblwiIGNsYXNzPVwid29ya2Zsb3ctZW5naW5lLW1vcmVcIlxuICAgICAgW2hpZGRlbl09XCJzaG93TW9yZU9wdGlvbiA9PT0gZmFsc2UgfHwgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8uaXNWaXNpYmxlXCIgW2NsYXNzLnJlYWQtb25seV09XCJ1aUtpdFNlcnZpY2U/LmlzTG9hZGVyXCI+XG4gICAgICA8YXBwLW1vcmUtb3B0aW9uICNtb3JlT3B0aW9uIFtjdXJyZW50V29ya2Zsb3ddPVwiY3VycmVudFdvcmtmbG93Py5jb2RlXCIgW2lzRWRpdE1vZGVdPVwibW9kZSA9PT0gJ0VESVQnXCJcbiAgICAgICAgW2lzUkNTZWxlY3RlZF09XCJcbiAgICAgICAgICBpc1JDU2VsZWN0ZWQgfHxcbiAgICAgICAgICAoY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnR1JDJyAmJlxuICAgICAgICAgICAgZ3JjT2JqZWN0Py5saXN0T2JqZWN0LlJDLnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMClcbiAgICAgICAgXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIChzZWxlY3RlZE9wdGlvbik9XCJhZGRNb3JlSW5mbygkZXZlbnQpXCIgW2lzUHJvZ3JhbVNlbGVjdGVkXT1cInNlbGVjdGVkUHJvZ3JhbVwiXG4gICAgICAgIFthbGxvd2VkRmVhdHVyZV09XCJmZWF0dXJlXCIgW29yZ0RldGFpbHNEYXRhXT1cIm9yZ0RldGFpbHNcIiBbaXNBdHRyaWJ1dGVzQXZhaWxhYmxlXT1cIlxuICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0dSQycgJiZcbiAgICAgICAgICBncmNPYmplY3Q/LnNlbGVjdGVkQXR0cmlidXRlcz8uYXR0cmlidXRlcz8ubGVuZ3RoID4gMFxuICAgICAgICBcIj5cbiAgICAgIDwvYXBwLW1vcmUtb3B0aW9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmUtZm9ybVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8uaXNWaXNpYmxlXCIgW2NsYXNzLm5vLXNoYWRvd109XCJcbiAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09ICdBTVInIHx8XG4gICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PSAnQ01SJyB8fFxuICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT0gJ0FBQScgfHxcbiAgICAgICAgdWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gfHxcbiAgICAgICAgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzXG4gICAgICBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiAoc2Nyb2xsKT1cInNjcm9sbEZvcm0oKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAhWydWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywgJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBvcGVuZWRGcm9tXG4gICAgICAgICAgICApXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiEodWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gfHwgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzKVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAjZHJvcGRvd25Sb3dcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgKG1vZGUgPT09ICdFRElUJyB8fFxuICAgICAgICAgICAgICAgICFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8XG4gICAgICAgICAgICAgICAgZGlzYWJsZVdvcmtmbG93Q2hhbmdlIHx8XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRQcm9ncmFtKSAmJlxuICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1xuICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImN1cnJlbnRXb3JrZmxvd1wiPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiICNkcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1wiIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlNlbGVjdCBhIFdvcmtmbG93PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09ICdBQ1RXJ1wiIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFzc2lnbiBhIENhc2UgdG8gV29ya2Zsb3c8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIiFjdXJyZW50V29ya2Zsb3cgJiYgY3VycmVudFdvcmtmbG93Py5jb2RlICE9PSAnQUNUVydcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRXb3JrZmxvdygpXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIFdvcmtmbG93XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQgZmlyc3QtZmllbGRcIiAqbmdJZj1cImN1cnJlbnRXb3JrZmxvd1wiPlxuICAgICAgICAgICAgICAgICAgPCEtLSB7e2N1cnJlbnRXb3JrZmxvdyB8IGpzb259fSAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yIHZ4LW1yLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHQgbm8td2lkdGhcIiBbYXBwVG9vbHRpcF09XCJjdXJyZW50V29ya2Zsb3c/LndvcmtmbG93TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZmxvd1R5cGUgPT09ICdBQ1RXJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICc8c3Ryb25nPkNhc2UgUmVwb3J0ZWQgQnk6IDwvc3Ryb25nPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBvcnRCeSB8IHVzZXJQaXBlIDogdXNlckxpc3QpPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRXb3JrZmxvdz8ud29ya2Zsb3dOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiPnt7Y3VycmVudFdvcmtmbG93Py53b3JrZmxvd05hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImVkaXRXb3JrZmxvdygpXCIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAhd29ya2Zsb3dMaXN0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgb3BlbmVkRnJvbSAhPSAnQVNTRVNTTUVOVCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1xuICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0NBUFInICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCdXNpbmVzc0N5Y2xlICYmXG4gICAgICAgICAgICAgICAgICAgICFwcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmFtLWJ1c2luZXNzLWN5Y2xlIHZ4LWZzLTExIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMSB2eC1wbC0yIHZ4LXByLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtbXItMVwiPiYjeGU5NjM7PC9pPiBUaGlzIHByb2dyYW0gaXNcbiAgICAgICAgICAgICAgICAgIGJlaW5nIHNldC11cCBmb3IgdGhlIGJ1c2luZXNzIGN5Y2xlOlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mdy02MDAgdngtbWwtMVwiPnt7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCdXNpbmVzc0N5Y2xlXG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSA8YXBwLWNyZWF0ZS1kb2N1bWVudHM+PC9hcHAtY3JlYXRlLWRvY3VtZW50cz4gLS0+XG4gICAgICAgIDwhLS0gPGFwcC1idWxrLXZpZXc+PC9hcHAtYnVsay12aWV3PiAtLT5cbiAgICAgICAgPCEtLSA8YXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz48L2FwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXc+IC0tPlxuICAgICAgICA8YXBwLXdvcmtmbG93LWNvbXBsaWFuY2UgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCJcbiAgICAgICAgICBbaXNFbnRydXN0XT1cImVudHJ1c3RCdXR0b25OYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2VudHJ1c3QnXCIgW3Jlc3BvbnNpYmlsaXR5SWRdPVwiaWRcIiBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgICBbZnJhbWV3b3JrRGV0YWlsc109XCJmcmFtZXdvcmtEZXRhaWxzXCIgW2Fzc2Vzc21lbnREZXRhaWxzXT1cImFzc2Vzc21lbnREZXRhaWxzXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NBUidcIiAjcmVzcG9uc2liaWxpdHlcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucygkZXZlbnQpXCIgW3NlbGVjdGVkUkNdPVwic2VsZWN0ZWRSQ1wiXG4gICAgICAgICAgW2Nsb3NlT25Fc2NdPVwiY2xvc2VPbkVzY1wiIChhc3NpZ25lZVR5cGVDaGFuZ2UpPVwiYXNzaWduZWVUeXBlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChvblJldmlld2VyVHlwZUNoYW5nZSk9XCJvblJldmlld2VyQ2hhbmdlKCRldmVudClcIiBbZmVhdHVyZV09XCJmZWF0dXJlXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgKHJjU2VsZWN0ZWQpPVwib25SY1NlbGVjdGVkKCRldmVudClcIiAocmVzZXRGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgIChvblJlbW92aW5nQ2hlY2twb2ludCk9XCJvblJlbW92aW5nQ2hlY2twb2ludCgkZXZlbnQsIGZhbHNlLCB0cnVlKVwiXG4gICAgICAgICAgKGlzQXNzZXNzbWVudERpc2FibGVkKT1cImlzQXNzZXNzbWVudERpc2FibGVkKCRldmVudClcIiAoY2hlY2twb2ludENvdW50VXBkYXRlZCk9XCJjaGVja3BvaW50Q291bnQgPSAkZXZlbnRcIlxuICAgICAgICAgIFtzZWxlY3RlZFByb2dyYW1dPVwic2VsZWN0ZWRQcm9ncmFtXCIgW3Jlc3BvbnNpYmlsaXR5RGV0YWlsc109XCJ3b3JrZmxvd0RldGFpbHNcIlxuICAgICAgICAgIFtjdXN0b21GaWVsZHNdPVwiY3VzdG9tRmllbGRzXCI+PC9hcHAtd29ya2Zsb3ctY29tcGxpYW5jZT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1yaXNrIFtzZWNvbmRhcnlPcGVuUG9ydGFsXT1cInNlY29uZGFyeU9wZW5Qb3J0YWxcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiICpuZ1N3aXRjaENhc2U9XCInQUFSJ1wiICNyaXNrXG4gICAgICAgICAgKHNob3dDb25maXJtYXRpb25BbGVydCk9XCJzaG93Q29uZmlybWF0aW9uUG9wdXAoJGV2ZW50KVwiXG4gICAgICAgICAgKGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyk9XCJoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCIgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCIgKHJlZnJlc2hGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgIChyY1NlbGVjdGVkKT1cIm9uUmNTZWxlY3RlZCgkZXZlbnQpXCIgW21vZGVdPVwibW9kZVwiIFtyaXNrSWRdPVwiaWRcIiBbZmVhdHVyZV09XCJmZWF0dXJlXCI+PC9hcHAtd29ya2Zsb3ctcmlzaz5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1wb2xpY3kgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NBUCdcIiAjcG9saWN5XG4gICAgICAgICAgKHNob3dDb25maXJtYXRpb25BbGVydCk9XCJzaG93Q29uZmlybWF0aW9uUG9wdXAoJGV2ZW50KVwiIChzaGlmdFRvRWRpdE1vZGUpPVwic2hpZnRUb0VkaXRNb2RlKClcIlxuICAgICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmVcIiBbcG9saWN5SWRdPVwiaWRcIiBbbW9kZV09XCJtb2RlXCIgW3RlbXBsYXRlSWRdPVwidGVtcGxhdGVJZFwiXG4gICAgICAgICAgW2NvbnZlcnRGaWxlRGF0YV09XCJjb252ZXJ0RmlsZURhdGFcIiBbc2VsZWN0ZWRDYXRlZ29yeV09XCJzZWxlY3RlZENhdGVnb3J5XCJcbiAgICAgICAgICBbaXNTZW5kRm9yQXR0ZXN0YXRpb25dPVwiaXNTZW5kRm9yQXR0ZXN0YXRpb25cIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIj48L2FwcC13b3JrZmxvdy1wb2xpY3k+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctc3VydmV5LWZvcm0gKm5nU3dpdGNoQ2FzZT1cIidDQVMnXCIgI3N1cnZleUZvcm0+PC9hcHAtd29ya2Zsb3ctc3VydmV5LWZvcm0+XG4gICAgICAgIDxhcHAtYWRkLW11bHRpcGxlLXJpc2sgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FNUidcIiAjbXVsdGlwbGVSaXNrXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvYXBwLWFkZC1tdWx0aXBsZS1yaXNrPlxuICAgICAgICA8IS0tIDxhcHAtYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5ICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiICpuZ1N3aXRjaENhc2U9XCInQ01SJ1wiICNtdWx0aXBsZVJlc3BvbnNpYmlsaXR5PlxuICAgICAgICAgICAgICAgIDwvYXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eT4gLS0+XG5cbiAgICAgICAgPGxpYi1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NNUidcIiBbZmVhdHVyZV09XCJmZWF0dXJlXCIgI211bHRpcGxlUmVzcG9uc2liaWxpdHk+PC9saWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSBOZXcgTG9nIGFuIElzc3VlIC0tPlxuICAgICAgICA8YXBwLWxvZy1hbi1pc3N1ZSBbaXNzdWVEZXRhaWxzXT1cImlzc3VlRGF0YVwiICpuZ1N3aXRjaENhc2U9XCInTEFJJ1wiIFtyZXBvbnNpYmlsaXR5RGF0YV09XCJyZXBvbnNpYmlsaXR5RGF0YVwiXG4gICAgICAgICAgW2Fzc2Vzc21lbnRRdWVzdGlvbl09XCJhc3Nlc3NtZW50UXVlc3Rpb25cIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgW3NvdXJjZV09XCJzb3VyY2VcIiBbaXNzdWVJZF09XCJpZFwiXG4gICAgICAgICAgI2xvZ0FuSXNzdWUgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIiBbKG1vZGUpXT1cIm1vZGVcIj5cbiAgICAgICAgPC9hcHAtbG9nLWFuLWlzc3VlPlxuICAgICAgICA8IS0tIE9sZCBMb2cgYW4gaXNzdWUgLS0+XG4gICAgICAgIDwhLS0gPGFwcC1sb2ctYW4taXNzdWUgKm5nU3dpdGNoQ2FzZT1cIidMQUknXCIgW3Jlc3BvbnNpYmlsaXRpZXNEYXRhXT1cInJlcG9uc2liaWx0eURhdGFcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICAgICAgICAjbG9nQW5Jc3N1ZSAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvYXBwLWxvZy1hbi1pc3N1ZT4gLS0+XG5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1hc3Nlc3NtZW50IFthc3Nlc3NtZW50SWRdPVwiaWRcIiAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FBQSdcIlxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIiAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChyZWZyZXNoRm9ybSk9XCJvblJlc2V0Rm9ybSgpXCIgW21vZGVdPVwibW9kZVwiICNhc3Nlc3NtZW50PjwvYXBwLXdvcmtmbG93LWFzc2Vzc21lbnQ+XG4gICAgICAgIDxhcHAtaW1wb3J0LWFuLWFzc2Vzc21lbnQgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0lBQSdcIlxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIiAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChyZWZyZXNoRm9ybSk9XCJvblJlc2V0Rm9ybSgpXCIgI2ltcG9ydEFzc2Vzc21lbnQ+PC9hcHAtaW1wb3J0LWFuLWFzc2Vzc21lbnQ+XG4gICAgICAgIDwhLS0gPGFwcC13b3JrZmxvdy1wcm9ncmFtICNwcm9ncmFtICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIiAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIj48L2FwcC13b3JrZmxvdy1wcm9ncmFtPiAtLT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1wcm9ncmFtICNwcm9ncmFtICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIiBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCIgW2FsbG93ZWRGZWF0dXJlXT1cImZlYXR1cmVcIlxuICAgICAgICAgIChkaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiZGlzYWJsZU1vcmVPcHRpb25zKCdDQVBSJywgJGV2ZW50KVwiIFtwcm9ncmFtVHlwZV09XCJwcm9ncmFtVHlwZVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocmVmcmVzaEZvcm0pPVwib25SZXNldEZvcm0oKVwiIFttb2RlXT1cIm1vZGVcIiBbcHJvZ3JhbUlkXT1cImlkXCIgW3Byb2dyYW1EZXRhaWxzXT1cIndvcmtmbG93RGV0YWlsc1wiXG4gICAgICAgICAgKG9uUmVtb3ZpbmdSb2xlKT1cIm9uUmVtb3ZpbmdSb2xlKCRldmVudClcIiBbY2FuRnJhbWV3b3JrQ2hhbmdlXT1cImNhbkZyYW1ld29ya0NoYW5nZVwiXG4gICAgICAgICAgW2FkZFRvUHJvZ3JhbURldGFpbHNdPVwiYWRkVG9Qcm9ncmFtRGV0YWlsc1wiPjwvYXBwLXdvcmtmbG93LXByb2dyYW0+XG5cbiAgICAgICAgPCEtLSBHUkMgT2JqZWN0IC0tPlxuICAgICAgICA8bGliLWdyYy1vYmplY3QtY29udGFpbmVyICNncmNPYmplY3QgKm5nU3dpdGNoQ2FzZT1cIidHUkMnXCIgW2dyY1R5cGVdPVwiZ3JjVHlwZVwiIFtNT0RFXT1cIm1vZGVcIiBbSURdPVwiaWRcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiIChyZXNldEZvcm0pPVwib25SZXNldEdSQ0Zvcm0oKVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgIChoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKCRldmVudClcIj48L2xpYi1ncmMtb2JqZWN0LWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFJlcG9ydCBhIENhc2UgLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctY2FzZSAqbmdTd2l0Y2hDYXNlPVwiJ1JBQydcIiAjcmVwb3J0Q2FzZSBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgW3NvdXJjZV09XCJzb3VyY2VcIiBbY2FzZUlkXT1cImlkXCJcbiAgICAgICAgICBbbW9kZV09XCJtb2RlXCIgW3Jlc3BvbnNpYmlsaXR5RGF0YV09XCJyZXBvbnNpYmlsaXR5RGF0YVwiIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCJcbiAgICAgICAgICBbY2FzZVR5cGVQZXJtaXNzaW9uXT1cImNhc2VUeXBlUGVybWlzc2lvblwiIFt3b3JrZmxvd1R5cGVdPVwiJ1JBQydcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIj48L2FwcC13b3JrZmxvdy1jYXNlPlxuICAgICAgICA8IS0tIEFzc2lnbiBjYXNlIHRvIHdvcmtmbG93IC0tPlxuICAgICAgICA8YXBwLXdvcmtmbG93LWNhc2UgKm5nU3dpdGNoQ2FzZT1cIidBQ1RXJ1wiICNyZXBvcnRDYXNlIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIiBbc291cmNlXT1cInNvdXJjZVwiIFtjYXNlSWRdPVwiaWRcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIiBbd29ya2Zsb3dUeXBlXT1cIidBQ1RXJ1wiIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIlxuICAgICAgICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCIgW2Nhc2VUeXBlUGVybWlzc2lvbl09XCJjYXNlVHlwZVBlcm1pc3Npb25cIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2FzZVJlcG9ydGVkQnkpPVwiY2FzZVJlcG9ydGVkQnkoJGV2ZW50KVwiICh1c2VyTGlzdEVtaXR0ZXIpPVwidXNlckxpc3RFbWl0dGVyKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiPjwvYXBwLXdvcmtmbG93LWNhc2U+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJbJ1JBQycsICdBQ1RXJ10uaW5jbHVkZXMoY3VycmVudFdvcmtmbG93Py5jb2RlKVwiIGNsYXNzPVwidngtZC1mbGV4XCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgpXCI+XG4gICAgICAgICAgQ0FOQ0VMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICBtb2RlID09PSBcIkVESVRcIiAmJiBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09IFwiUkFDXCJcbiAgICAgICAgICA/IFwiVXBkYXRlXCJcbiAgICAgICAgICA6IFwiUmVwb3J0XCJcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiICpuZ1N3aXRjaENhc2U9XCInQUFSJ1wiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICB7e1xuICAgICAgICBtb2RlID09PSBcIkVESVRcIiAmJiBvcGVuZWRGcm9tICE9PSBcIk1PVkVfVE9fUkVHSVNURVJcIlxuICAgICAgICA/IFwiVXBkYXRlXCJcbiAgICAgICAgOiBcIkFkZFwiXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgfHxcbiAgICAgICAgICAhcmlza0J1bGtVcGxvYWQ/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XG4gICAgICAgIFwiIChjbGljayk9XCJidWxrVXBsb2FkQnJvd3NlKCdBTVInKVwiICpuZ1N3aXRjaENhc2U9XCInQU1SJ1wiPlxuICAgICAgICBCcm93c2VcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiIChjbGljayk9XCJidWxrVXBsb2FkQnJvd3NlKCdDTVInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ01SJ1wiPlxuICAgICAgICBCcm93c2VcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIFRoaXMgaGFzIHRlcm5hcnkgb3BlcmF0aW9uIHRvIGhhbmRsZSB0aGUgYm90aCBzY2VuYXJpb3Mgb2YgaG93IGl0IHdvcmtzIHdpdGggY29tcGxpYW5jZSBhbmQgcHJvZ3JhbSBtb2R1bGUsIHBsZWFzZSBkb24ndCBjaGFuZ2UgdGhpcy4gLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCIgKm5nU3dpdGNoQ2FzZT1cIidDQVInXCI+XG4gICAgICAgIHt7XG4gICAgICAgIGVudHJ1c3RCdXR0b25OYW1lICE9PSBcIlwiICYmIG1vZGUgIT09IFwiRURJVFwiXG4gICAgICAgID8gZW50cnVzdEJ1dHRvbk5hbWVcbiAgICAgICAgOiBtb2RlID09PSBcIkVESVRcIiAmJiAhd29ya2Zsb3dEZXRhaWxzPy5kdXBsaWNhdGVcbiAgICAgICAgPyBcIlVQREFURVwiXG4gICAgICAgIDogXCJFbnRydXN0XCJcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ1N3aXRjaENhc2U9XCInQ0FQJ1wiPlxuICAgICAgICB7e1xuICAgICAgICBtb2RlID09IFwiRURJVFwiXG4gICAgICAgID8gaXNTZW5kRm9yQXR0ZXN0YXRpb25cbiAgICAgICAgPyBcIlNlbmQgZm9yIGF0dGVzdGF0aW9uXCJcbiAgICAgICAgOiBcIlVwZGF0ZVwiXG4gICAgICAgIDogXCJDb250aW51ZSB0byBkcmFmdFwiXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NBUydcIj5cbiAgICAgICAgQ29udGludWUgdG8gZHJhZnRcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiICpuZ1N3aXRjaENhc2U9XCInTEFJJ1wiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIkFkZFwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FBQSdcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJDb250aW51ZSB0byBkcmFmdFwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAoY2xpY2spPVwiYnVsa1VwbG9hZEJyb3dzZSgnSUFBJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0lBQSdcIj5cbiAgICAgICAgQnJvd3NlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgfHwgIXByb2dyYW0/LnZhbGlkXCIgKGNsaWNrKT1cInN1Ym1pdCgnQ0FQUicpXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDQVBSJ1wiPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIlNhdmVcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8ICFwcm9ncmFtPy52YWxpZFwiIChjbGljayk9XCJzdWJtaXQoJ0NBUFInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJTYXZlXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ1N3aXRjaENhc2U9XCInR1JDJ1wiPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIlNhdmVcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cIndvcmtmbG93TGlzdFwiIChjbGljayk9XCJjbG9zZVdvcmtmbG93TGlzdCgpXCIgW3N0eWxlLnRvcC5weF09XCJkcm9wZG93blRvcFwiXG4gICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImRyb3Bkb3duTGVmdFwiIFtzdHlsZS53aWR0aC5weF09XCJkcm9wZG93bldpZHRoXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLWxpc3RcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHdvcmtmbG93IG9mIHdvcmtmbG93VHlwZUxpc3RcIiAoY2xpY2spPVwiY2hhbmdlV29ya2Zsb3coJGV2ZW50LCB3b3JrZmxvdylcIj5cbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gKm5nSWY9XCJ3b3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXCIgW3ZhbHVlXT1cIndvcmtmbG93Py5jb2RlXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudFdvcmtmbG93Py5jb2RlID09PSB3b3JrZmxvdz8uY29kZVwiPlxuICAgICAgICAgICAgICB7eyB3b3JrZmxvdz8ud29ya2Zsb3dOYW1lIH19PC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW92ZXJsYXlcIiAqbmdJZj1cIndvcmtmbG93TGlzdFwiIChjbGljayk9XCJjbG9zZVdvcmtmbG93TGlzdCgpXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1jb25maXJtYXRpb24tYWxlcnQgaWQ9XCJjb25maXJtYXRpb24tZGlhbG9ndWVcIiAoYWN0aW9uKT1cImNvbmZpcm1Xb3JrZmxvd0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICpuZ0lmPVwiY29uZmlybWF0aW9uQWxlcnRDb25maWc/LmlzVmlzaWJsZVwiIFttZXNzYWdlXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5tZXNzYWdlXCJcbiAgICAgIFtjb25maWddPVwiY29uZmlybWF0aW9uQWxlcnRDb25maWdcIj48L2FwcC1jb25maXJtYXRpb24tYWxlcnQ+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
858
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzdELE1BQU0sT0FBTyxnQ0FBZ0M7SUFRM0MsWUFDUyxZQUEwQixFQUN6QixRQUF5QixFQUMxQixJQUFpQixFQUNoQixnQkFBMkMsRUFDM0Msa0JBQXNDLEVBQ3RDLDJCQUF3RCxFQUN4RCxhQUE0QixFQUM1QixxQkFBNEM7UUFQN0MsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBQzNDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QiwwQkFBcUIs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QUc1Qyx3QkFBd0I7c0JBRHZCLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUd0RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVGLFVBQVU7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDbkIsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUN3QixXQUFXO3NCQUF2RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3RCLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDTSxpQkFBaUI7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWTtnQkFFdkIsMkJBQTJCO3NCQUQxQixTQUFTO3VCQUFDLFlBQVk7Z0JBR3ZCLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRVAsT0FBTztzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUV2QyxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFaEIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQU9kLE9BQU87c0JBQWYsS0FBSztnQkFJK0MsZ0JBQWdCO3NCQUFwRSxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQThUbkQsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIGVmZmVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZGRNdWx0aXBsZVJpc2tDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtbXVsdGlwbGUtcmlzay9hZGQtbXVsdGlwbGUtcmlzay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XG5pbXBvcnQgeyBJc3N1ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lzc3VlLWRhdGEnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0Fzc2Vzc21lbnRDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1hc3Nlc3NtZW50L3dvcmtmbG93LWFzc2Vzc21lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEltcG9ydEFuQXNzZXNzbWVudENvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93LWFzc2Vzc21lbnQvaW1wb3J0LWFuLWFzc2Vzc21lbnQvaW1wb3J0LWFuLWFzc2Vzc21lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFdvcmtmbG93Q29tcGxpYW5jZUNvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93LWNvbXBsaWFuY2Uvd29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dQb2xpY3lDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1wb2xpY3kvd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd1Jpc2tDb21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1yaXNrL3dvcmtmbG93LXJpc2suY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ0FuSXNzdWVDb21wb25lbnQgfSBmcm9tICcuLy4uL2xvZy1hbi1pc3N1ZS9sb2ctYW4taXNzdWUuY29tcG9uZW50JztcbmltcG9ydCB7IE1vcmVPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLy4uL21vcmUtb3B0aW9uL21vcmUtb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd1Byb2dyYW1Db21wb25lbnQgfSBmcm9tICcuLi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50JztcbmltcG9ydCB7IEdyY09iamVjdENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL3dvcmtmbG93L2dyYy1vYmplY3QvZ3JjLW9iamVjdC1jb250YWluZXIvZ3JjLW9iamVjdC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVwb3J0QUNhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vcmVwb3J0LWEtY2FzZS9zZXJ2aWNlcy9yZXBvcnQtYS1jYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dDYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVwb3J0LWEtY2FzZS93b3JrZmxvdy1jYXNlL3dvcmtmbG93LWNhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlcG9ydC1jYXNlLXBlcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9zdE1lc3NhZ2VFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWZyYW1lLXR5cGUnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdmNvbXBseS13b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWVuZ2luZS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dFbmdpbmVDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBpc0hvc3RSZWZyZXNoQWN0aXZlID0gdHJ1ZTtcbiAgaXNSQ1NlbGVjdGVkID0gZmFsc2U7XG4gIGZlYXR1cmVGbGFnX2dyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xuICBhZGRUb0Nhc2VNb2RlID0gJyc7XG5cbiAgcGVybWlzc2lvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgcHVibGljIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnQ29tbW9uU2VydmljZTogT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlcG9ydEFDYXNlU2VydmljZTogUmVwb3J0QUNhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlOiBSZXBvcnRDYXNlUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZnJhbWVTZXJ2aWNlOiBJZnJhbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jaGVja0N1cnJlbnRXb3JrZmxvdygpO1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLmNhc2VUeXBlTG9hZGVyLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jaGVja1Blcm1pc3Npb24oKTtcbiAgfVxuICBASW5wdXQoKSB3b3JrZmxvd1R5cGUgPSAnJztcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSBvcGVuZWRGcm9tID0gJ0dMT0JBTCc7XG4gIEBJbnB1dCgpIHNvdXJjZTogJ1NBUCcgfCAnV09SS1JPT00nIHwgJycgPSAnJztcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGFsbG93ZWRXb3JrZmxvd3M6IGFueSA9IFtdO1xuICBASW5wdXQoKSBmcmFtZXdvcmtEZXRhaWxzOiBBcnJheTxhbnk+ID0gW107IC8vIG9ubHkgZm9yIGNvbXBsaWFuY2UgcGFydCBmb3IgZnJhbWV3b3JrXG4gIEBJbnB1dCgpIHNlbGVjdGVkUkMgPSAnJztcbiAgQElucHV0KCkgc2Vjb25kYXJ5T3BlblBvcnRhbCA9ICcnO1xuICBASW5wdXQoKSBkZWZhdWx0Umlza1R5cGUgPSAnTk9STUFMJztcbiAgQElucHV0KCkgbW92ZVRvUmVnaXN0ZXJNb2RlID0gJyc7XG4gIEBJbnB1dCgpIHdvcmtmbG93RGV0YWlsczogYW55O1xuICBASW5wdXQoKSByZXBvbnNpYmlsaXR5RGF0YSA9IHtcbiAgICAvLyBvbmx5IHVzZWQgYnkgbG9nIGFuIGlzc3VlXG4gICAgcmlkOiBudWxsLFxuICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogJycsXG4gICAgcmNJZDogbnVsbCxcbiAgICBkdWVEYXRlSWQ6ICcnLFxuICB9O1xuICBASW5wdXQoKSBhc3Nlc3NtZW50UXVlc3Rpb246IGFueSA9IHtcbiAgICBxdWVzdGlvbk5hbWU6ICcnLFxuICAgIHF1ZXN0aW9uTnVtYmVyOiAnJyxcbiAgICBxdWVzdGlvbklkOiAnJyxcbiAgICBhc3Nlc3NtZW50SWQ6ICcnLFxuICAgIGF1ZGl0ZWVJZDogbnVsbCxcbiAgfTtcbiAgQElucHV0KCkgcGlkID0gJyc7XG4gIEBJbnB1dCgpIHByb2dyYW1UeXBlOiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBpc3N1ZURhdGEgPSB7XG4gICAgYXVkaXRQbGFuSWQ6IG51bGwsXG4gICAgYXVkaXRQbGFuTmFtZTogJycsXG4gICAgcmNJZDogbnVsbCxcbiAgfTtcbiAgQElucHV0KCkgZW50cnVzdEJ1dHRvbk5hbWUgPSAnRW50cnVzdCc7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IElzc3VlQ29uZmlndXJhdGlvbjtcbiAgQElucHV0KCkgY29udmVydEZpbGVEYXRhID0ge307XG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2F0ZWdvcnkgPSAnJztcblxuICBASW5wdXQoKSBzZWxlY3RlZFByb2dyYW06IGFueSA9IG51bGw7XG4gIEBJbnB1dCgpIGNhbkZyYW1ld29ya0NoYW5nZTogYm9vbGVhbiA9IHRydWU7IC8vIGlmIGZyYW1ld29yayBjYW4gRWRpdGVkIG9yIG5vdDsgRm9yIENyZWF0ZSBhIHByb2dyYW1cbiAgQElucHV0KCkgLyogICovXG4gIC8qICAqL1xuICBASW5wdXQoKVxuICBhZGRUb1Byb2dyYW1EZXRhaWxzOiB7XG4gICAgX2lkOiBzdHJpbmc7XG4gICAgZnJhbWV3b3JrX25hbWU6IHN0cmluZztcbiAgICBpZD86IG51bWJlcjtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgfSA9IHtcbiAgICBfaWQ6ICcnLFxuICAgIGZyYW1ld29ya19uYW1lOiAnJyxcbiAgICBpZDogMCxcbiAgICB0eXBlOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gIH07XG4gIEBJbnB1dCgpIGdyY1R5cGU6IDAgfCAxIHwgMiB8IDMgPSAwO1xuICBASW5wdXQoKSBpc1NlbmRGb3JBdHRlc3RhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhc3Nlc3NtZW50RGV0YWlsczogYW55O1xuICBASW5wdXQoKSB0ZW1wbGF0ZUlkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3VzdG9tRmllbGRzOiBhbnlbXSA9IFtdO1xuXG4gIG9yZ0RldGFpbHM6IGFueTtcbiAgcHJvZ3JhbVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZnlGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIGNhc2VGZWF0dXJlRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGFuaW1hdGlvbiA9IHRydWU7XG4gIHdvcmtmbG93TGlzdCA9IGZhbHNlO1xuICBzaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gIGlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICBkaXNhYmxlV29ya2Zsb3dDaGFuZ2UhOiBib29sZWFuO1xuICBjaGVja3BvaW50Q291bnQ6IG51bWJlciA9IDA7XG4gIHJlcG9ydEJ5OiBzdHJpbmcgPSAnJztcbiAgY3VycmVudEJ1c2luZXNzQ3ljbGU6IGFueSA9ICcnO1xuICBjYXNlVHlwZVBlcm1pc3Npb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgncmlzaycsIHsgc3RhdGljOiBmYWxzZSB9KSByaXNrQ29tcG9uZW50ITogV29ya2Zsb3dSaXNrQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtdWx0aXBsZVJpc2snLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcmlza0J1bGtVcGxvYWQhOiBBZGRNdWx0aXBsZVJpc2tDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ211bHRpcGxlUmVzcG9uc2liaWxpdHknLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkITogQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdyZXNwb25zaWJpbGl0eScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjb21wbGlhbmNlITogV29ya2Zsb3dDb21wbGlhbmNlQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtb3JlT3B0aW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1vcmVPcHRpb24hOiBNb3JlT3B0aW9uQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25Sb3cnLCB7IHN0YXRpYzogZmFsc2UgfSkgZHJvcGRvd25Sb3chOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwb2xpY3knKSBwb2xpY3khOiBXb3JrZmxvd1BvbGljeUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbG9nQW5Jc3N1ZScpIGxvZ0lzc3VlQ29tcG9uZW50ITogTG9nQW5Jc3N1ZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnYXNzZXNzbWVudCcpXG4gIHdvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudCE6IFdvcmtmbG93QXNzZXNzbWVudENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnaW1wb3J0QXNzZXNzbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBpbXBvcnRBbkFzc2Vzc21lbnQhOiBJbXBvcnRBbkFzc2Vzc21lbnRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3Byb2dyYW0nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJvZ3JhbSE6IFdvcmtmbG93UHJvZ3JhbUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JjT2JqZWN0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGdyY09iamVjdCE6IEdyY09iamVjdENvbnRhaW5lckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgncmVwb3J0Q2FzZScpIHJlcG9ydENhc2UhOiBXb3JrZmxvd0Nhc2VDb21wb25lbnQ7XG5cbiAgZHJvcGRvd25MZWZ0ITogYW55O1xuICBkcm9wZG93blRvcCE6IGFueTtcbiAgZHJvcGRvd25XaWR0aCE6IGFueTtcbiAgY2xvc2VPbkVzYzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBmZWF0dXJlIGZsYWdcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBvcmdhbml6YXRpb25EZXRhaWxzOiBhbnk7XG4gIHNlbGVjdGVkQXNzZXNzbWVudDogYW55O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihcbiAgICBldmVudDogS2V5Ym9hcmRFdmVudFxuICApIHtcbiAgICBpZiAoXG4gICAgICBbXG4gICAgICAgIHRoaXMucmlza0NvbXBvbmVudD8uc2hvd1NtaWxleSxcbiAgICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZD8uc2hvd1NtaWxleSxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMuY29tcGxpYW5jZT8uc2hvd1NtaWxleSxcbiAgICAgICAgdGhpcy5pbXBvcnRBbkFzc2Vzc21lbnQ/LnNob3dTbWlsZXksXG4gICAgICAgIHRoaXMubG9nSXNzdWVDb21wb25lbnQ/LnNob3dTbWlsZXksXG4gICAgICBdLmluY2x1ZGVzKHRydWUpIHx8XG4gICAgICB0aGlzLnByb2dyYW0/LmFjdGl2ZUxpc3QgfHxcbiAgICAgIHRoaXMuY29tcGxpYW5jZT8uYWN0aXZlU2VsZWN0b3IgfHxcbiAgICAgIHRoaXMuZ3JjT2JqZWN0Py5vcGVuZWRQb3B1cFxuICAgICkge1xuICAgICAgLy9EbyBOb3RoaW5nXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2VXb3JrZmxvd0VuZ2luZSgpO1xuICAgIH1cbiAgfVxuXG4gIHVzZXJMaXN0OiBhbnkgPSBbXTtcbiAgY3VycmVudFdvcmtmbG93ITogYW55O1xuICB3b3JrZmxvd1R5cGVMaXN0OiBhbnkgPSBbXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGEgUmVzcG9uc2liaWxpdHknLFxuICAgICAgY29kZTogJ0NBUicsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1JFU1BPTlNJQklMSVRZJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0NyZWF0ZSBNdWx0aXBsZSBSZXNwb25zaWJpbGl0aWVzJyxcbiAgICAgIGNvZGU6ICdDTVInLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdNVUxUSVBMRV9SRVNQT05TSUJJTElUWScsXG4gICAgfSxcbiAgICB7IHdvcmtmbG93TmFtZTogJ0FkZCBhIFJpc2snLCBjb2RlOiAnQUFSJywgcGVybWlzc2lvbklkZW50aWZpZXI6ICdSSVNLJyB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0FkZCBNdWx0aXBsZSBSaXNrcycsXG4gICAgICBjb2RlOiAnQU1SJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnTVVMVElQTEVfUklTSycsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgYSBQb2xpY3knLFxuICAgICAgY29kZTogJ0NBUCcsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1BPTElDWScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgYSBTdXJ2ZXknLFxuICAgICAgY29kZTogJ0NBUycsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1NVUlZFWScsXG4gICAgfSxcbiAgICB7XG4gICAgICB3b3JrZmxvd05hbWU6ICdDcmVhdGUgYSBGb3JtJyxcbiAgICAgIGNvZGU6ICdDQUYnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdGT1JNJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0xvZyBhbiBJc3N1ZScsXG4gICAgICBjb2RlOiAnTEFJJyxcbiAgICAgIHBlcm1pc3Npb25JZGVudGlmaWVyOiAnSVNTVUUnLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQ3JlYXRlIGFuIEFzc2Vzc21lbnQnLFxuICAgICAgY29kZTogJ0FBQScsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ0FTU0VTU01FTlQnLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnSW1wb3J0IGFuIEFzc2Vzc21lbnQnLFxuICAgICAgY29kZTogJ0lBQScsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ0lNUE9SVF9BU1NFU1NNRU5UJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0FkZCBhIFByb2dyYW0nLFxuICAgICAgY29kZTogJ0NBUFInLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdQUk9HUkFNJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ0FkZCBhIEdSQyBPYmplY3QnLFxuICAgICAgY29kZTogJ0dSQycsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ0dSQ19PQkpFQ1RTJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ1JlcG9ydCBhIENhc2UnLFxuICAgICAgY29kZTogJ1JBQycsXG4gICAgICBwZXJtaXNzaW9uSWRlbnRpZmllcjogJ1JFUE9SVF9BX0NBU0UnLFxuICAgIH0sXG4gICAge1xuICAgICAgd29ya2Zsb3dOYW1lOiAnQXNzaWduIGNhc2UgdG8gd29ya2Zsb3cnLFxuICAgICAgY29kZTogJ0FDVFcnLFxuICAgICAgcGVybWlzc2lvbklkZW50aWZpZXI6ICdSRVBPUlRfQV9DQVNFJyxcbiAgICB9LFxuICBdO1xuICBhZGRpdGlvbmFsSW5mb3JtYXRpb25MaXN0ID0gW1xuICAgICdPYmplY3RpdmUnLFxuICAgICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICdSZXNwb25zaWJpbGl0eSBDYXRlZ29yeScsXG4gIF07XG4gIGNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnOiBDb25maXJtYXRpb25BbGVydCA9IHsgaXNWaXNpYmxlOiBmYWxzZSB9O1xuXG4gIGNoZWNrQ3VycmVudFdvcmtmbG93KCkge1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLndvcmtmbG93Q29kZS5zdWJzY3JpYmUoKGNvZGUpID0+IHtcbiAgICAgIGlmIChjb2RlID09PSAnQUNXJyB8fCBjb2RlID09PSAnQUNUVycpIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRkVG9DYXNlTW9kZSA9IGNvZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWRkVG9DYXNlTW9kZSA9ICcnO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGNsb3NlV29ya2Zsb3dFbmdpbmUoZXZ0PzogYW55KSB7XG4gICAgaWYgKGV2dD8uY29uZmlybSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KGV2dCA/IGV2dC5ldnQgOiBldnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybShldnQpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlQ29uZmlybShldnQ6IGFueSkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiAnSWYgeW91IG5hdmlnYXRlIGF3YXksIGFueSB1bnNhdmVkIGNoYW5nZXMgd2lsbCBiZSBsb3N0LicsXG4gICAgICBhY3Rpb246ICdXT1JLRkxPV19DTE9TRScsXG4gICAgICBkYXRhOiBldnQsXG4gICAgfTtcbiAgfVxuICBleGVjdXRlQ2xvc2UoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0LmFjdGlvbiA9PT0gJ1lFUycpIHtcbiAgICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KCk7XG4gICAgfVxuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0TmV0d29ya0xpc3RuZXIoKTtcbiAgICB0aGlzLnNldFdvcmtmbG93KHRoaXMud29ya2Zsb3dUeXBlLCB0aGlzLndvcmtmbG93VHlwZUxpc3QpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCA1MDApO1xuICAgIHRoaXMuc2V0V29ya2Zsb3codGhpcy53b3JrZmxvd1R5cGUsIHRoaXMud29ya2Zsb3dUeXBlTGlzdCk7XG4gICAgdGhpcy5kZWNpZGVWaWV3TW9yZU9wdGlvbigpO1xuICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25EZXRhaWxzKCk7XG4gICAgdGhpcy5nZXRVc2VyRGV0YWlscygpO1xuICAgIHRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3Byb2dyYW1fc2ltcGxpZnknXG4gICAgKTtcbiAgICB0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3Jlc3BvbnNpYmlsaXR5X2dyb3VwcydcbiAgICApO1xuICAgIHRoaXMuY2FzZUZlYXR1cmVGbGFnID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2Nhc2VzX2VuYWJsZWQnKTtcbiAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlTaW1wbGlmeSgpO1xuICAgIHRoaXMuZ2V0QXNzZXNzbWVudERldGFpbHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucGVybWlzc2lvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgY2hlY2tQZXJtaXNzaW9uKCkge1xuICAgIHRoaXMucGVybWlzc2lvblN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLnJlcG9ydENhc2VQZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uLnN1YnNjcmliZShcbiAgICAgICAgKGhhc1Blcm1pc3Npb24pID0+IHtcbiAgICAgICAgICB0aGlzLmNhc2VUeXBlUGVybWlzc2lvbiA9IGhhc1Blcm1pc3Npb247XG4gICAgICAgICAgaWYgKGhhc1Blcm1pc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZXBvcnRDYXNlUGVybWlzc2lvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5jYXNlVHlwZUxvYWRlci5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHNldE5ldHdvcmtMaXN0bmVyKCkge1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ29mZmxpbmUnLCAoZSkgPT4ge1xuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAnQ29ubmVjdGlvbiBsb3N0ITxicj5DaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGl2aXR5LicsXG4gICAgICAgICdhbGVydCdcbiAgICAgICk7XG4gICAgfSk7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcignb25saW5lJywgKGUpID0+IHtcbiAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcIllvdSdyZSBiYWNrIG9ubGluZSFcIiwgJ3N1Y2Nlc3MnKTtcbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy53b3JrZmxvd1R5cGVMaXN0ID0gdGhpcy53b3JrZmxvd1R5cGVMaXN0LmZpbHRlcigod29ya2Zsb3c6IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWxsb3dlZFdvcmtmbG93cy5pbmNsdWRlcyh3b3JrZmxvdy5wZXJtaXNzaW9uSWRlbnRpZmllcikpIHtcbiAgICAgICAgcmV0dXJuIHdvcmtmbG93O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcpIHtcbiAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLmRpc2FibGVXb3JrZmxvd0NoYW5nZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tSZXBvcnRDYXNlUGVybWlzc2lvbigpIHtcbiAgICBjb25zdCBoYXNQZXJtaXNzaW9uID1cbiAgICAgIHRoaXMucmVwb3J0Q2FzZVBlcm1pc3Npb25TZXJ2aWNlLmNoZWNrUmVwb3J0QUNhc2VQZXJtaXNzaW9uKCk7XG4gICAgaWYgKGhhc1Blcm1pc3Npb24gJiYgdGhpcy5jYXNlRmVhdHVyZUZsYWcpIHtcbiAgICAgIHRoaXMuYWxsb3dlZFdvcmtmbG93cy5wdXNoKCdSRVBPUlRfQV9DQVNFJyk7XG4gICAgICB0aGlzLmFsbG93ZWRXb3JrZmxvd3MgPSB0aGlzLmFsbG93ZWRXb3JrZmxvd3MuZmlsdGVyKFxuICAgICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3cgIT09ICdJU1NVRSdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWxsb3dlZFdvcmtmbG93cyA9IHRoaXMuYWxsb3dlZFdvcmtmbG93cy5maWx0ZXIoXG4gICAgICAgICh3b3JrZmxvdzogYW55KSA9PiB3b3JrZmxvdyAhPT0gJ1JFUE9SVF9BX0NBU0UnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVzZXJMaXN0RW1pdHRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy51c2VyTGlzdCA9IGV2ZW50O1xuICB9XG5cbiAgZGVjaWRlVmlld01vcmVPcHRpb24odHlwZT86IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZSkge1xuICAgICAgdGhpcy5jbG9zZU9uRXNjID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChbJ0NNUicsICdBTVInLCAnQUFBJywgJ0lBQSddLmluY2x1ZGVzKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKSkge1xuICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IGZhbHNlO1xuICAgICAgaWYgKHR5cGUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5hZGRUb0Nhc2VNb2RlID09PSAnQUNXJykge1xuICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLnNldFdvcmtmbG93U2VsZWN0b3IodHlwZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ1JBQycpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0V29ya2Zsb3dTZWxlY3Rvcih0eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLnNob3dNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zaG93TW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBzZXRXb3JrZmxvd1NlbGVjdG9yKHR5cGU/OiBib29sZWFuKXtcbiAgICBpZiAodHlwZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5pc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY2FzZVJlcG9ydGVkQnkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVwb3J0QnkgPSBldmVudDtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZih0aGlzLmFkZFRvQ2FzZU1vZGUgPT09ICdBQ1cnIHx8IHRoaXMuYWRkVG9DYXNlTW9kZSA9PT0gJ0FDVFcnKSB7XG4gICAgICB0aGlzLnJlcG9ydENhc2UuYWRkVG9DYXNlKCk7XG4gICAgICB0aGlzLnN1Ym1pdFdvcmtmbG93KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0FBUic6XG4gICAgICAgIHRoaXMucmlza0NvbXBvbmVudC5zdWJtaXRSaXNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTEFJJzpcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUNvbXBvbmVudC5hZGRJc3N1ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUic6XG4gICAgICAgIHRoaXMuY29tcGxpYW5jZS5zdWJtaXRSZXNwb25zaWJpbGl0eSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUCc6XG4gICAgICAgIHRoaXMucG9saWN5LnN1Ym1pdFBvbGljeSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0FBQSc6XG4gICAgICAgIHRoaXMud29ya2Zsb3dBc3Nlc3NtZW50Q29tcG9uZW50LnN1Ym1pdEFzc2Vzc21lbnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVBSJzoge1xuICAgICAgICB0aGlzLnByb2dyYW0uc2F2ZVByb2dyYW0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdHUkMnOiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmdyY09iamVjdCcsIHRoaXMuZ3JjT2JqZWN0KTtcbiAgICAgICAgdGhpcy5ncmNPYmplY3Quc2F2ZUdSQ09iamVjdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JBQyc6IHtcbiAgICAgICAgdGhpcy5yZXBvcnRDYXNlLnJlcG9ydENhc2UoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBjYXNlICdJQUEnOlxuICAgICAgLy8gICB0aGlzLmltcG9ydEFuQXNzZXNzbWVudC5zdWJtaXRBc3Nlc3NtZW50KCk7XG4gICAgfVxuICAgIHRoaXMuc3VibWl0V29ya2Zsb3coKTtcbiAgfVxuXG4gIHN1Ym1pdFdvcmtmbG93KCkgeyBcbiAgICBjb25zdCBtZXNzYWdlID0ge3R5cGU6J3N1Ym1pdCd9XG4gICAgY29uc3QgdGFyZ2V0T3JpZ2luID0gdGhpcy5nZXRPcmlnaW4oKTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbik7XG4gIH0gXG4gIFxuICBwcml2YXRlIGdldE9yaWdpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICB9XG5cbiAgZWRpdFdvcmtmbG93KCkge1xuICAgIHRoaXMud29ya2Zsb3dMaXN0ID0gIXRoaXMud29ya2Zsb3dMaXN0O1xuICAgIGNvbnN0IGRyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRoaXMuZHJvcGRvd25MZWZ0ID0gZHJvcGRvd24ubGVmdDtcbiAgICB0aGlzLmRyb3Bkb3duVG9wID0gZHJvcGRvd24udG9wICsgZHJvcGRvd24uaGVpZ2h0O1xuICAgIHRoaXMuZHJvcGRvd25XaWR0aCA9IGRyb3Bkb3duLndpZHRoO1xuICB9XG4gIGNsb3NlV29ya2Zsb3dMaXN0KCkge1xuICAgIHRoaXMud29ya2Zsb3dMaXN0ID0gZmFsc2U7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHNpemVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMud29ya2Zsb3dMaXN0ID0gZmFsc2U7XG4gIH1cbiAgY2hhbmdlV29ya2Zsb3coZXZ0OiBhbnksIHNlbGVjdGVkV29ya2Zsb3c6IGFueSkge1xuICAgIGlmIChzZWxlY3RlZFdvcmtmbG93Py5jb2RlID09PSB0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ0lmIHlvdSBjaGFuZ2UgdGhlIHdvcmtmbG93LCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdvdWxkIGJlIGxvc3QuJyxcbiAgICAgIGFjdGlvbjogJ1dPUktGTE9XX0NIQU5HRScsXG4gICAgICBkYXRhOiBzZWxlY3RlZFdvcmtmbG93LFxuICAgIH07XG4gIH1cblxuICBjb25maXJtV29ya2Zsb3dDaGFuZ2UoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0LmFjdGlvbiA9PT0gJ1lFUycpIHtcbiAgICAgIHRoaXMuY2xvc2VPbkVzYyA9IHRydWU7XG4gICAgICBzd2l0Y2ggKGV2dC5wYXlsb2FkLmFjdGlvbikge1xuICAgICAgICBjYXNlICdXT1JLRkxPV19DSEFOR0UnOlxuICAgICAgICAgIHRoaXMuY3VycmVudFdvcmtmbG93ID0gZXZ0Py5wYXlsb2FkPy5kYXRhID8/IG51bGw7XG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93Py5jb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb3JlT3B0aW9uKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5yZXNldEFsbCh0aGlzLmN1cnJlbnRXb3JrZmxvdz8uY29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRlY2lkZVZpZXdNb3JlT3B0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VESVRfUklTSyc6XG4gICAgICAgICAgdGhpcy5yaXNrQ29tcG9uZW50LmNyZWF0ZVJpc2sodGhpcy5yaXNrQ29tcG9uZW50LnJpc2tGb3JtKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUE9MSUNZX1BPUlRBTCc6XG4gICAgICAgICAgdGhpcy5wb2xpY3kuY29uZmlybVBvbGljeVBvcnRhbChldnQuYWN0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnV09SS0ZMT1dfQ0xPU0UnOlxuICAgICAgICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KGV2dD8ucGF5bG9hZD8uZGF0YSk7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuaWZyYW1lU2VydmljZS5nZXRDbG9zZVdlYnZpZXdNZXNzYWdlKFBvc3RNZXNzYWdlRXZlbnQuQ0xPU0VfV0VCVklFVywgJycpO1xuICAgICAgICAgIHRoaXMuaWZyYW1lU2VydmljZS5wb3N0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2hlY2twb2ludCc6XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdC5DQVIuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgfHxcbiAgICAgICAgICAgICAgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UUycpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnJlbW92ZUNoZWNrcG9pbnQoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdST0xFJzpcbiAgICAgICAgICB0aGlzLnByb2dyYW0ucmVtb3ZlKGV2dC5wYXlsb2FkLmRhdGEsICdST0xFJyk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnbmV3LWNoZWNrcG9pbnRzJzpcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbj8uY29kZSA9PT0gJ0FTU0VTU01FTlQnICYmICFldnQucGF5bG9hZC5pc0RhdGFSZW1vdmVkKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb24/LmNvZGUgPT09ICdDSEVDS1BPSU5UUycgJiYgIWV2dC5wYXlsb2FkLmlzRGF0YVJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBldnQucGF5bG9hZC5pc0NoZWNrcG9pbnRDaGVja2VkICYmXG4gICAgICAgICAgICAgIG9wdGlvbj8uY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBvcHRpb24uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVtb3ZlKCduZXctY2hlY2twb2ludHMnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYXNzaWduZWVUeXBlQ2hhbmdlJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2UucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTEwnO1xuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPVxuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlLnNldExpc3QoXG4gICAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgICB0aGlzLmNvbXBsaWFuY2Uub3JpZ2luYWxBc3NpZ25lZSxcbiAgICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVsncmVzcG9uc2liaWxpdHlGb3JtJ11bJ2Fzc2lnbmVlR3JvdXBzJ11bJ2xpc3QnXSA9XG4gICAgICAgICAgICAgIFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzZXF1ZW50aWFsJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FueVJldmlld2VyJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGV2dC5wYXlsb2FkLmFjdGlvbikge1xuICAgICAgICBjYXNlICdQT0xJQ1lfUE9SVEFMJzpcbiAgICAgICAgICB0aGlzLnBvbGljeS5jb25maXJtUG9saWN5UG9ydGFsKGV2dC5hY3Rpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhc3NpZ25lZVR5cGVDaGFuZ2UnOlxuICAgICAgICAgIHRoaXMuY29tcGxpYW5jZS5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cbiAgICAgICAgICAgICdBTllfT05FJztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzZXF1ZW50aWFsJzpcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VbJ3Jlc3BvbnNpYmlsaXR5Rm9ybSddWydyZXZpZXdlcnMnXVtcbiAgICAgICAgICAgICdzZXF1ZW50aWFsV29ya2Zsb3cnXG4gICAgICAgICAgXSA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhbnlSZXZpZXdlcic6XG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlWydyZXNwb25zaWJpbGl0eUZvcm0nXVsncmV2aWV3ZXJzJ11bXG4gICAgICAgICAgICAnc2VxdWVudGlhbFdvcmtmbG93J1xuICAgICAgICAgIF0gPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgYWN0aW9uOiAnJyxcbiAgICAgIGRhdGE6IG51bGwsXG4gICAgfTtcbiAgICByZXR1cm4gZXZ0O1xuICB9XG5cbiAgc2V0V29ya2Zsb3cod29ya0Zsb3dDb2RlOiBhbnksIHdvcmtGbG93TGlzdDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRXb3JrZmxvdyA9IHdvcmtGbG93TGlzdC5maW5kKFxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudD8uY29kZSA9PT0gd29ya0Zsb3dDb2RlXG4gICAgKTtcbiAgICBzZWxlY3RlZFdvcmtmbG93XG4gICAgICA/ICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHNlbGVjdGVkV29ya2Zsb3cpXG4gICAgICA6ICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IG51bGwpO1xuICAgIHJldHVybiBzZWxlY3RlZFdvcmtmbG93O1xuICB9XG5cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHN3aXRjaCAodGhpcy5jdXJyZW50V29ya2Zsb3c/LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0FBUic6XG4gICAgICAgIHRoaXMucmlza0NvbXBvbmVudD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xBSSc6XG4gICAgICAgIHRoaXMubG9nSXNzdWVDb21wb25lbnQ/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSQUMnOlxuICAgICAgY2FzZSAnQUNUVyc6XG4gICAgICAgIHRoaXMucmVwb3J0Q2FzZS5hZGRNb3JlSW5mbyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ0FSJzpcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5hc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICdjb21wbGlhbmNlX2F1ZGl0J1xuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubW9yZU9wdGlvbj8ubW9yZU9wdGlvbnNMaXN0Py5DQVI/LmZpbmRJbmRleChcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jb2RlID09PSAnQVNTRVNTTUVOVCdcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb24ubW9yZU9wdGlvbnNMaXN0LkNBUltpbmRleF0uY2hlY2tlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZT8uYWRkTW9yZUluZm8oXG4gICAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBsaWFuY2U/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDQVAnOlxuICAgICAgICB0aGlzLnBvbGljeT8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBUFInOlxuICAgICAgICB0aGlzLnByb2dyYW0/LmFkZE1vcmVJbmZvKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdHUkMnOlxuICAgICAgICB0aGlzLmdyY09iamVjdD8uYWRkTW9yZUluZm8oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZU1vcmVPcHRpb24oZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm1vcmVPcHRpb24pIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbi5wb3B1bGF0ZShldmVudCk7XG4gICAgfVxuICB9XG4gIGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyhldmVudDogYW55KSB7XG4gICAgdGhpcy5tb3JlT3B0aW9uPy5oaWRlRWxlbWVudHMoZXZlbnQpO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1hdGlvblBvcHVwKGNvbmZpZzogQ29uZmlybWF0aW9uQWxlcnQpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgYnVsa1VwbG9hZEJyb3dzZShldmVudDogYW55KSB7XG4gICAgc3dpdGNoIChldmVudCkge1xuICAgICAgY2FzZSAnQU1SJzpcbiAgICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZC50cmlnZ2VyQnJvd3NlRmlsZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NNUic6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkLnRyaWdnZXJCcm93c2VGaWxlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSUFBJzpcbiAgICAgICAgdGhpcy5pbXBvcnRBbkFzc2Vzc21lbnQudHJpZ2dlckJyb3dzZUZpbGUoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVzZXRGb3JtKCkge1xuICAgIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xuICAgIHRoaXMuZW50cnVzdEJ1dHRvbk5hbWUgPSAnRW50cnVzdCc7XG4gIH1cblxuICBvblJlc2V0R1JDRm9ybSgpIHtcbiAgICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcbiAgfVxuICBzaGlmdFRvRWRpdE1vZGUoKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuICB9XG4gIHNjcm9sbEZvcm0oKSB7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25Sb3c/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy50b3AgPCAzOCkge1xuICAgICAgdGhpcy5kcm9wZG93blJvdz8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5hZGQoJ2hpZGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcm9wZG93blJvdz8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5yZW1vdmUoJ2hpZGUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IHdoaWNoIG1vcmUgb3B0aW9ucyB3ZSBhcmUgcmVtb3ZpbmcuXG4gICAqIEBwYXJhbSBpc0NoZWNrcG9pbnRDaGVja2VkICBpcyB0cnVlIGlmIHZhbHVlIGNoZWNrcG9pbnRzIGlzIHJlbW92ZWQgYnkgY2xpY2tpbmcgb24gbW9yZSBvcHRpb25zXG4gICAqL1xuICBvblJlbW92aW5nQ2hlY2twb2ludChcbiAgICBldmVudDogc3RyaW5nLFxuICAgIGlzQ2hlY2twb2ludENoZWNrZWQ/OiBib29sZWFuLFxuICAgIGlzRGF0YVJlbW92ZWQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGxldCBtc2cgPSAnJztcbiAgICBpZiAoZXZlbnQgPT09ICduZXctY2hlY2twb2ludHMnKSB7XG4gICAgICBtc2cgPVxuICAgICAgICAnSWYgeW91IGNob29zZSB0byByZW1vdmUgdGhlc2UgQ2hlY2twb2ludHMsIHRoZXkgd2lsbCBiZSBkZWxldGVkIGFuZCBjYW5ub3QgYmUgcmVzdG9yZWQuIEhvd2V2ZXIsIHlvdSB3aWxsIHN0aWxsIGJlIGFibGUgdG8gY3JlYXRlIG5ldyBDaGVja3BvaW50cyBvciBsaW5rIGFuIEFzc2Vzc21lbnQuJztcbiAgICB9IGVsc2Uge1xuICAgICAgbXNnID1cbiAgICAgICAgJ0lmIHlvdSBjaG9vc2UgdG8gcmVtb3ZlIHRoZXNlIGNoZWNrcG9pbnRzLCB0aGV5IHdpbGwgYmUgZGVsZXRlZCBhbmQgY2Fubm90IGJlIHJlc3RvcmVkLic7XG4gICAgfVxuICAgIHRoaXMuY29uZmlybWF0aW9uQWxlcnRDb25maWcgPSB7XG4gICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICBtZXNzYWdlOiBtc2csXG4gICAgICBhY3Rpb246IGV2ZW50LFxuICAgICAgZGF0YTogeyB0eXBlOiAncmVzcG9uc2liaWxpdHlDaGVja3BvaW50JyB9LFxuICAgICAgaXNDaGVja3BvaW50Q2hlY2tlZDogaXNDaGVja3BvaW50Q2hlY2tlZCA/PyBmYWxzZSxcbiAgICAgIGlzRGF0YVJlbW92ZWQ6IGlzRGF0YVJlbW92ZWQgPz8gZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIG9uUmVtb3ZpbmdSb2xlKGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbXNnID0gJyc7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBtc2cgPSAnSWYgeW91IGNoYW5nZSB0aGUgcm9sZXMsIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgYWN0aW9uOiAnUk9MRScsXG4gICAgICBkYXRhOiBldmVudCxcbiAgICB9O1xuICB9XG5cbiAgaXNBc3Nlc3NtZW50RGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMubW9yZU9wdGlvbi5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBpZiAob3B0aW9uPy5jb2RlID09PSAnQVNTRVNTTUVOVCcgfHwgb3B0aW9uPy5jb2RlID09PSAnQ0hFQ0tQT0lOVFNfTkVXJykge1xuICAgICAgICBvcHRpb24uaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkaXNhYmxlTW9yZU9wdGlvbnMod29ya2Zsb3dDb2RlOiBhbnksIGRpc2FibGVkRWxlbWVudHNDb2RlOiBhbnkpIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdCkuaW5jbHVkZXMod29ya2Zsb3dDb2RlKSkge1xuICAgICAgdGhpcy5tb3JlT3B0aW9uLm1vcmVPcHRpb25zTGlzdFt3b3JrZmxvd0NvZGVdLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZEVsZW1lbnRzQ29kZS5pbmNsdWRlcyhvcHRpb24/LmNvZGUpKSB7XG4gICAgICAgICAgb3B0aW9uLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrcG9pbnRTZWxlY3Rpb24oZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMuY2hlY2twb2ludENvdW50ID0gZXZlbnQ7XG4gIH1cblxuICBvblJjU2VsZWN0ZWQoaXNSY1NlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1JDU2VsZWN0ZWQgPSBpc1JjU2VsZWN0ZWQ7XG4gIH1cblxuICBmZXRjaE9yZ2FuaXphdGlvbkRldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdDb21tb25TZXJ2aWNlPy5nZXRPcmdEZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMub3JnRGV0YWlscyA9IHJlcztcbiAgICAgICAgaWYgKHJlcz8uYnVzaW5lc3NfY3ljbGVzX2FyciAmJiByZXM/LmJ1c2luZXNzX2N5Y2xlc19hcnI/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcmVzPy5idXNpbmVzc19jeWNsZXNfYXJyLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5zZWxlY3RlZFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgc3BsaXR0ZWQgPSBzZWxlY3RlZFswXS5idXNpbmVzc19jeWNsZT8uc3BsaXQoJy0nKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRCdXNpbmVzc0N5Y2xlID0gYCR7c3BsaXR0ZWRbMF0/LnNsaWNlKFxuICAgICAgICAgICAgMlxuICAgICAgICAgICl9IC0gJHtzcGxpdHRlZFsxXT8uc2xpY2UoNCl9YDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBnZXRVc2VyRGV0YWlscygpIHtcbiAgICB0aGlzLm9yZ0NvbW1vblNlcnZpY2U/LmdldE9yZ1VzZXJJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hdXRoLnVzZXJEZXRhaWxzID0gcmVzO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBvcmdhbml6YXRpb24gdXNlcnMnLCBlcnIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzc2lnbmVlVHlwZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnID0ge1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgJ1RoaXMgYWN0aW9uIHdpbGwgcmVzZXQgdGhlIGNoYW5nZXMgYW5kIGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgYmFjayB0byB0aGUgb3JpZ2luYWwgYXNzaWduZWUuJyxcbiAgICAgIGFjdGlvbjogJ2Fzc2lnbmVlVHlwZUNoYW5nZScsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIGlzUmVkQWxlcnQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGV2ZW50ID0+ICdzZXF1ZW50aWFsJyB8fCAnYW55UmV2aWV3ZXInXG4gIG9uUmV2aWV3ZXJDaGFuZ2UoZXZlbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbW1vblRleHQ6IHN0cmluZyA9XG4gICAgICAnT25jZSBjb25maXJtZWQsIHRoZSBuZXcgcmV2aWV3IHdvcmtmbG93IHdpbGwgYmUgYXBwbGljYWJsZSBmb3IgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSByZXZpZXcgZHVlIGRhdGVzLic7XG4gICAgY29uc3QgbXNnID1cbiAgICAgIGNvbW1vblRleHQgK1xuICAgICAgKGV2ZW50ID09PSAnYW55UmV2aWV3ZXInXG4gICAgICAgID8gYElmIGFueSByZXZpZXdlciBoYWQgY29tcGxldGVkIHRoZSByZXZpZXcsIHRoZSBjdXJyZW50IHJldmlldyBkdWUgZGF0ZSB3aWxsIGJlIGNsb3NlZCBhbmQgdGhlIHJldmlldyBzdGF0dXMgd2lsbCBiZSB1cGRhdGVkIHRvICdDb21wbGV0ZWQnLmBcbiAgICAgICAgOiAnJyk7XG4gICAgdGhpcy5jb25maXJtYXRpb25BbGVydENvbmZpZyA9IHtcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGFjdGlvbjogZXZlbnQsXG4gICAgfTtcbiAgfVxuXG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmeSgpIHtcbiAgICBpZiAodGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Jlc3BvbnNpYmlsaXR5X3NpbXBsaWZpY2F0aW9uJykpIHtcbiAgICAgIHRoaXMud29ya2Zsb3dUeXBlTGlzdFswXS53b3JrZmxvd05hbWUgPSAnQWRkIGEgUmVzcG9uc2liaWxpdHknO1xuICAgICAgdGhpcy53b3JrZmxvd1R5cGVMaXN0WzFdLndvcmtmbG93TmFtZSA9ICdBZGQgTXVsdGlwbGUgUmVzcG9uc2liaWxpdGllcyc7XG4gICAgfVxuICB9XG5cbiAgIC8vIFRPRE86IFBvcHVsYXRlIGFzc2Vzc21lbnQgZGF0YSBmcm9tIGFscmVhZHkgc2VsZWN0ZWQgZGF0YVxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGFzc2Vzc21lbnREZXRhaWxzIDogc2VsZWN0ZWQgYXNzZXNzbWVudCBkZXRhaWxzIGxpa2UgaXQncyBvYmplY3QgaWQgYW5kIGNhdGVnb3J5X2lkXG4gICAqL1xuICBnZXRBc3Nlc3NtZW50RGV0YWlscygpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMud29ya2Zsb3dEZXRhaWxzPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkOyBcbiAgICBpZihpZCAmJiB0aGlzLndvcmtmbG93VHlwZSA9PT0gJ0FTU0VTU01FTlQnKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgIC5nZXRBc3Nlc3NtZW50RGV0YWlsc0J5SUQoaWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldEFzc2Vzc21lbnREYXRhKHJlcyk7XG4gICAgICB9KTtcbiAgfVxufVxuXG4gIHNldEFzc2Vzc21lbnREYXRhKHJlczogYW55KSB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5RGV0YWlscyA9IHJlc1swXS5jYXRlZ29yeVswXVxuICAgICAgICBjb25zdCBhc3Nlc3NtZW50RGF0YSA9IHtcbiAgICAgICAgICBjYXRlZ29yeV9pZDogcmVzWzBdLmNhdGVnb3J5WzBdLl9pZCxcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiByZXNbMF0uYXNzZXNzbWVudF9pZCxcbiAgICAgICAgICBhc3Nlc3NtZW50RGV0YWlsczoge1xuICAgICAgICAgICAgaWQ6IHJlc1swXS5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgYXNzZXNzbWVudF9uYW1lOiByZXNbMF0uYXNzZXNzbWVudF9uYW1lLFxuICAgICAgICAgICAgcXVlc3Rpb25zOiByZXNbMF0ucXVlc3Rpb25zQ291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYXRlZ29yeV9kZXRhaWxzOiBjYXRlZ29yeURldGFpbHMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50ID0gYXNzZXNzbWVudERhdGE7XG4gIFxufVxufVxuIiwiPGFwcC1zbmFjay1iYXI+PC9hcHAtc25hY2stYmFyPlxuPGRpdiBjbGFzcz1cIndvcmtmbG93LWVuZ2luZS1vdmVybGF5XCI+PC9kaXY+XG5cbjxhcHAtYXNzZXNzbWVudC1saXN0ICpuZ0lmPVwid29ya2Zsb3dUeXBlID09PSAnQVNTRVNTTUVOVCdcIiAoY2FuY2VsQXNzZXNzbWVudCk9XCJjbG9zZVdvcmtmbG93RW5naW5lKClcIiBbaXNFZGl0XT1cInRydWVcIlxuICBbaXNGdWxsU2NyZWVuXT1cInRydWVcIiBbc2VsZWN0ZWRBc3Nlc3NtZW50XT1cInNlbGVjdGVkQXNzZXNzbWVudFwiXG4gIChvbkFzc2Vzc21lbnRTZWxlY3QpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSh7IGV2dDogJGV2ZW50LCBjb25maXJtOiBmYWxzZSB9KVwiPjwvYXBwLWFzc2Vzc21lbnQtbGlzdD5cbjxkaXYgKm5nSWY9XCJ3b3JrZmxvd1R5cGUgIT09ICdBU1NFU1NNRU5UJ1wiIGNsYXNzPVwid29ya2Zsb3ctZW5naW5lXCIgW2NsYXNzLmFuaW1hdGVdPVwiYW5pbWF0aW9uXCIgW2NsYXNzLmJnXT1cIlxuICAgICghaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZCB8fCByaXNrQnVsa1VwbG9hZD8uc2hvd0NhdGVnb3J5TGlzdCkgJiZcbiAgICAhcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzXG4gIFwiPlxuICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lclwiIFtuZ1N3aXRjaF09XCJjdXJyZW50V29ya2Zsb3c/LmNvZGVcIlxuICAgIFtjbGFzcy53aXRoLXByZXZpZXctYXNzZXNzbWVudF09XCIoYXV0aD8ucHJldmlld1BhbmVsIHwgYXN5bmMpID09PSB0cnVlXCIgW2NsYXNzLndpdGgtZnJlcXVlbmN5XT1cIlxuICAgICAgY29tcGxpYW5jZT8uYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knIHx8XG4gICAgICBjb21wbGlhbmNlPy5hY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5JyB8fFxuICAgICAgcmlza0NvbXBvbmVudD8uYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knIHx8XG4gICAgICBwb2xpY3k/LmFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5JyB8fFxuICAgICAgcG9saWN5Py5hY3RpdmVTZWxlY3RvciA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5J1xuICAgIFwiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoKVwiIGlkPVwiY2xvc2Utd29ya2Zsb3ctZW5naW5lLWJ0blwiIGNsYXNzPVwiY2xvc2VcIiBbYXBwVG9vbHRpcF09XCInW0VzY10gdG8gY2xvc2UnXCJcbiAgICAgIHBsYWNlbWVudD1cImxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCIgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBjb25maXJtYXRpb25BbGVydENvbmZpZz8uaXNWaXNpYmxlIHx8ICFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXG4gICAgICBcIiBbY2xhc3Muc21pbGV5LW9wZW5lZF09XCJcbiAgICAgICAgcmlza0NvbXBvbmVudD8uc2hvd1NtaWxleSB8fFxuICAgICAgICBsb2dJc3N1ZUNvbXBvbmVudD8uc2hvd1NtaWxleSB8fFxuICAgICAgICBjb21wbGlhbmNlPy5zaG93U21pbGV5IHx8XG4gICAgICAgIHBvbGljeT8uc2hvd0NyZWF0ZURvY3VtZW50cyB8fFxuICAgICAgICByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQ/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5zaG93RXhjZWwgfHxcbiAgICAgICAgcmlza0J1bGtVcGxvYWQ/LnNob3dTbWlsZXkgfHxcbiAgICAgICAgcmlza0J1bGtVcGxvYWQ/LnNob3dFeGNlbCB8fFxuICAgICAgICBwcm9ncmFtPy5zaG93U21pbGV5IHx8XG4gICAgICAgIGltcG9ydEFuQXNzZXNzbWVudD8uc2hvd1NtaWxleVxuICAgICAgXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzZjs8L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiAqbmdJZj1cIiF1aUtpdFNlcnZpY2UuaXNTbWlsZXlPblwiIGNsYXNzPVwid29ya2Zsb3ctZW5naW5lLW1vcmVcIlxuICAgICAgW2hpZGRlbl09XCJzaG93TW9yZU9wdGlvbiA9PT0gZmFsc2UgfHwgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8uaXNWaXNpYmxlXCIgW2NsYXNzLnJlYWQtb25seV09XCJ1aUtpdFNlcnZpY2U/LmlzTG9hZGVyXCI+XG4gICAgICA8YXBwLW1vcmUtb3B0aW9uICNtb3JlT3B0aW9uIFtjdXJyZW50V29ya2Zsb3ddPVwiY3VycmVudFdvcmtmbG93Py5jb2RlXCIgW2lzRWRpdE1vZGVdPVwibW9kZSA9PT0gJ0VESVQnXCJcbiAgICAgICAgW2lzUkNTZWxlY3RlZF09XCJcbiAgICAgICAgICBpc1JDU2VsZWN0ZWQgfHxcbiAgICAgICAgICAoY3VycmVudFdvcmtmbG93Py5jb2RlID09PSAnR1JDJyAmJlxuICAgICAgICAgICAgZ3JjT2JqZWN0Py5saXN0T2JqZWN0LlJDLnNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMClcbiAgICAgICAgXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiIChzZWxlY3RlZE9wdGlvbik9XCJhZGRNb3JlSW5mbygkZXZlbnQpXCIgW2lzUHJvZ3JhbVNlbGVjdGVkXT1cInNlbGVjdGVkUHJvZ3JhbVwiXG4gICAgICAgIFthbGxvd2VkRmVhdHVyZV09XCJmZWF0dXJlXCIgW29yZ0RldGFpbHNEYXRhXT1cIm9yZ0RldGFpbHNcIiBbaXNBdHRyaWJ1dGVzQXZhaWxhYmxlXT1cIlxuICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0dSQycgJiZcbiAgICAgICAgICBncmNPYmplY3Q/LnNlbGVjdGVkQXR0cmlidXRlcz8uYXR0cmlidXRlcz8ubGVuZ3RoID4gMFxuICAgICAgICBcIj5cbiAgICAgIDwvYXBwLW1vcmUtb3B0aW9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1lbmdpbmUtZm9ybVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjb25maXJtYXRpb25BbGVydENvbmZpZz8uaXNWaXNpYmxlXCIgW2NsYXNzLm5vLXNoYWRvd109XCJcbiAgICAgICAgY3VycmVudFdvcmtmbG93Py5jb2RlID09ICdBTVInIHx8XG4gICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PSAnQ01SJyB8fFxuICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT0gJ0FBQScgfHxcbiAgICAgICAgdWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gfHxcbiAgICAgICAgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzXG4gICAgICBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiAoc2Nyb2xsKT1cInNjcm9sbEZvcm0oKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAhWydWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywgJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBvcGVuZWRGcm9tXG4gICAgICAgICAgICApXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiEodWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gfHwgcG9saWN5Py5zaG93Q3JlYXRlRG9jdW1lbnRzKVwiIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAjZHJvcGRvd25Sb3dcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgKG1vZGUgPT09ICdFRElUJyB8fFxuICAgICAgICAgICAgICAgICFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8XG4gICAgICAgICAgICAgICAgZGlzYWJsZVdvcmtmbG93Q2hhbmdlIHx8XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRQcm9ncmFtKSAmJlxuICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1xuICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImN1cnJlbnRXb3JrZmxvd1wiPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiICNkcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1wiIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlNlbGVjdCBhIFdvcmtmbG93PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09ICdBQ1RXJ1wiIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFzc2lnbiBhIENhc2UgdG8gV29ya2Zsb3c8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIiFjdXJyZW50V29ya2Zsb3cgJiYgY3VycmVudFdvcmtmbG93Py5jb2RlICE9PSAnQUNUVydcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRXb3JrZmxvdygpXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhIFdvcmtmbG93XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQgZmlyc3QtZmllbGRcIiAqbmdJZj1cImN1cnJlbnRXb3JrZmxvd1wiPlxuICAgICAgICAgICAgICAgICAgPCEtLSB7e2N1cnJlbnRXb3JrZmxvdyB8IGpzb259fSAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yIHZ4LW1yLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHQgbm8td2lkdGhcIiBbYXBwVG9vbHRpcF09XCJjdXJyZW50V29ya2Zsb3c/LndvcmtmbG93TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZmxvd1R5cGUgPT09ICdBQ1RXJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/ICc8c3Ryb25nPkNhc2UgUmVwb3J0ZWQgQnk6IDwvc3Ryb25nPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBvcnRCeSB8IHVzZXJQaXBlIDogdXNlckxpc3QpPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRXb3JrZmxvdz8ud29ya2Zsb3dOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiPnt7Y3VycmVudFdvcmtmbG93Py53b3JrZmxvd05hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImVkaXRXb3JrZmxvdygpXCIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAhd29ya2Zsb3dMaXN0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgb3BlbmVkRnJvbSAhPSAnQVNTRVNTTUVOVCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3c/LmNvZGUgIT09ICdBQ1RXJ1xuICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdz8uY29kZSA9PT0gJ0NBUFInICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCdXNpbmVzc0N5Y2xlICYmXG4gICAgICAgICAgICAgICAgICAgICFwcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmFtLWJ1c2luZXNzLWN5Y2xlIHZ4LWZzLTExIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMSB2eC1wbC0yIHZ4LXByLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtbXItMVwiPiYjeGU5NjM7PC9pPiBUaGlzIHByb2dyYW0gaXNcbiAgICAgICAgICAgICAgICAgIGJlaW5nIHNldC11cCBmb3IgdGhlIGJ1c2luZXNzIGN5Y2xlOlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mdy02MDAgdngtbWwtMVwiPnt7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCdXNpbmVzc0N5Y2xlXG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSA8YXBwLWNyZWF0ZS1kb2N1bWVudHM+PC9hcHAtY3JlYXRlLWRvY3VtZW50cz4gLS0+XG4gICAgICAgIDwhLS0gPGFwcC1idWxrLXZpZXc+PC9hcHAtYnVsay12aWV3PiAtLT5cbiAgICAgICAgPCEtLSA8YXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldz48L2FwcC1idWxrLXJlc3BvbnNpYmlsaXR5LXZpZXc+IC0tPlxuICAgICAgICA8YXBwLXdvcmtmbG93LWNvbXBsaWFuY2UgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCJcbiAgICAgICAgICBbaXNFbnRydXN0XT1cImVudHJ1c3RCdXR0b25OYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2VudHJ1c3QnXCIgW3Jlc3BvbnNpYmlsaXR5SWRdPVwiaWRcIiBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgICBbZnJhbWV3b3JrRGV0YWlsc109XCJmcmFtZXdvcmtEZXRhaWxzXCIgW2Fzc2Vzc21lbnREZXRhaWxzXT1cImFzc2Vzc21lbnREZXRhaWxzXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NBUidcIiAjcmVzcG9uc2liaWxpdHlcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKT1cImhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucygkZXZlbnQpXCIgW3NlbGVjdGVkUkNdPVwic2VsZWN0ZWRSQ1wiXG4gICAgICAgICAgW2Nsb3NlT25Fc2NdPVwiY2xvc2VPbkVzY1wiIChhc3NpZ25lZVR5cGVDaGFuZ2UpPVwiYXNzaWduZWVUeXBlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChvblJldmlld2VyVHlwZUNoYW5nZSk9XCJvblJldmlld2VyQ2hhbmdlKCRldmVudClcIiBbZmVhdHVyZV09XCJmZWF0dXJlXCIgW29wZW5lZEZyb21dPVwib3BlbmVkRnJvbVwiXG4gICAgICAgICAgKHJjU2VsZWN0ZWQpPVwib25SY1NlbGVjdGVkKCRldmVudClcIiAocmVzZXRGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgIChvblJlbW92aW5nQ2hlY2twb2ludCk9XCJvblJlbW92aW5nQ2hlY2twb2ludCgkZXZlbnQsIGZhbHNlLCB0cnVlKVwiXG4gICAgICAgICAgKGlzQXNzZXNzbWVudERpc2FibGVkKT1cImlzQXNzZXNzbWVudERpc2FibGVkKCRldmVudClcIiAoY2hlY2twb2ludENvdW50VXBkYXRlZCk9XCJjaGVja3BvaW50Q291bnQgPSAkZXZlbnRcIlxuICAgICAgICAgIFtzZWxlY3RlZFByb2dyYW1dPVwic2VsZWN0ZWRQcm9ncmFtXCIgW3Jlc3BvbnNpYmlsaXR5RGV0YWlsc109XCJ3b3JrZmxvd0RldGFpbHNcIlxuICAgICAgICAgIFtjdXN0b21GaWVsZHNdPVwiY3VzdG9tRmllbGRzXCI+PC9hcHAtd29ya2Zsb3ctY29tcGxpYW5jZT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1yaXNrIFtzZWNvbmRhcnlPcGVuUG9ydGFsXT1cInNlY29uZGFyeU9wZW5Qb3J0YWxcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiICpuZ1N3aXRjaENhc2U9XCInQUFSJ1wiICNyaXNrXG4gICAgICAgICAgKHNob3dDb25maXJtYXRpb25BbGVydCk9XCJzaG93Q29uZmlybWF0aW9uUG9wdXAoJGV2ZW50KVwiXG4gICAgICAgICAgKGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyk9XCJoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCIgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCIgKHJlZnJlc2hGb3JtKT1cIm9uUmVzZXRGb3JtKClcIlxuICAgICAgICAgIChyY1NlbGVjdGVkKT1cIm9uUmNTZWxlY3RlZCgkZXZlbnQpXCIgW21vZGVdPVwibW9kZVwiIFtyaXNrSWRdPVwiaWRcIiBbZmVhdHVyZV09XCJmZWF0dXJlXCI+PC9hcHAtd29ya2Zsb3ctcmlzaz5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1wb2xpY3kgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NBUCdcIiAjcG9saWN5XG4gICAgICAgICAgKHNob3dDb25maXJtYXRpb25BbGVydCk9XCJzaG93Q29uZmlybWF0aW9uUG9wdXAoJGV2ZW50KVwiIChzaGlmdFRvRWRpdE1vZGUpPVwic2hpZnRUb0VkaXRNb2RlKClcIlxuICAgICAgICAgIFtmZWF0dXJlXT1cImZlYXR1cmVcIiBbcG9saWN5SWRdPVwiaWRcIiBbbW9kZV09XCJtb2RlXCIgW3RlbXBsYXRlSWRdPVwidGVtcGxhdGVJZFwiXG4gICAgICAgICAgW2NvbnZlcnRGaWxlRGF0YV09XCJjb252ZXJ0RmlsZURhdGFcIiBbc2VsZWN0ZWRDYXRlZ29yeV09XCJzZWxlY3RlZENhdGVnb3J5XCJcbiAgICAgICAgICBbaXNTZW5kRm9yQXR0ZXN0YXRpb25dPVwiaXNTZW5kRm9yQXR0ZXN0YXRpb25cIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIj48L2FwcC13b3JrZmxvdy1wb2xpY3k+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctc3VydmV5LWZvcm0gKm5nU3dpdGNoQ2FzZT1cIidDQVMnXCIgI3N1cnZleUZvcm0+PC9hcHAtd29ya2Zsb3ctc3VydmV5LWZvcm0+XG4gICAgICAgIDxhcHAtYWRkLW11bHRpcGxlLXJpc2sgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FNUidcIiAjbXVsdGlwbGVSaXNrXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvYXBwLWFkZC1tdWx0aXBsZS1yaXNrPlxuICAgICAgICA8IS0tIDxhcHAtYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5ICAoZGlzY29ubmVjdFJlZnJlc2gpPVwiaXNIb3N0UmVmcmVzaEFjdGl2ZSA9ICRldmVudFwiICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiICpuZ1N3aXRjaENhc2U9XCInQ01SJ1wiICNtdWx0aXBsZVJlc3BvbnNpYmlsaXR5PlxuICAgICAgICAgICAgICAgIDwvYXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eT4gLS0+XG5cbiAgICAgICAgPGxpYi1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NNUidcIiBbZmVhdHVyZV09XCJmZWF0dXJlXCIgI211bHRpcGxlUmVzcG9uc2liaWxpdHk+PC9saWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSBOZXcgTG9nIGFuIElzc3VlIC0tPlxuICAgICAgICA8YXBwLWxvZy1hbi1pc3N1ZSBbaXNzdWVEZXRhaWxzXT1cImlzc3VlRGF0YVwiICpuZ1N3aXRjaENhc2U9XCInTEFJJ1wiIFtyZXBvbnNpYmlsaXR5RGF0YV09XCJyZXBvbnNpYmlsaXR5RGF0YVwiXG4gICAgICAgICAgW2Fzc2Vzc21lbnRRdWVzdGlvbl09XCJhc3Nlc3NtZW50UXVlc3Rpb25cIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgW3NvdXJjZV09XCJzb3VyY2VcIiBbaXNzdWVJZF09XCJpZFwiXG4gICAgICAgICAgI2xvZ0FuSXNzdWUgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIiBbKG1vZGUpXT1cIm1vZGVcIj5cbiAgICAgICAgPC9hcHAtbG9nLWFuLWlzc3VlPlxuICAgICAgICA8IS0tIE9sZCBMb2cgYW4gaXNzdWUgLS0+XG4gICAgICAgIDwhLS0gPGFwcC1sb2ctYW4taXNzdWUgKm5nU3dpdGNoQ2FzZT1cIidMQUknXCIgW3Jlc3BvbnNpYmlsaXRpZXNEYXRhXT1cInJlcG9uc2liaWx0eURhdGFcIiBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICAgICAgICAgICAgICAjbG9nQW5Jc3N1ZSAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvYXBwLWxvZy1hbi1pc3N1ZT4gLS0+XG5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1hc3Nlc3NtZW50IFthc3Nlc3NtZW50SWRdPVwiaWRcIiAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FBQSdcIlxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIiAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChyZWZyZXNoRm9ybSk9XCJvblJlc2V0Rm9ybSgpXCIgW21vZGVdPVwibW9kZVwiICNhc3Nlc3NtZW50PjwvYXBwLXdvcmtmbG93LWFzc2Vzc21lbnQ+XG4gICAgICAgIDxhcHAtaW1wb3J0LWFuLWFzc2Vzc21lbnQgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0lBQSdcIlxuICAgICAgICAgIChzaG93Q29uZmlybWF0aW9uQWxlcnQpPVwic2hvd0NvbmZpcm1hdGlvblBvcHVwKCRldmVudClcIiAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChyZWZyZXNoRm9ybSk9XCJvblJlc2V0Rm9ybSgpXCIgI2ltcG9ydEFzc2Vzc21lbnQ+PC9hcHAtaW1wb3J0LWFuLWFzc2Vzc21lbnQ+XG4gICAgICAgIDwhLS0gPGFwcC13b3JrZmxvdy1wcm9ncmFtICNwcm9ncmFtICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIiAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIj48L2FwcC13b3JrZmxvdy1wcm9ncmFtPiAtLT5cbiAgICAgICAgPGFwcC13b3JrZmxvdy1wcm9ncmFtICNwcm9ncmFtICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIiBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCIgW2FsbG93ZWRGZWF0dXJlXT1cImZlYXR1cmVcIlxuICAgICAgICAgIChkaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiZGlzYWJsZU1vcmVPcHRpb25zKCdDQVBSJywgJGV2ZW50KVwiIFtwcm9ncmFtVHlwZV09XCJwcm9ncmFtVHlwZVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCJcbiAgICAgICAgICAoc2hvd0NvbmZpcm1hdGlvbkFsZXJ0KT1cInNob3dDb25maXJtYXRpb25Qb3B1cCgkZXZlbnQpXCIgKGNsb3NlV29ya2Zsb3cpPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgkZXZlbnQpXCJcbiAgICAgICAgICAocGlja2VyQ2hhbmdlZCk9XCJkZWNpZGVWaWV3TW9yZU9wdGlvbigkZXZlbnQpXCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAocmVmcmVzaEZvcm0pPVwib25SZXNldEZvcm0oKVwiIFttb2RlXT1cIm1vZGVcIiBbcHJvZ3JhbUlkXT1cImlkXCIgW3Byb2dyYW1EZXRhaWxzXT1cIndvcmtmbG93RGV0YWlsc1wiXG4gICAgICAgICAgKG9uUmVtb3ZpbmdSb2xlKT1cIm9uUmVtb3ZpbmdSb2xlKCRldmVudClcIiBbY2FuRnJhbWV3b3JrQ2hhbmdlXT1cImNhbkZyYW1ld29ya0NoYW5nZVwiXG4gICAgICAgICAgW2FkZFRvUHJvZ3JhbURldGFpbHNdPVwiYWRkVG9Qcm9ncmFtRGV0YWlsc1wiPjwvYXBwLXdvcmtmbG93LXByb2dyYW0+XG5cbiAgICAgICAgPCEtLSBHUkMgT2JqZWN0IC0tPlxuICAgICAgICA8bGliLWdyYy1vYmplY3QtY29udGFpbmVyICNncmNPYmplY3QgKm5nU3dpdGNoQ2FzZT1cIidHUkMnXCIgW2dyY1R5cGVdPVwiZ3JjVHlwZVwiIFtNT0RFXT1cIm1vZGVcIiBbSURdPVwiaWRcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIiAocG9wdWxhdGVPcHRpb24pPVwicG9wdWxhdGVNb3JlT3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiIChyZXNldEZvcm0pPVwib25SZXNldEdSQ0Zvcm0oKVwiXG4gICAgICAgICAgKGRpc2Nvbm5lY3RSZWZyZXNoKT1cImlzSG9zdFJlZnJlc2hBY3RpdmUgPSAkZXZlbnRcIlxuICAgICAgICAgIChoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMpPVwiaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zKCRldmVudClcIj48L2xpYi1ncmMtb2JqZWN0LWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFJlcG9ydCBhIENhc2UgLS0+XG4gICAgICAgIDxhcHAtd29ya2Zsb3ctY2FzZSAqbmdTd2l0Y2hDYXNlPVwiJ1JBQydcIiAjcmVwb3J0Q2FzZSBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCIgW3NvdXJjZV09XCJzb3VyY2VcIiBbY2FzZUlkXT1cImlkXCJcbiAgICAgICAgICBbbW9kZV09XCJtb2RlXCIgW3Jlc3BvbnNpYmlsaXR5RGF0YV09XCJyZXBvbnNpYmlsaXR5RGF0YVwiIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCJcbiAgICAgICAgICBbY2FzZVR5cGVQZXJtaXNzaW9uXT1cImNhc2VUeXBlUGVybWlzc2lvblwiIFt3b3JrZmxvd1R5cGVdPVwiJ1JBQydcIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VXb3JrZmxvdyk9XCJjbG9zZVdvcmtmbG93RW5naW5lKCRldmVudClcIlxuICAgICAgICAgIChwaWNrZXJDaGFuZ2VkKT1cImRlY2lkZVZpZXdNb3JlT3B0aW9uKCRldmVudClcIj48L2FwcC13b3JrZmxvdy1jYXNlPlxuICAgICAgICA8IS0tIEFzc2lnbiBjYXNlIHRvIHdvcmtmbG93IC0tPlxuICAgICAgICA8YXBwLXdvcmtmbG93LWNhc2UgKm5nU3dpdGNoQ2FzZT1cIidBQ1RXJ1wiICNyZXBvcnRDYXNlIFtvcGVuZWRGcm9tXT1cIm9wZW5lZEZyb21cIiBbc291cmNlXT1cInNvdXJjZVwiIFtjYXNlSWRdPVwiaWRcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIiBbd29ya2Zsb3dUeXBlXT1cIidBQ1RXJ1wiIFtyZXNwb25zaWJpbGl0eURhdGFdPVwicmVwb25zaWJpbGl0eURhdGFcIlxuICAgICAgICAgIFthc3Nlc3NtZW50UXVlc3Rpb25dPVwiYXNzZXNzbWVudFF1ZXN0aW9uXCIgW2Nhc2VUeXBlUGVybWlzc2lvbl09XCJjYXNlVHlwZVBlcm1pc3Npb25cIlxuICAgICAgICAgIChkaXNjb25uZWN0UmVmcmVzaCk9XCJpc0hvc3RSZWZyZXNoQWN0aXZlID0gJGV2ZW50XCIgKHBvcHVsYXRlT3B0aW9uKT1cInBvcHVsYXRlTW9yZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2FzZVJlcG9ydGVkQnkpPVwiY2FzZVJlcG9ydGVkQnkoJGV2ZW50KVwiICh1c2VyTGlzdEVtaXR0ZXIpPVwidXNlckxpc3RFbWl0dGVyKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZVdvcmtmbG93KT1cImNsb3NlV29ya2Zsb3dFbmdpbmUoJGV2ZW50KVwiXG4gICAgICAgICAgKHBpY2tlckNoYW5nZWQpPVwiZGVjaWRlVmlld01vcmVPcHRpb24oJGV2ZW50KVwiPjwvYXBwLXdvcmtmbG93LWNhc2U+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJbJ1JBQycsICdBQ1RXJ10uaW5jbHVkZXMoY3VycmVudFdvcmtmbG93Py5jb2RlKVwiIGNsYXNzPVwidngtZC1mbGV4XCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAoY2xpY2spPVwiY2xvc2VXb3JrZmxvd0VuZ2luZSgpXCI+XG4gICAgICAgICAgQ0FOQ0VMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICBtb2RlID09PSBcIkVESVRcIiAmJiBjdXJyZW50V29ya2Zsb3c/LmNvZGUgPT09IFwiUkFDXCJcbiAgICAgICAgICA/IFwiVXBkYXRlXCJcbiAgICAgICAgICA6IFwiUmVwb3J0XCJcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiICpuZ1N3aXRjaENhc2U9XCInQUFSJ1wiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICB7e1xuICAgICAgICBtb2RlID09PSBcIkVESVRcIiAmJiBvcGVuZWRGcm9tICE9PSBcIk1PVkVfVE9fUkVHSVNURVJcIlxuICAgICAgICA/IFwiVXBkYXRlXCJcbiAgICAgICAgOiBcIkFkZFwiXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgfHxcbiAgICAgICAgICAhcmlza0J1bGtVcGxvYWQ/LmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XG4gICAgICAgIFwiIChjbGljayk9XCJidWxrVXBsb2FkQnJvd3NlKCdBTVInKVwiICpuZ1N3aXRjaENhc2U9XCInQU1SJ1wiPlxuICAgICAgICBCcm93c2VcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiIChjbGljayk9XCJidWxrVXBsb2FkQnJvd3NlKCdDTVInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ01SJ1wiPlxuICAgICAgICBCcm93c2VcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIFRoaXMgaGFzIHRlcm5hcnkgb3BlcmF0aW9uIHRvIGhhbmRsZSB0aGUgYm90aCBzY2VuYXJpb3Mgb2YgaG93IGl0IHdvcmtzIHdpdGggY29tcGxpYW5jZSBhbmQgcHJvZ3JhbSBtb2R1bGUsIHBsZWFzZSBkb24ndCBjaGFuZ2UgdGhpcy4gLS0+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCIgKm5nU3dpdGNoQ2FzZT1cIidDQVInXCI+XG4gICAgICAgIHt7XG4gICAgICAgIGVudHJ1c3RCdXR0b25OYW1lICE9PSBcIlwiICYmIG1vZGUgIT09IFwiRURJVFwiXG4gICAgICAgID8gZW50cnVzdEJ1dHRvbk5hbWVcbiAgICAgICAgOiBtb2RlID09PSBcIkVESVRcIiAmJiAhd29ya2Zsb3dEZXRhaWxzPy5kdXBsaWNhdGVcbiAgICAgICAgPyBcIlVQREFURVwiXG4gICAgICAgIDogXCJFbnRydXN0XCJcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ1N3aXRjaENhc2U9XCInQ0FQJ1wiPlxuICAgICAgICB7e1xuICAgICAgICBtb2RlID09IFwiRURJVFwiXG4gICAgICAgID8gaXNTZW5kRm9yQXR0ZXN0YXRpb25cbiAgICAgICAgPyBcIlNlbmQgZm9yIGF0dGVzdGF0aW9uXCJcbiAgICAgICAgOiBcIlVwZGF0ZVwiXG4gICAgICAgIDogXCJDb250aW51ZSB0byBkcmFmdFwiXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0NBUydcIj5cbiAgICAgICAgQ29udGludWUgdG8gZHJhZnRcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIFtjbGFzcy5kaXNhYmxlZF09XCIhaXNXb3JrZmxvd1NlbGVjdG9yRW5hYmxlZFwiICpuZ1N3aXRjaENhc2U9XCInTEFJJ1wiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIkFkZFwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FBQSdcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJDb250aW51ZSB0byBkcmFmdFwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWRcIiAoY2xpY2spPVwiYnVsa1VwbG9hZEJyb3dzZSgnSUFBJylcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0lBQSdcIj5cbiAgICAgICAgQnJvd3NlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzV29ya2Zsb3dTZWxlY3RvckVuYWJsZWQgfHwgIXByb2dyYW0/LnZhbGlkXCIgKGNsaWNrKT1cInN1Ym1pdCgnQ0FQUicpXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDQVBSJ1wiPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIlNhdmVcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFpc1dvcmtmbG93U2VsZWN0b3JFbmFibGVkIHx8ICFwcm9ncmFtPy52YWxpZFwiIChjbGljayk9XCJzdWJtaXQoJ0NBUFInKVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0FQUidcIj5cbiAgICAgICAge3sgbW9kZSA9PT0gXCJFRElUXCIgPyBcIlVwZGF0ZVwiIDogXCJTYXZlXCIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdFwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ1N3aXRjaENhc2U9XCInR1JDJ1wiPlxuICAgICAgICB7eyBtb2RlID09PSBcIkVESVRcIiA/IFwiVXBkYXRlXCIgOiBcIlNhdmVcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cIndvcmtmbG93TGlzdFwiIChjbGljayk9XCJjbG9zZVdvcmtmbG93TGlzdCgpXCIgW3N0eWxlLnRvcC5weF09XCJkcm9wZG93blRvcFwiXG4gICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImRyb3Bkb3duTGVmdFwiIFtzdHlsZS53aWR0aC5weF09XCJkcm9wZG93bldpZHRoXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLWxpc3RcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHdvcmtmbG93IG9mIHdvcmtmbG93VHlwZUxpc3RcIiAoY2xpY2spPVwiY2hhbmdlV29ya2Zsb3coJGV2ZW50LCB3b3JrZmxvdylcIj5cbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gKm5nSWY9XCJ3b3JrZmxvdz8uY29kZSAhPT0gJ0FDVFcnXCIgW3ZhbHVlXT1cIndvcmtmbG93Py5jb2RlXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudFdvcmtmbG93Py5jb2RlID09PSB3b3JrZmxvdz8uY29kZVwiPlxuICAgICAgICAgICAgICB7eyB3b3JrZmxvdz8ud29ya2Zsb3dOYW1lIH19PC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW92ZXJsYXlcIiAqbmdJZj1cIndvcmtmbG93TGlzdFwiIChjbGljayk9XCJjbG9zZVdvcmtmbG93TGlzdCgpXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1jb25maXJtYXRpb24tYWxlcnQgaWQ9XCJjb25maXJtYXRpb24tZGlhbG9ndWVcIiAoYWN0aW9uKT1cImNvbmZpcm1Xb3JrZmxvd0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICpuZ0lmPVwiY29uZmlybWF0aW9uQWxlcnRDb25maWc/LmlzVmlzaWJsZVwiIFttZXNzYWdlXT1cImNvbmZpcm1hdGlvbkFsZXJ0Q29uZmlnPy5tZXNzYWdlXCJcbiAgICAgIFtjb25maWddPVwiY29uZmlybWF0aW9uQWxlcnRDb25maWdcIj48L2FwcC1jb25maXJtYXRpb24tYWxlcnQ+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|