vcomply-workflow-engine 6.0.77 → 6.0.79
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/add-multiple-responsibility/add-multiple-responsibility.component.mjs +1 -10
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +1 -10
- package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +1 -10
- package/esm2022/lib/constants/api.constants.mjs +5 -3
- package/esm2022/lib/constants/mock.mjs +152 -0
- package/esm2022/lib/interfaces/frequency.interface.mjs +2 -0
- package/esm2022/lib/interfaces/iframe-type.mjs +7 -0
- package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
- package/esm2022/lib/more-option/more-option.component.mjs +17 -183
- package/esm2022/lib/report-a-case/services/report-a-case.service.mjs +3 -2
- package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +5 -5
- package/esm2022/lib/services/common.service.mjs +40 -1
- package/esm2022/lib/services/iframe.service.mjs +14 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +5 -5
- package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +2 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +6 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +3 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +3 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +9 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +4 -2
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +247 -1
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +1 -3
- package/esm2022/lib/sharedComponents/list-container/list-container.component.mjs +52 -0
- package/esm2022/lib/sharedComponents/program-list/constant.mjs +16 -0
- package/esm2022/lib/sharedComponents/program-list/interfaces/data-source.interface.mjs +2 -0
- package/esm2022/lib/sharedComponents/program-list/interfaces/list-item.interface.mjs +2 -0
- package/esm2022/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.mjs +23 -0
- package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +182 -0
- package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +47 -0
- package/esm2022/lib/sharedComponents/program-list/services/list-utils.service.mjs +27 -0
- package/esm2022/lib/sharedComponents/program-list/services/program-list-api.service.mjs +32 -0
- package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +24 -0
- package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +19 -0
- package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +45 -17
- package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +13 -10
- package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +62 -35
- package/esm2022/lib/workflow/shared/services/grc.service.mjs +15 -2
- package/esm2022/lib/workflow/shared/workflow-pipes/get-user-details.pipe.mjs +26 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +8 -3
- package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +1 -10
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +284 -413
- package/esm2022/lib/workflow-engine-container/api-constants.mjs +3 -2
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +32 -53
- package/esm2022/lib/workflow-engine.module.mjs +13 -6
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +55 -35
- package/esm2022/lib/workflow-program/constants.mjs +3 -3
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +122 -338
- package/esm2022/lib/workflow-services/policy.service.mjs +8 -4
- package/esm2022/lib/workflow-services/programs.service.mjs +26 -113
- package/esm2022/lib/workflow-services/responsibility.service.mjs +60 -56
- package/fesm2022/vcomply-workflow-engine.mjs +4701 -4517
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts +0 -2
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +0 -2
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +0 -2
- package/lib/constants/api.constants.d.ts +4 -2
- package/lib/constants/mock.d.ts +15 -0
- package/lib/interfaces/frequency.interface.d.ts +37 -0
- package/lib/interfaces/iframe-type.d.ts +5 -0
- package/lib/interfaces/responsibilty.interface.d.ts +12 -12
- package/lib/services/common.service.d.ts +28 -0
- package/lib/services/iframe.service.d.ts +6 -0
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +1 -0
- package/lib/sharedComponents/frequency/frequency.service.d.ts +87 -0
- package/lib/sharedComponents/list-container/list-container.component.d.ts +9 -0
- package/lib/sharedComponents/program-list/constant.d.ts +9 -0
- package/lib/sharedComponents/program-list/interfaces/data-source.interface.d.ts +4 -0
- package/lib/sharedComponents/program-list/interfaces/list-item.interface.d.ts +5 -0
- package/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.d.ts +7 -0
- package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +45 -0
- package/lib/sharedComponents/program-list/program-list.module.d.ts +14 -0
- package/lib/sharedComponents/program-list/services/list-utils.service.d.ts +7 -0
- package/lib/sharedComponents/program-list/services/program-list-api.service.d.ts +14 -0
- package/lib/ui-kit/loaders/loaders.module.d.ts +8 -0
- package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +9 -0
- package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +5 -1
- package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +3 -1
- package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +6 -2
- package/lib/workflow/shared/services/grc.service.d.ts +1 -0
- package/lib/workflow/shared/workflow-pipes/get-user-details.pipe.d.ts +7 -0
- package/lib/workflow/shared/workflow-pipes/workflow-pipes.module.d.ts +3 -2
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +0 -2
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +32 -6
- package/lib/workflow-engine-container/api-constants.d.ts +1 -0
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +5 -2
- package/lib/workflow-engine.module.d.ts +42 -40
- package/lib/workflow-policy/workflow-policy.component.d.ts +9 -0
- package/lib/workflow-program/workflow-program.component.d.ts +8 -4
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/lib/workflow-services/policy.service.d.ts +1 -0
- package/lib/workflow-services/programs.service.d.ts +13 -53
- package/lib/workflow-services/responsibility.service.d.ts +17 -4
- package/package.json +1 -1
|
@@ -537,7 +537,6 @@ export class AddMultipleRiskComponent {
|
|
|
537
537
|
this.loader = false;
|
|
538
538
|
this.showExcel = false;
|
|
539
539
|
this.showSmiley = true;
|
|
540
|
-
this.submitWorkflow();
|
|
541
540
|
this.riskData = res;
|
|
542
541
|
}, (err) => {
|
|
543
542
|
console.error(err);
|
|
@@ -546,14 +545,6 @@ export class AddMultipleRiskComponent {
|
|
|
546
545
|
this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?', 'alert');
|
|
547
546
|
});
|
|
548
547
|
}
|
|
549
|
-
submitWorkflow() {
|
|
550
|
-
const message = { type: 'submit' };
|
|
551
|
-
const targetOrigin = this.getOrigin();
|
|
552
|
-
window.parent.postMessage(message, targetOrigin);
|
|
553
|
-
}
|
|
554
|
-
getOrigin() {
|
|
555
|
-
return window.location.origin;
|
|
556
|
-
}
|
|
557
548
|
returnIds(item, key) {
|
|
558
549
|
switch (key) {
|
|
559
550
|
case 'rc_id':
|
|
@@ -856,4 +847,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
856
847
|
}], disconnectRefresh: [{
|
|
857
848
|
type: Output
|
|
858
849
|
}] } });
|
|
859
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FLYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBTTdCLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyx3QkFBd0I7SUE2Rm5DLFlBQ1UsV0FBMkIsRUFDM0IsV0FBd0IsRUFDeEIsUUFBeUIsRUFDekIsZ0JBQXNDLEVBQ3RDLGFBQTRCO1FBSjVCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBakd0QyxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRU4sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLElBQUksWUFB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IENhdGVnb3J5TGlzdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2F0ZWdvcnlMaXN0JztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkUmlza1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hZGQtcmlzay5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5cbnR5cGUgQU9BID0gYW55W11bXTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hZGQtbXVsdGlwbGUtcmlzaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtbXVsdGlwbGUtcmlzay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1tdWx0aXBsZS1yaXNrLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY2F0ZWdvcnlMaXN0OiBDYXRlZ29yeUxpc3QgPSB7XG4gICAgc3RyYXRlZ2ljOiB7XG4gICAgICBuYW1lOiAnU1RSQVRFR0lDJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gICAgb3BlcmF0aW9uYWw6IHtcbiAgICAgIG5hbWU6ICdPUEVSQVRJT05BTCcsXG4gICAgICBkYXRhOiBbXSxcbiAgICB9LFxuICAgIGNvbXBsaWFuY2U6IHtcbiAgICAgIG5hbWU6ICdDT01QTElBTkNFJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gICAgb3RoZXJzOiB7XG4gICAgICBuYW1lOiAnT1RIRVJTJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gIH07XG5cbiAgY2F0ZWdvcnk6IGFueSA9IHtcbiAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcbiAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgfTtcblxuICByaXNrQnVsa1VwbG9hZDogYW55ID0ge1xuICAgIGhlYWRlcjogW10sXG4gICAgd2VpZ2h0RmFjdG9yczogW10sXG4gICAgcmlza3M6IFtdLFxuICB9O1xuXG4gIHRlbXBsYXRlSW5mbzogYW55ID0ge1xuICAgIG1lbWJlcklkOiAnJyxcbiAgICBjYXRlZ29yeUlkOiAnJyxcbiAgICBvd25lckxpc3Q6IFtdLFxuICAgIHJjTGlzdDogW10sXG4gICAgZ3JjTGlzdDogW10sXG4gICAgbWl0aWdhdGlvbkxpc3Q6IFtdLFxuICAgIGxpa2VsaWhvb2Q6IFtdLFxuICAgIGltcGFjdDogW10sXG4gICAgdmVsb2NpdHk6IFtdLFxuICAgIHZ1bG5lcmFiaWxpdHk6IFtdLFxuICB9O1xuXG4gIGlzTG9hZGVyID0gZmFsc2U7XG4gIHNob3dDYXRlZ29yeUxpc3QgPSBmYWxzZTtcbiAgdGVtcGxhdGVEb3dubG9hZGVkID0gZmFsc2U7XG4gIGRvd25sb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBsb2FkZXIgPSBmYWxzZTtcbiAgc2V0dGluZ3NJbmZvITogYW55O1xuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xuICBpc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gIGZpbGVOYW1lOiBhbnk7XG4gIGRhdGE6IGFueTtcbiAgYXNzZXNzbWVudERlYWRMaW5lOiBhbnk7XG4gIHNob3dFeGNlbCA9IGZhbHNlO1xuICBmaWxlVmFsdWU6IGFueTtcbiAgbWVtYmVySWQgPSAwO1xuICBvcmdhbml6YXRpb25JZCA9IDA7XG4gIGVycm9yTWVzc2FnZSA9ICcgaW52YWxpZCBmaWxlIGVycm9yJztcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xuICBkb3dubG9hZFBlcmNlbnQgPSAwO1xuICBmZkxpbmtlZEdyY09iamVjdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRSY0lkOiBudW1iZXIgPSAwO1xuICBzZWxlY3RlZFJjTmFtZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkR3JjTmFtZTogc3RyaW5nID0gJyc7XG4gIGNvbHVtbldpc2VEYXRhOiBhbnkgPSBbXTtcblxuICBzbWlsZXlNZXNzYWdlID0gYFlvdSdyZSBBbGwgU2V0ISBXZSdyZSB1cGxvYWRpbmcgdGhlIHJpc2tzLiBUaGUgcmlzayBvd25lcnMgd2lsbCBiZSBub3RpZmllZCBvbmNlIHRoZSByaXNrcyBoYXZlIGJlZW4gdXBsb2FkZWQuYDtcbiAgYWN0aW9uQnV0dG9ucyA9IFtcbiAgICB7IGJ1dHRvblRleHQ6ICdBZGQgTW9yZSBSaXNrcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmlzaycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdSaXNrcycgfSxcbiAgXTtcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xuICBtZW1iZXJfb2JqX2lkID0gJyc7XG4gIGRlZmF1bHRPd25lciA9ICcnO1xuICByaXNrRGF0YSE6IGFueTtcbiAgZnJlcXVlbmN5VHlwZSA9IFtcbiAgICAnd2Vla2x5JyxcbiAgICAnbW9udGhseScsXG4gICAgJ3F1YXJ0ZXJseScsXG4gICAgJ2JpYW5udWFsJyxcbiAgICAnYW5udWFsJyxcbiAgICAnb25lIHRpbWUnLFxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmlza1NlcnZpY2U6IEFkZFJpc2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHsgfVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5nZXRTZXR0aW5nc0luZm8oKTtcblxuICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkO1xuICAgIHRoaXMuc2V0RmVhdHVyZUZsYWcoKTtcbiAgfVxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgdGhpcy5zaG93Q2F0ZWdvcnlMaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldENhdGVnb3J5TGlzdCgpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LnN0cmF0ZWdpYy5kYXRhID0gcmVzLnN0cmF0ZWdpY19hcnI7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm9wZXJhdGlvbmFsLmRhdGEgPSByZXMub3BlcmF0aW9uYWxfYXJyO1xuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5jb21wbGlhbmNlLmRhdGEgPSByZXMuY29tcGxpYW5jZV9hcnI7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm90aGVycy5kYXRhID0gcmVzLm90aGVyc19hcnI7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHNhdmVTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5OiBhbnkpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZCAhPVxuICAgICAgY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgKSB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ05PVF9ET1dOTE9BRElORyc7XG4gICAgfVxuICAgIHRoaXMuc2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgIHRoaXMuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2Nyb2xsUmVmZXJlbmNlJyk7XG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgfVxuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICByZW1vdmVDYXRlZ29yeSgpIHtcbiAgICB0aGlzLmNhdGVnb3J5ID0ge1xuICAgICAgdHlwZTogJ3N0cmF0ZWdpYycsXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgICB9O1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICBnZXRTZXR0aW5nc0luZm8oKSB7XG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRSaXNrU2V0dGluZ0RldGFpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvID0gcmVzO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgdHJpZ2dlckJyb3dzZUZpbGUoKSB7XG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcbiAgICBpZiAoZ2V0RmlsZSkge1xuICAgICAgZ2V0RmlsZS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHVwbG9hZGVkRmlsZShldmVudDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQgPSB7XG4gICAgICAgIGhlYWRlcjogW10sXG4gICAgICAgIHdlaWdodEZhY3RvcnM6IFtdLFxuICAgICAgICByaXNrczogW10sXG4gICAgICB9O1xuICAgICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XG4gICAgICAgIG1lbWJlcklkOiAnJyxcbiAgICAgICAgY2F0ZWdvcnlJZDogJycsXG4gICAgICAgIG93bmVyTGlzdDogW10sXG4gICAgICAgIHJjTGlzdDogW10sXG4gICAgICAgIGdyY0xpc3Q6IFtdLFxuICAgICAgICBtaXRpZ2F0aW9uTGlzdDogW10sXG4gICAgICAgIGxpa2VsaWhvb2Q6IFtdLFxuICAgICAgICBpbXBhY3Q6IFtdLFxuICAgICAgICB2ZWxvY2l0eTogW10sXG4gICAgICAgIHZ1bG5lcmFiaWxpdHk6IFtdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY3JvbGxSZWZlcmVuY2UnKTtcbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZTtcblxuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjdXJseVxuICAgICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggIT09IDEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBtdWx0aXBsZSBmaWxlcycpO1xuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzFdO1xuXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xuICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lMV07XG5cbiAgICAgICAgdGhpcy5kYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7XG4gICAgICAgICAgaGVhZGVyOiAxLFxuICAgICAgICB9KSBhcyBBT0E7XG5cbiAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHsgaGVhZGVyOiAxIH0pIGFzIEFPQTtcbiAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXG4gICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbHVtbldpc2VEYXRhID0gdGhpcy5nZXRDb2x1bW5XaXNlRGF0YSh0RGF0YSk7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm1lbWJlcklkID0gdGVtcExpc3RbMF1bMjddO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUlkID0gdGVtcExpc3RbMF1bMjZdO1xuICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLmhlYWRlciA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbNF0uZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycyA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbNV0uZmlsdGVyKCh3ZWlnaHRGYWN0b3I6IGFueSkgPT4gd2VpZ2h0RmFjdG9yLmxlbmd0aCA+IDApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGVtcExpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50WzhdKSB7XG4gICAgICAgICAgICBjb25zdCBtZW1iZXIgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbOF0sXG4gICAgICAgICAgICAgIG1lbWJlcl9pZDogZWxlbWVudFs5XSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5vd25lckxpc3QucHVzaChtZW1iZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsyXSkge1xuICAgICAgICAgICAgY29uc3QgbWl0aWdhdGlvbiA9IHtcbiAgICAgICAgICAgICAgbWl0aWdhdGlvbk5hbWU6IGVsZW1lbnRbMl0sXG4gICAgICAgICAgICAgIG1pdGlnYXRpb25faWQ6IGVsZW1lbnRbM10sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWl0aWdhdGlvbkxpc3QucHVzaChtaXRpZ2F0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnRbNl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJjID0ge1xuICAgICAgICAgICAgICByY05hbWU6IGVsZW1lbnRbNl0sXG4gICAgICAgICAgICAgIHJjX2lkOiBlbGVtZW50WzddLFxuICAgICAgICAgICAgICBvd25lcl9pZHM6IGVsZW1lbnRbMTFdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZWxlbWVudFsxMl0pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5saWtlbGlob29kLnB1c2goZWxlbWVudFsxMl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsxM10pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5pbXBhY3QucHVzaChlbGVtZW50WzEzXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWZWxvY2l0eScpICYmXG4gICAgICAgICAgICBlbGVtZW50WzE0XVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8udmVsb2NpdHkucHVzaChlbGVtZW50WzE0XSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWdWxuZXJhYmlsaXR5JykgJiZcbiAgICAgICAgICAgIGVsZW1lbnRbMTVdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby52dWxuZXJhYmlsaXR5LnB1c2goZWxlbWVudFsxNV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIGZpbGUgZm9yIFJpc2sgQ2F0ZWdvcnk6JyArXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY2F0ZWdvcnlfbmFtZSArXG4gICAgICAgICAgICAnIFJFVFJZJztcblxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLmhlYWRlclswXSAhPT1cbiAgICAgICAgICAnV2hhdCByaXNrIHdvdWxkIHlvdSBsaWtlIHRvIG1hbmFnZT8qJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSBmaWxlIGZvciBSaXNrIENhdGVnb3J5OicgK1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5LmNhdGVnb3J5X25hbWUgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG5cbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGE/LnNsaWNlKDcpO1xuICAgICAgICBjb25zdCBkZWZhdWx0T3duZXIgPSB0aGlzLnRlbXBsYXRlSW5mbz8ub3duZXJMaXN0Py5maW5kSW5kZXgoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCA9PSB0aGlzLm1lbWJlcklkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChkZWZhdWx0T3duZXIgIT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudGVtcGxhdGVJbmZvLm93bmVyTGlzdFtkZWZhdWx0T3duZXJdLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgZmlsZSBmb3IgUmlzayBDYXRlZ29yeTonICtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9uYW1lICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQgfHxcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuX2lkICE9IHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5SWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgZmlsZSBmb3IgUmlzayBDYXRlZ29yeTonICtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9uYW1lICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNFbXB0eSA9IHRoaXMuY2hlY2tFbXB0eUZpbGUoKTtcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnWW91IGhhdmUgdXBsb2FkZWQgYSBibGFuayB0ZW1wbGF0ZS4gUGxlYXNlIGFkZCBkZXRhaWxzIGZvciBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQuaGVhZGVyWzZdID09PSAnUmlzayBBc3Nlc3NtZW50IERlYWRsaW5lKicpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzZXNzbWVudERlYWRMaW5lID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbGVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJpc2tEYXRhID0gdGhpcy5kYXRhLmZpbHRlcihcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxuICAgICAgICApO1xuXG4gICAgICAgIHJpc2tEYXRhLmZvckVhY2goKHJpc2s6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnN0IG9iajogYW55ID0ge1xuICAgICAgICAgIC8vICAgcmlza05hbWU6IHJpc2tbMF0gPz8gJycsXG4gICAgICAgICAgLy8gICBkZXNjcmlwdGlvbjogcmlza1sxXSA/PyAnJyxcbiAgICAgICAgICAvLyAgIHJjTmFtZTogcmlza1syXSA/PyAnJyxcbiAgICAgICAgICAvLyAgIG93bmVyOiByaXNrWzNdID8/ICcnLFxuICAgICAgICAgIC8vICAgbWl0aWdhdGlvblByaW9yaXR5OiByaXNrWzRdID8/ICcnLFxuICAgICAgICAgIC8vICAgb3ZlcnNlZXI6IHJpc2tbNV0gPz8gJycsXG4gICAgICAgICAgLy8gICBpc1ZhbGlkOiB0aGlzLmNoZWNrVmFsaWRpdHkocmlzayksXG4gICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgLy8gaWYgKHRoaXMuYXNzZXNzbWVudERlYWRMaW5lKSB7XG4gICAgICAgICAgLy8gICBvYmouYXNzZXNzbWVudERlYWRMaW5lID0gcmlza1s2XSA/PyAnJztcbiAgICAgICAgICAvLyAgIG9iai5saWtlbGlob29kID0gcmlza1s3XSA/PyAnJztcbiAgICAgICAgICAvLyAgIG9iai5pbXBhY3QgPSByaXNrWzhdID8/ICcnO1xuICAgICAgICAgIC8vICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggPT0gMykge1xuICAgICAgICAgIC8vICAgICBvYmoudmVsb2NpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggPT0gNCkge1xuICAgICAgICAgIC8vICAgICBvYmoudmVsb2NpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgICBvYmoudnVsbmVyYWJpbGl0eSA9IHJpc2tbMTBdID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG5cbiAgICAgICAgICAvLyAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jdXN0b21fdGFnLmZvckVhY2goKHRhZzogYW55LCBpbmRleDogYW55KSA9PiB7XG4gICAgICAgICAgLy8gICAgIGlmICh0YWcpIHtcbiAgICAgICAgICAvLyAgICAgICBjb25zdCBjVGFnID0ge1xuICAgICAgICAgIC8vICAgICAgICAgY3VzdG9tX3RhZ192YWx1ZTogcmlza1s3ICsgdGhpcy5yaXNrQnVsa1VwbG9hZC53ZWlnaHRGYWN0b3JzLmxlbmd0aCArIGluZGV4XSA/PyAnJyxcbiAgICAgICAgICAvLyAgICAgICAgIGN1c3RvbV90YWdfbmFtZTogdGFnLnRhZ05hbWVcbiAgICAgICAgICAvLyAgICAgICB9O1xuICAgICAgICAgIC8vICAgICAgIGN1c3RvbVRhZ3MucHVzaChjVGFnKTtcbiAgICAgICAgICAvLyAgICAgfVxuICAgICAgICAgIC8vICAgfSk7XG4gICAgICAgICAgLy8gICBvYmouY3VzdG9tVGFnID0gY3VzdG9tVGFncztcbiAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgIC8vICAgb2JqLmxpa2VsaWhvb2QgPSByaXNrWzZdID8/ICcnO1xuICAgICAgICAgIC8vICAgb2JqLmltcGFjdCA9IHJpc2tbN10gPz8gJyc7XG5cbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnMubGVuZ3RoID09IDMpIHtcbiAgICAgICAgICAvLyAgICAgb2JqLnZlbG9jaXR5ID0gcmlza1s4XSA/PyAnJztcbiAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnMubGVuZ3RoID09IDQpIHtcbiAgICAgICAgICAvLyAgICAgb2JqLnZlbG9jaXR5ID0gcmlza1s4XSA/PyAnJztcbiAgICAgICAgICAvLyAgICAgb2JqLnZ1bG5lcmFiaWxpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG4gICAgICAgICAgLy8gICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY3VzdG9tX3RhZy5mb3JFYWNoKCh0YWc6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgIC8vICAgICBpZiAodGFnKSB7XG4gICAgICAgICAgLy8gICAgICAgY29uc3QgY1RhZyA9IHtcbiAgICAgICAgICAvLyAgICAgICAgIGN1c3RvbV90YWdfdmFsdWU6IHJpc2tbNiArIHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggKyBpbmRleF0gPz8gJycsXG4gICAgICAgICAgLy8gICAgICAgICBjdXN0b21fdGFnX25hbWU6IHRhZy50YWdOYW1lXG4gICAgICAgICAgLy8gICAgICAgfTtcbiAgICAgICAgICAvLyAgICAgICBjdXN0b21UYWdzLnB1c2goY1RhZyk7XG4gICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgIC8vICAgb2JqLmN1c3RvbVRhZyA9IGN1c3RvbVRhZ3M7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGxldCBvYmogPSB0aGlzLnNldFJpc2tEZXRhaWxzKHJpc2spO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8ubGlrZWxpaG9vZCAmJlxuICAgICAgICAgICAgIXRoaXMudGVtcGxhdGVJbmZvPy5saWtlbGlob29kLmluY2x1ZGVzKG9iaj8ubGlrZWxpaG9vZClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvYmo/LmltcGFjdCAmJiAhdGhpcy50ZW1wbGF0ZUluZm8/LmltcGFjdC5pbmNsdWRlcyhvYmo/LmltcGFjdCkpIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8udmVsb2NpdHkgJiZcbiAgICAgICAgICAgICF0aGlzLnRlbXBsYXRlSW5mbz8udmVsb2NpdHkuaW5jbHVkZXMob2JqPy52ZWxvY2l0eSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8udnVsbmVyYWJpbGl0eSAmJlxuICAgICAgICAgICAgIXRoaXMudGVtcGxhdGVJbmZvPy52dWxuZXJhYmlsaXR5LmluY2x1ZGVzKG9iaj8udnVsbmVyYWJpbGl0eSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iai5pc0dyY05vdFZhbGlkID0gdGhpcy52YWxpZGF0ZUdyY09iamVjdEZvclJjKFxuICAgICAgICAgICAgb2JqLnJjTmFtZSxcbiAgICAgICAgICAgIG9iai5saW5rZWRHcmNPYmplY3RcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChvYmouaXNHcmNOb3RWYWxpZCkge1xuICAgICAgICAgICAgb2JqLmlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZC5yaXNrcy5wdXNoKG9iaik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldEdyY0xpc3QoKTtcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQ/LmZpbGVzWzBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrRW1wdHlGaWxlKCkge1xuICAgIGxldCBpc0VtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICBpc0VtcHR5ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHk7XG4gIH1cblxuICBjaGVja1ZhbGlkaXR5KHJpc2s6IGFueSkge1xuICAgIGNvbnN0IHJlID0gLyZuYnNwO3w8YnI+L2c7XG4gICAgbGV0IHRyaW1tZWROYW1lID0gcmlza1swXSA/IHJpc2tbMF0udG9TdHJpbmcoKS5yZXBsYWNlKHJlLCAnJykudHJpbSgpIDogJyc7XG4gICAgdHJpbW1lZE5hbWUgPSB0cmltbWVkTmFtZS5yZXBsYWNlKC8gICsvZywgJyAnKTtcbiAgICAvLyB8fCAodGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgJiYgKCFyaXNrWzZdKSlcbiAgICBpZiAoXG4gICAgICAhdHJpbW1lZE5hbWUgfHxcbiAgICAgIChyaXNrWzNdICYmIHJpc2tbM10gPT0gcmlza1s3XSkgfHxcbiAgICAgICghcmlza1szXSAmJiB0aGlzLmRlZmF1bHRPd25lciA9PSByaXNrWzddKSB8fFxuICAgICAgIXJpc2tbMl0gfHxcbiAgICAgICF0aGlzLmZyZXF1ZW5jeVR5cGU/LmluY2x1ZGVzKHJpc2tbNV0/LnRvTG93ZXJDYXNlKCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJyk7XG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gdG9kYXlbMF07XG4gICAgY29uc3QgZmlsZU5hbWUgPVxuICAgICAgJ1ZDb21wbHkgLSBSaXNrIE1vZHVsZSAtIEFkZCBNdWx0aXBsZSBSaXNrcyAtICcgK1xuICAgICAgdGhpcy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSArXG4gICAgICAnIC0gJyArXG4gICAgICBkb3dubG9hZERhdGUgK1xuICAgICAgJy54bHN4JztcblxuICAgIHRoaXMucmlza1NlcnZpY2VcbiAgICAgIC5kb3dubG9hZFRlbXBsYXRlKHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5faWQpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDEwMCAqIChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKFxuICAgICAgICAgICAgICAgIGRhdGEuYm9keSxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veGxzeCcsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHN1Ym1pdFJpc2tCdWxrVXBsb2FkKGNvbXBsZXRlQXNzZXNzbWVudDogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IFtdO1xuICAgIHRoaXMucmlza0J1bGtVcGxvYWQucmlza3MuZm9yRWFjaCgocmlzazogYW55KSA9PiB7XG4gICAgICBsZXQgZnJlcXVlbmN5VmFsdWUgPSAnJztcbiAgICAgIGlmIChyaXNrPy5mcmVxdWVuY3kudG9Mb3dlckNhc2UoKSA9PT0gJ29uZSB0aW1lJykge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgIGZyZXF1ZW5jeVZhbHVlID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICAnJyArXG4gICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBkYXRlLmdldERhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyZXF1ZW5jeVZhbHVlID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNob3J0SGFuZF9mcmVxQ2FsKFxuICAgICAgICAgIHJpc2s/LmZyZXF1ZW5jeVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAocmlzay5pc1ZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgICB0aXRsZTogcmlzaz8ucmlza05hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHJpc2s/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5X2N1c3RvbV90YWc6IHJpc2s/LmN1c3RvbVRhZyxcbiAgICAgICAgICBhc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZTpcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSxcbiAgICAgICAgICBvd25lcjogcmlzaz8ub3duZXJcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlzaz8ub3duZXIsICdvd25lcicpXG4gICAgICAgICAgICA6IHRoaXMucmV0dXJuSWRzKHRoaXMuZGVmYXVsdE93bmVyLCAnb3duZXInKSxcbiAgICAgICAgICByaXNrX293bmVyOiByaXNrPy5yaXNrT3duZXIsXG4gICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgICAgICAgICA/IFt0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZF1cbiAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgbWFuYWdlX292ZXJzaWdodDogdGhpcy5yZXR1cm5JZHMocmlzaz8ub3ZlcnNlZXIsICdvdmVyc2VlcicpLFxuICAgICAgICAgIHJjX2lkOiB0aGlzLnJldHVybklkcyhyaXNrPy5yY05hbWUsICdyY19pZCcpLFxuICAgICAgICAgIGhlYWRfaWRzOiB0aGlzLnJldHVybklkcyhyaXNrPy5yY05hbWUsICdyY19vd25lcl9pZHMnKSwgLy8yIHRvIGJlIGFyYXlcbiAgICAgICAgICBsaW5rZWRfR1JDX2lkczogdGhpcy5mZkxpbmtlZEdyY09iamVjdHNcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlzaz8ubGlua2VkR3JjT2JqZWN0LCAnZ3JjX2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgcmF0aW5nX2FycjogW1xuICAgICAgICAgICAgcmlzaz8ubGlrZWxpaG9vZCA/IHJpc2s/Lmxpa2VsaWhvb2Quc3BsaXQoJyAtICcpWzFdIDogMCxcbiAgICAgICAgICAgIHJpc2s/LmltcGFjdCA/IHJpc2s/LmltcGFjdC5zcGxpdCgnIC0gJylbMV0gOiAwLFxuICAgICAgICAgICAgcmlzaz8udmVsb2NpdHkgPyByaXNrPy52ZWxvY2l0eS5zcGxpdCgnIC0gJylbMV0gOiAwLFxuICAgICAgICAgICAgcmlzaz8udnVsbmVyYWJpbGl0eSA/IHJpc2s/LnZ1bG5lcmFiaWxpdHkuc3BsaXQoJyAtICcpWzFdIDogMCxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1lbWJlcl9pZDogdGhpcy5tZW1iZXJJZCxcbiAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXG4gICAgICAgICAgcmlza19wcm9ncmVzc19mbGFnOiAxLFxuICAgICAgICAgIElmQXNzZXNzbWVudERvbmU6IDAsXG4gICAgICAgICAgd29ya3Nob3BfaWQ6ICcnLFxuICAgICAgICAgIGNvbXBsZXRlX2Fzc2Vzc21lbnQ6IGNvbXBsZXRlQXNzZXNzbWVudCA/IDEgOiAwLFxuICAgICAgICAgIG1pdGlnYXRpb246IHRoaXMucmV0dXJuSWRzKHJpc2s/Lm1pdGlnYXRpb25Qcmlvcml0eSwgJ21pdGlnYXRpb24nKSwgLy8zIHdyb25nXG4gICAgICAgICAgd2VpZ2h0YWdlX2VuYWJsZTogdGhpcy5zZXR0aW5nc0luZm8/LndlaWdodGFnZV9lbmFibGUsXG4gICAgICAgICAgdHJlYXRtZW50X3R5cGU6IHRoaXMuc2V0dGluZ3NJbmZvPy50cmVhdG1lbnRfY3JpdGVyaWEsXG4gICAgICAgICAgd2VpZ2h0YWdlX2RldGFpbHM6IHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscyxcbiAgICAgICAgICB3ZWlnaHRhZ2Vfc2V0X2J5OiB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX3NldF9ieSxcbiAgICAgICAgICB3ZWlnaHRhZ2Vfc3RyOiBbXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX2RldGFpbHM/LmltcGFjdC52YWx1ZSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscz8ubGlrZWxpaG9vZC52YWx1ZSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscz8udmVsb2NpdHkudmFsdWUsXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX2RldGFpbHM/LnZ1bG5lcmFiaWxpdHkudmFsdWUsXG4gICAgICAgICAgXSxcbiAgICAgICAgICAvLyBhc3Nlc3NtZW50X2RlYWRsaW5lX3NldF9ieTogdGhpcy5zZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfc2V0X2J5LCAvL2NoZWNrMSBub3QgYXBwZWFyaW5nXG4gICAgICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnk6XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8uYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnkgPz8gdGhpcy5tZW1iZXJJZCwgLy9jaGVjazEgbm90IGFwcGVhcmluZ1xuICAgICAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogdGhpcy5zZXR0aW5nc0luZm9cbiAgICAgICAgICAgID8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGVcbiAgICAgICAgICAgID8gdGhpcy5zZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5c1xuICAgICAgICAgICAgOiByaXNrPy5hc3Nlc3NtZW50RGVhZExpbmUsXG4gICAgICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IHtcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogZnJlcXVlbmN5VmFsdWUsXG4gICAgICAgICAgICBzdGFydGVkX2F0OlxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpID8/IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxuICAgICAgICAgICAgZnJlcXVlbmN5X3RpbWU6ICcxMTowMCBwbScsXG4gICAgICAgICAgICByZW1pbmRfYmVmb3JlX2RheXM6IHJpc2s/LmVtYWlsUmVtaW5kZXJcbiAgICAgICAgICAgICAgPyByaXNrPy5lbWFpbFJlbWluZGVyXG4gICAgICAgICAgICAgIDogdGhpcy5zZXREZWZhdWx0RW1haWxSZW1pbmRlclZhbHVlKHJpc2s/LmZyZXF1ZW5jeSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByaXNrX2xhYmVsOiB0aGlzLnNldFJpc2tMYWJlbChyaXNrPy5yaXNrTGFiZWwpLFxuICAgICAgICAgIG1pdGlnYXRpb25fcGxhbl9yZWNvbW1lbmRhdGlvbjogcmlzaz8ubWl0aWdhdGlvblBsYW5zID8/ICcnLFxuICAgICAgICAgIHNhbWVSaXNrUmF0aW5nc0ZvckFsbFJDOiByaXNrPy5hcHBseVNhbWVSaXNrUmF0aW5nID8/ICdObycsXG4gICAgICAgIH07XG4gICAgICAgIHBheWxvYWQucHVzaChvYmopO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmlza1NlcnZpY2UuYWRkQnVsa1Jpc2socGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3VibWl0V29ya2Zsb3coKTtcbiAgICAgICAgdGhpcy5yaXNrRGF0YSA9IHJlcztcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxuICAgICAgICAgICdhbGVydCdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc3VibWl0V29ya2Zsb3coKSB7IFxuICAgIGNvbnN0IG1lc3NhZ2UgPSB7dHlwZTonc3VibWl0J31cbiAgICBjb25zdCB0YXJnZXRPcmlnaW4gPSB0aGlzLmdldE9yaWdpbigpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luKTtcbiAgfSBcblxuICBwcml2YXRlIGdldE9yaWdpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICB9XG5cbiAgcmV0dXJuSWRzKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAncmNfaWQnOlxuICAgICAgICBjb25zdCByY0lkOiBhbnkgPSBbXTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ucmNMaXN0LmZvckVhY2goKHJjX2VsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyY19lbGVtZW50LnJjTmFtZSA9PSBpdGVtKSB7XG4gICAgICAgICAgICByY0lkLnB1c2gocmNfZWxlbWVudC5yY19pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJjSWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmNfb3duZXJfaWRzJzpcbiAgICAgICAgbGV0IG93bmVyX2lkczogYW55ID0gW107XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5mb3JFYWNoKChoZWFkZXJJZHM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChoZWFkZXJJZHMucmNOYW1lID09IGl0ZW0gJiYgaGVhZGVySWRzLm93bmVyX2lkcykge1xuICAgICAgICAgICAgb3duZXJfaWRzID0gaGVhZGVySWRzLm93bmVyX2lkcy5pbmNsdWRlcygnLCcpXG4gICAgICAgICAgICAgID8gaGVhZGVySWRzLm93bmVyX2lkcy5zcGxpdCgnLCcpLm1hcChOdW1iZXIpXG4gICAgICAgICAgICAgIDogW051bWJlcihoZWFkZXJJZHMub3duZXJfaWRzKV07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG93bmVyX2lkcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvd25lcic6XG4gICAgICAgIGNvbnN0IG93bmVySWQ6IGFueSA9IFtdO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5vd25lckxpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQubmFtZSA9PSBpdGVtKSB7XG4gICAgICAgICAgICBvd25lcklkLnB1c2goZWxlbWVudC5tZW1iZXJfaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvd25lcklkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJJZDogYW55ID0gW107XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm93bmVyTGlzdC5mb3JFYWNoKChvc19lbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAob3NfZWxlbWVudC5uYW1lID09IGl0ZW0pIHtcbiAgICAgICAgICAgIG92ZXJzZWVySWQucHVzaChvc19lbGVtZW50Lm1lbWJlcl9pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG92ZXJzZWVySWQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdtaXRpZ2F0aW9uJzpcbiAgICAgICAgbGV0IG1pdGlnYXRpb25JZDogYW55ID0gMDtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWl0aWdhdGlvbkxpc3QuZm9yRWFjaCgobWl0aWdhdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG1pdGlnYXRpb24ubWl0aWdhdGlvbk5hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgbWl0aWdhdGlvbklkID0gbWl0aWdhdGlvbi5taXRpZ2F0aW9uX2lkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtaXRpZ2F0aW9uSWQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdncmNfaWQnOlxuICAgICAgICBjb25zdCBncmNJZDogYW55ID0gW107XG4gICAgICAgIGNvbnN0IGdyY0VsZW1lbnQgPSB0aGlzLnRlbXBsYXRlSW5mby5ncmNMaXN0LmZpbmQoXG4gICAgICAgICAgKGdyY19lbGVtZW50OiBhbnkpID0+IGdyY19lbGVtZW50LmdyY05hbWUgPT09IGl0ZW1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGdyY0VsZW1lbnQgPyBbZ3JjRWxlbWVudC5ncmNJZF0gOiBbXTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5yaXNrQnVsa1VwbG9hZCA9IHtcbiAgICAgIGhlYWRlcjogW10sXG4gICAgICB3ZWlnaHRGYWN0b3JzOiBbXSxcbiAgICAgIHJpc2tzOiBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XG4gICAgICBtZW1iZXJJZDogJycsXG4gICAgICBjYXRlZ29yeUlkOiAnJyxcbiAgICAgIG93bmVyTGlzdDogW10sXG4gICAgICByY0xpc3Q6IFtdLFxuICAgICAgbWl0aWdhdGlvbkxpc3Q6IFtdLFxuICAgICAgZ3JjTGlzdDogW10sXG4gICAgfTtcblxuICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcbiAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gICAgdGhpcy5maWxlTmFtZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRhdGEgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zaG93RXhjZWwgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcbiAgfVxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxuICAgICAgICB0aGlzLmNhdGVnb3J5ID0ge1xuICAgICAgICAgIHR5cGU6ICdzdHJhdGVnaWMnLFxuICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnk6ICcnLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ05PVF9ET1dOTE9BRElORyc7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2aWV3Umlza3MnOlxuICAgICAgICB0aGlzLnZpZXdSaXNrcygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmlza0RhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgdmlld1Jpc2tzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XG4gICAgbGV0IHVybDogc3RyaW5nO1xuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XG4gICAgICB1cmwgKz0gJy9yaXNrLXJlZ2lzdGVyJztcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsICs9ICcvcmlzay9yaXNrLXJlZ2lzdGVyJztcbiAgICB9XG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh1cmwsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGFuIGFycmF5IG9mIHN0cmluZ3MgYW5kIHJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIGFycmF5IHZhbHVlcyBhcyBwcm9wZXJ0aWVzLlxuICAgKiA8L2NvZGU+XG4gICAqIEBwYXJhbSB7YW55fSByaXNrIC0gYW55ID0gW1xuICAgKiBAcmV0dXJucyBbXG4gICAqICAge1xuICAgKiAgICAgXCJyaXNrTmFtZVwiOiBcIlwiLFxuICAgKiAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlwiLFxuICAgKiAgICAgXCJyY05hbWVcIjogXCJcIixcbiAgICogICAgIFwib3duZXJcIjogXCJcIixcbiAgICogICAgIFwiZnJlcXVlbmN5XCI6IFwiXCIsXG4gICAqICAgICBcImVtYWlsUmVtaW5kZXJcIjogXCJcIixcbiAgICogICAgIFwib3ZlcnNlZXJcIjogXCJcIixcbiAgICogICAgIFwiaXNWYWxpZFwiOiBmYWxzZSxcbiAgICogICAgIFwibWl0aWdhdGlvblByaW9yaXR5XCI6IFwiXCIsXG4gICAqL1xuICBzZXRSaXNrRGV0YWlscyhyaXNrOiBhbnkpIHtcbiAgICBsZXQgb2JqOiBhbnk7XG4gICAgb2JqID0ge1xuICAgICAgcmlza05hbWU6IHJpc2tbMF0gPz8gJycsXG4gICAgICBkZXNjcmlwdGlvbjogcmlza1sxXSA/PyAnJyxcbiAgICAgIHJjTmFtZTogcmlza1syXSA/PyAnJyxcbiAgICAgIG93bmVyOiByaXNrWzNdID8/ICcnLFxuICAgICAgcmlza093bmVyOiByaXNrWzRdID8/ICcnLFxuICAgICAgZnJlcXVlbmN5OiByaXNrWzVdID8/ICcnLFxuICAgICAgZW1haWxSZW1pbmRlcjogcmlza1s2XSxcbiAgICAgIG92ZXJzZWVyOiByaXNrWzddID8/ICcnLFxuICAgICAgaXNWYWxpZDogdGhpcy5jaGVja1ZhbGlkaXR5KHJpc2spLFxuICAgICAgaXNHcmNOb3RWYWxpZDogdGhpcy52YWxpZGF0ZUdyY09iamVjdEZvclJjKFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmNOYW1lLFxuICAgICAgICB0aGlzLnNlbGVjdGVkR3JjTmFtZVxuICAgICAgKSxcbiAgICB9O1xuICAgIGxldCBpbmRleCA9IDg7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZD8uaGVhZGVyPy5pbmNsdWRlcygnUmVjb21tZW5kZWQgTWl0aWdhdGlvbiBQcmlvcml0eScpXG4gICAgKSB7XG4gICAgICBvYmpbJ21pdGlnYXRpb25Qcmlvcml0eSddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICBvYmpbJ21pdGlnYXRpb25QbGFucyddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgaW5kZXgrKztcbiAgICBvYmpbJ3Jpc2tMYWJlbCddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgaW5kZXgrKztcbiAgICBvYmpbJ2xpa2VsaWhvb2QnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgIGluZGV4Kys7XG4gICAgb2JqWydpbXBhY3QnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgIGluZGV4Kys7XG4gICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWZWxvY2l0eScpKSB7XG4gICAgICBvYmpbJ3ZlbG9jaXR5J10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkPy53ZWlnaHRGYWN0b3JzPy5pbmNsdWRlcygnVnVsbmVyYWJpbGl0eScpKSB7XG4gICAgICBvYmpbJ3Z1bG5lcmFiaWxpdHknXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZD8uaGVhZGVyPy5pbmNsdWRlcyhcbiAgICAgICAgJ0RvIHlvdSB3YW50IHRvIGFwcGx5IHRoZSBzYW1lIHJpc2sgcmF0aW5ncyBmb3IgYWxsIFJlc3BvbnNpYmlsaXR5IENlbnRlcnM/J1xuICAgICAgKVxuICAgICkge1xuICAgICAgb2JqWydhcHBseVNhbWVSaXNrUmF0aW5nJ10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkPy5oZWFkZXI/LmluY2x1ZGVzKCdMaW5rZWQgR1JDIE9iamVjdChzKScpKSB7XG4gICAgICBvYmpbJ2xpbmtlZEdyY09iamVjdCddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICBjb25zdCBjdXN0b21UYWdzOiBhbnkgPSBbXTtcbiAgICB0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jdXN0b21fdGFnPy5mb3JFYWNoKCh0YWc6IGFueSwgaTogYW55KSA9PiB7XG4gICAgICBpZiAodGFnKSB7XG4gICAgICAgIGNvbnN0IGNUYWcgPSB7XG4gICAgICAgICAgY3VzdG9tX3RhZ192YWx1ZTogcmlza1tpbmRleCArIGldID8/ICcnLFxuICAgICAgICAgIGN1c3RvbV90YWdfbmFtZTogdGFnLnRhZ05hbWUsXG4gICAgICAgIH07XG4gICAgICAgIGN1c3RvbVRhZ3MucHVzaChjVGFnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBvYmpbJ2N1c3RvbVRhZyddID0gY3VzdG9tVGFncztcbiAgICBvYmpbJ2lzVmFsaWRGcmVxdWVuY3knXSA9IHRoaXMuZnJlcXVlbmN5VHlwZT8uaW5jbHVkZXMoXG4gICAgICBvYmo/LmZyZXF1ZW5jeT8udG9Mb3dlckNhc2UoKVxuICAgICk7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgZnJlcXVlbmN5VHlwZSBpcyB3ZWVrbHksIHJldHVybiAyLCBpZiBpdCdzIG1vbnRobHksIHJldHVybiA3LCBpZiBpdCdzIHF1YXJ0ZXJseSwgcmV0dXJuIDcsXG4gICAqIGlmIGl0J3MgYmlhbm51YWwsIHJldHVybiAzMCwgaWYgaXQncyBhbm51YWwsIHJldHVybiAzMCwgaWYgaXQncyBvbmUgdGltZSwgcmV0dXJuIDE1LCBvdGhlcndpc2VcbiAgICogcmV0dXJuIDAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZnJlcXVlbmN5VHlwZV0gLSBzdHJpbmcgLSB0aGUgZnJlcXVlbmN5IHR5cGUgb2YgdGhlIHJlbWluZGVyXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZiBkYXlzIGJlZm9yZSB0aGUgZXZlbnQgdGhhdCB0aGUgcmVtaW5kZXIgc2hvdWxkIGJlIHNlbnQuXG4gICAqL1xuICBzZXREZWZhdWx0RW1haWxSZW1pbmRlclZhbHVlKGZyZXF1ZW5jeVR5cGU/OiBzdHJpbmcpOiBhbnkge1xuICAgIHN3aXRjaCAoZnJlcXVlbmN5VHlwZT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnd2Vla2x5JzpcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICBjYXNlICdtb250aGx5JzpcbiAgICAgICAgcmV0dXJuIDc7XG4gICAgICBjYXNlICdxdWFydGVybHknOlxuICAgICAgICByZXR1cm4gNztcbiAgICAgIGNhc2UgJ2JpYW5udWFsJzpcbiAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgY2FzZSAnYW5udWFsJzpcbiAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgY2FzZSAnb25lIHRpbWUnOlxuICAgICAgICByZXR1cm4gMTU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGxhYmVsIGlzICduZXcgcmlzaycsIHJldHVybiAxLCBpZiB0aGUgbGFiZWwgaXMgJ2VtZXJnaW5nL3JhcGlkbHkgY2hhbmdpbmcgcmlza3MnLCByZXR1cm4gMixcbiAgICogb3RoZXJ3aXNlIHJldHVybiAxXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGFiZWxdIC0gdGhlIGxhYmVsIG9mIHRoZSByaXNrXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoZSBsYXN0IGV4cHJlc3Npb24gaW4gdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgc2V0Umlza0xhYmVsKGxhYmVsPzogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChsYWJlbD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnbmV3bHkgaWRlbnRpZmllZCByaXNrcyc6XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgY2FzZSAncmFwaWRseSBjaGFuZ2luZyByaXNrcyc6XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFwiSWYgdGhlIGRhdGUgaXMgYSBudW1iZXIsIGNvbnZlcnQgaXQgdG8gYSBkYXRlIG9iamVjdCwgdGhlbiBjcmVhdGUgYSBuZXcgZGF0ZSBvYmplY3Qgd2l0aCB0aGVcbiAgICogdGltZXpvbmUgc2V0IHRvIHRoZSB1c2VyJ3MgdGltZXpvbmUsIHRoZW4gcmV0dXJuIHRoZSBkYXRlIGluIHRoZSBmb3JtYXQgWVlZWS1NTS1ERC5cIlxuICAgKiA8L2NvZGU+XG4gICAqIEBwYXJhbSB7YW55fSBkYXRlIC0gYW55IC0gdGhlIGRhdGUgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSB0aW1lem9uZSBvZlxuICAgKiBAcmV0dXJucyBUaGUgZGF0ZSBpcyBiZWluZyByZXR1cm5lZCBpbiB0aGUgdGltZXpvbmUgb2YgdGhlIHVzZXIuXG4gICAqL1xuICBjaGFuZ2VUaW1lWm9uZShkYXRlOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgfVxuICAgIGNvbnN0IGludkRhdGUgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xuICAgICAgICB0aW1lWm9uZTogdGhpcy5hdXRoU2VydmljZS51c2VyRGV0YWlscz8udGltZXpvbmUsXG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIG1vbWVudChpbnZEYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgfVxuXG4gIHNldEZlYXR1cmVGbGFnKCkge1xuICAgIHRoaXMuZmZMaW5rZWRHcmNPYmplY3RzID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2dyY192MScpO1xuICB9XG5cbiAgZ2V0Q29sdW1uV2lzZURhdGEgPSAoZGF0YTogYW55W11bXSk6IGFueVtdW10gPT4ge1xuICAgIHJldHVybiBkYXRhWzBdLm1hcCgoXywgY29sSW5kZXgpID0+IGRhdGEubWFwKChyb3cpID0+IHJvd1tjb2xJbmRleF0pKTtcbiAgfTtcblxuICB2YWxpZGF0ZUdyY09iamVjdEZvclJjKHNlbGVjdGVkUmM6IHN0cmluZywgc2VsZWN0ZWRHcmM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoXG4gICAgICBsZXQgY29sSW5kZXggPSAyOTtcbiAgICAgIGNvbEluZGV4IDwgdGhpcy5jb2x1bW5XaXNlRGF0YS5sZW5ndGg7XG4gICAgICBjb2xJbmRleCArPSAyXG4gICAgKSB7XG4gICAgICBjb25zdCByY05hbWVzQ29sdW1uID0gdGhpcy5jb2x1bW5XaXNlRGF0YVtjb2xJbmRleF07XG5cbiAgICAgIGlmIChyY05hbWVzQ29sdW1uWzBdID09PSBzZWxlY3RlZFJjKSB7XG4gICAgICAgIHJldHVybiAhcmNOYW1lc0NvbHVtblxuICAgICAgICAgIC5zbGljZSgxKVxuICAgICAgICAgIC5zb21lKChncmM6IGFueSkgPT4gZ3JjID09PSBzZWxlY3RlZEdyYyB8fCAhc2VsZWN0ZWRHcmMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRHcmNMaXN0KCkge1xuICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LnJpc2tzLmZvckVhY2goKHJpc2s6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyY05hbWUgPSByaXNrPy5saW5rZWRHcmNPYmplY3Q7XG4gICAgICB0aGlzLnNlbGVjdGVkUmNOYW1lID0gcmlzaz8ucmNOYW1lO1xuICAgICAgdGhpcy5zZWxlY3RlZFJjSWQgPSB0aGlzLnJldHVybklkcyhyaXNrLnJjTmFtZSwgJ3JjX2lkJyk7XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUmNJZCkge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIGxldCBjb2xJbmRleCA9IDI5O1xuICAgICAgICAgIGNvbEluZGV4IDwgdGhpcy5jb2x1bW5XaXNlRGF0YS5sZW5ndGg7XG4gICAgICAgICAgY29sSW5kZXggKz0gMlxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCByY05hbWVzQ29sdW1uID0gdGhpcy5jb2x1bW5XaXNlRGF0YVtjb2xJbmRleF07XG4gICAgICAgICAgY29uc3QgcmNJZHNDb2x1bW4gPSB0aGlzLmNvbHVtbldpc2VEYXRhW2NvbEluZGV4ICsgMV07XG4gICAgICAgICAgaWYgKHJjSWRzQ29sdW1uWzBdID09IHRoaXMuc2VsZWN0ZWRSY0lkKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHJjTmFtZXNDb2x1bW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgY29uc3QgZ3JjTmFtZSA9IHJjTmFtZXNDb2x1bW5baV07XG4gICAgICAgICAgICAgIGNvbnN0IGdyY0lkID0gcmNJZHNDb2x1bW5baV07XG4gICAgICAgICAgICAgIGlmIChncmNOYW1lICYmIGdyY0lkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JjID0ge1xuICAgICAgICAgICAgICAgICAgZ3JjTmFtZTogZ3JjTmFtZSxcbiAgICAgICAgICAgICAgICAgIGdyY0lkOiBncmNJZCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLmdyY0xpc3QucHVzaChncmMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiPlxuICA8IS0tIG1haW4gY29udGFpbmVyIHN0YXJ0cyBoZXJlIC0tPlxuICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stYm9keVwiIFtjbGFzcy5kaXNhYmxlZF09XCJzaG93Q2F0ZWdvcnlMaXN0XCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuc3ByZWFkc2hlZXRfbXVsdGlwbGVfY2F0ZWdvcnlcIiBhbHQ9XCJcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxoNCBpZD1cIm11bHRpcGxlUmlza1wiPlxuICAgICAgICBZb3UgY2FuIGFkZCBtdWx0aXBsZSByaXNrIGluIGp1c3QgdGhyZWUgZWFzeSBzdGVwc1xuICAgICAgPC9oND5cbiAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cbiAgICAgICAgPGxpPlNlbGVjdCBhIFJpc2sgQ2F0ZWdvcnkuPC9saT5cbiAgICAgICAgPGxpPkRvd25sb2FkIHRoZSB0ZW1wbGF0ZSBhbmQgZmlsbCBpbiB0aGUgZGV0YWlscy48L2xpPlxuICAgICAgICA8bGk+VXBsb2FkIHRoZSAueGxzeCBmaWxlIGFuZCB5b3UncmUgZ29vZCB0byBnbyE8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCIgW2F0dHIuaWRdPVwiJ3Njcm9sbFJlZmVyZW5jZSdcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgICAgPlJpc2sgQ2F0ZWdvcnkgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cIiFjYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ2V0Q2F0ZWdvcnlMaXN0KClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUmlzayBDYXRlZ29yeVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2F0ZWdvcnkoKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+e3sgY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZUNhdGVnb3J5KClcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd0NhdGVnb3J5TGlzdCA9IHRydWU7IHBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnlcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdOT1RfRE9XTkxPQURJTkcnXCJcbiAgICAgICAgICBjbGFzcz1cImRvd25sb2FkXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFiOzwvaT4gRG93bmxvYWQgVGVtcGxhdGVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cbiAgICAgICAgICBEb3dubG9hZCBpbiBQcm9ncmVzc1xuICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ0RPV05MT0FERUQnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxwXG4gICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICpuZ0lmPVwiaXNXcm9uZ0ZpbGUgfHwgaXNXcm9uZ0Zvcm1hdCB8fCBpc0ZpbGVFbXB0eVwiXG4gICAgICA+XG4gICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGFwcC1jYXRlZ29yeS1saXN0XG4gICpuZ0lmPVwic2hvd0NhdGVnb3J5TGlzdFwiXG4gIFtjYXRlZ29yeUxpc3RdPVwiY2F0ZWdvcnlMaXN0XCJcbiAgW3NlbGVjdGVkQ2F0ZWdvcnldPVwiY2F0ZWdvcnlcIlxuICAoc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkpPVwiXG4gICAgc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkoJGV2ZW50KTsgcGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKVxuICBcIlxuICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJzaG93Q2F0ZWdvcnlMaXN0ID0gZmFsc2U7IHBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSlcIlxuICBbbG9hZGVkXT1cIiFpc0xvYWRlclwiXG4+XG48L2FwcC1jYXRlZ29yeS1saXN0PlxuPGFwcC1idWxrLXZpZXdcbiAgKm5nSWY9XCJzaG93RXhjZWxcIlxuICBbcmlza0J1bGtVcGxvYWRdPVwicmlza0J1bGtVcGxvYWRcIlxuICBbdGVtcGxhdGVJbmZvXT1cInRlbXBsYXRlSW5mb1wiXG4gIFtkZWZhdWx0T3duZXJdPVwiZGVmYXVsdE93bmVyXCJcbiAgW2ZpbGVOYW1lXT1cImZpbGVOYW1lXCJcbiAgW2xvYWRlcl09XCJsb2FkZXJcIlxuICBbYXNzZXNzbWVudERheXNFbmFibGVdPVwiYXNzZXNzbWVudERlYWRMaW5lXCJcbiAgKHN1Ym1pdFJpc2tCdWxrVXBsb2FkKT1cInN1Ym1pdFJpc2tCdWxrVXBsb2FkKCRldmVudClcIlxuICAoY2FuY2VsKT1cInJlc2V0KClcIlxuICBbZmZMaW5rZWRHcmNPYmplY3RzXT1cImZmTGlua2VkR3JjT2JqZWN0c1wiXG4+PC9hcHAtYnVsay12aWV3PlxuXG48aW5wdXRcbiAgdHlwZT1cImZpbGVcIlxuICBbKG5nTW9kZWwpXT1cImZpbGVWYWx1ZVwiXG4gIGlkPVwiZmlsZUlucHV0XCJcbiAgY2xhc3M9XCJoaWRkZW4taW5wdXRcIlxuICAoY2hhbmdlKT1cInVwbG9hZGVkRmlsZSgkZXZlbnQpXCJcbi8+XG48YXBwLXNtaWxleS1kaWFsb2ctaW5saW5lXG4gICpuZ0lmPVwic2hvd1NtaWxleVwiXG4gIFttZXNzYWdlXT1cInNtaWxleU1lc3NhZ2VcIlxuICBbYWN0aW9uQnV0dG9uc109XCJhY3Rpb25CdXR0b25zXCJcbiAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXG4gIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCJcbj48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cbiJdfQ==
|
|
850
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FLYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBTTdCLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyx3QkFBd0I7SUE2Rm5DLFlBQ1UsV0FBMkIsRUFDM0IsV0FBd0IsRUFDeEIsUUFBeUIsRUFDekIsZ0JBQXNDLEVBQ3RDLGFBQTRCO1FBSjVCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBakd0QyxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRU4sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLElBQUksWUFB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LElBQUksQ0FBQyxZQUFZLEVBQUU7d0JBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUM3QyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDN0IsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO2dDQUNwQixNQUFNLEdBQUcsR0FBRztvQ0FDVixPQUFPLEVBQUUsT0FBTztvQ0FDaEIsS0FBSyxFQUFFLEtBQUs7aUNBQ2IsQ0FBQztnQ0FDRixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7NkJBQ3JDO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBaDdCVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix5UUMzQnJDLGtnSkFrSUE7OzRGRHZHYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCOzROQU14QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IENhdGVnb3J5TGlzdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2F0ZWdvcnlMaXN0JztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkUmlza1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hZGQtcmlzay5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5cbnR5cGUgQU9BID0gYW55W11bXTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hZGQtbXVsdGlwbGUtcmlzaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtbXVsdGlwbGUtcmlzay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1tdWx0aXBsZS1yaXNrLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY2F0ZWdvcnlMaXN0OiBDYXRlZ29yeUxpc3QgPSB7XG4gICAgc3RyYXRlZ2ljOiB7XG4gICAgICBuYW1lOiAnU1RSQVRFR0lDJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gICAgb3BlcmF0aW9uYWw6IHtcbiAgICAgIG5hbWU6ICdPUEVSQVRJT05BTCcsXG4gICAgICBkYXRhOiBbXSxcbiAgICB9LFxuICAgIGNvbXBsaWFuY2U6IHtcbiAgICAgIG5hbWU6ICdDT01QTElBTkNFJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gICAgb3RoZXJzOiB7XG4gICAgICBuYW1lOiAnT1RIRVJTJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gIH07XG5cbiAgY2F0ZWdvcnk6IGFueSA9IHtcbiAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcbiAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgfTtcblxuICByaXNrQnVsa1VwbG9hZDogYW55ID0ge1xuICAgIGhlYWRlcjogW10sXG4gICAgd2VpZ2h0RmFjdG9yczogW10sXG4gICAgcmlza3M6IFtdLFxuICB9O1xuXG4gIHRlbXBsYXRlSW5mbzogYW55ID0ge1xuICAgIG1lbWJlcklkOiAnJyxcbiAgICBjYXRlZ29yeUlkOiAnJyxcbiAgICBvd25lckxpc3Q6IFtdLFxuICAgIHJjTGlzdDogW10sXG4gICAgZ3JjTGlzdDogW10sXG4gICAgbWl0aWdhdGlvbkxpc3Q6IFtdLFxuICAgIGxpa2VsaWhvb2Q6IFtdLFxuICAgIGltcGFjdDogW10sXG4gICAgdmVsb2NpdHk6IFtdLFxuICAgIHZ1bG5lcmFiaWxpdHk6IFtdLFxuICB9O1xuXG4gIGlzTG9hZGVyID0gZmFsc2U7XG4gIHNob3dDYXRlZ29yeUxpc3QgPSBmYWxzZTtcbiAgdGVtcGxhdGVEb3dubG9hZGVkID0gZmFsc2U7XG4gIGRvd25sb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBsb2FkZXIgPSBmYWxzZTtcbiAgc2V0dGluZ3NJbmZvITogYW55O1xuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xuICBpc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gIGZpbGVOYW1lOiBhbnk7XG4gIGRhdGE6IGFueTtcbiAgYXNzZXNzbWVudERlYWRMaW5lOiBhbnk7XG4gIHNob3dFeGNlbCA9IGZhbHNlO1xuICBmaWxlVmFsdWU6IGFueTtcbiAgbWVtYmVySWQgPSAwO1xuICBvcmdhbml6YXRpb25JZCA9IDA7XG4gIGVycm9yTWVzc2FnZSA9ICcgaW52YWxpZCBmaWxlIGVycm9yJztcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xuICBkb3dubG9hZFBlcmNlbnQgPSAwO1xuICBmZkxpbmtlZEdyY09iamVjdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRSY0lkOiBudW1iZXIgPSAwO1xuICBzZWxlY3RlZFJjTmFtZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkR3JjTmFtZTogc3RyaW5nID0gJyc7XG4gIGNvbHVtbldpc2VEYXRhOiBhbnkgPSBbXTtcblxuICBzbWlsZXlNZXNzYWdlID0gYFlvdSdyZSBBbGwgU2V0ISBXZSdyZSB1cGxvYWRpbmcgdGhlIHJpc2tzLiBUaGUgcmlzayBvd25lcnMgd2lsbCBiZSBub3RpZmllZCBvbmNlIHRoZSByaXNrcyBoYXZlIGJlZW4gdXBsb2FkZWQuYDtcbiAgYWN0aW9uQnV0dG9ucyA9IFtcbiAgICB7IGJ1dHRvblRleHQ6ICdBZGQgTW9yZSBSaXNrcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmlzaycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdSaXNrcycgfSxcbiAgXTtcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xuICBtZW1iZXJfb2JqX2lkID0gJyc7XG4gIGRlZmF1bHRPd25lciA9ICcnO1xuICByaXNrRGF0YSE6IGFueTtcbiAgZnJlcXVlbmN5VHlwZSA9IFtcbiAgICAnd2Vla2x5JyxcbiAgICAnbW9udGhseScsXG4gICAgJ3F1YXJ0ZXJseScsXG4gICAgJ2JpYW5udWFsJyxcbiAgICAnYW5udWFsJyxcbiAgICAnb25lIHRpbWUnLFxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmlza1NlcnZpY2U6IEFkZFJpc2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHsgfVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5nZXRTZXR0aW5nc0luZm8oKTtcblxuICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkO1xuICAgIHRoaXMuc2V0RmVhdHVyZUZsYWcoKTtcbiAgfVxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgdGhpcy5zaG93Q2F0ZWdvcnlMaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldENhdGVnb3J5TGlzdCgpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LnN0cmF0ZWdpYy5kYXRhID0gcmVzLnN0cmF0ZWdpY19hcnI7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm9wZXJhdGlvbmFsLmRhdGEgPSByZXMub3BlcmF0aW9uYWxfYXJyO1xuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5jb21wbGlhbmNlLmRhdGEgPSByZXMuY29tcGxpYW5jZV9hcnI7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm90aGVycy5kYXRhID0gcmVzLm90aGVyc19hcnI7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHNhdmVTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5OiBhbnkpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZCAhPVxuICAgICAgY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgKSB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ05PVF9ET1dOTE9BRElORyc7XG4gICAgfVxuICAgIHRoaXMuc2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgIHRoaXMuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2Nyb2xsUmVmZXJlbmNlJyk7XG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgfVxuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICByZW1vdmVDYXRlZ29yeSgpIHtcbiAgICB0aGlzLmNhdGVnb3J5ID0ge1xuICAgICAgdHlwZTogJ3N0cmF0ZWdpYycsXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgICB9O1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICBnZXRTZXR0aW5nc0luZm8oKSB7XG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRSaXNrU2V0dGluZ0RldGFpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvID0gcmVzO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgdHJpZ2dlckJyb3dzZUZpbGUoKSB7XG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcbiAgICBpZiAoZ2V0RmlsZSkge1xuICAgICAgZ2V0RmlsZS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHVwbG9hZGVkRmlsZShldmVudDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQgPSB7XG4gICAgICAgIGhlYWRlcjogW10sXG4gICAgICAgIHdlaWdodEZhY3RvcnM6IFtdLFxuICAgICAgICByaXNrczogW10sXG4gICAgICB9O1xuICAgICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XG4gICAgICAgIG1lbWJlcklkOiAnJyxcbiAgICAgICAgY2F0ZWdvcnlJZDogJycsXG4gICAgICAgIG93bmVyTGlzdDogW10sXG4gICAgICAgIHJjTGlzdDogW10sXG4gICAgICAgIGdyY0xpc3Q6IFtdLFxuICAgICAgICBtaXRpZ2F0aW9uTGlzdDogW10sXG4gICAgICAgIGxpa2VsaWhvb2Q6IFtdLFxuICAgICAgICBpbXBhY3Q6IFtdLFxuICAgICAgICB2ZWxvY2l0eTogW10sXG4gICAgICAgIHZ1bG5lcmFiaWxpdHk6IFtdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY3JvbGxSZWZlcmVuY2UnKTtcbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZTtcblxuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjdXJseVxuICAgICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggIT09IDEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBtdWx0aXBsZSBmaWxlcycpO1xuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzFdO1xuXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xuICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lMV07XG5cbiAgICAgICAgdGhpcy5kYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7XG4gICAgICAgICAgaGVhZGVyOiAxLFxuICAgICAgICB9KSBhcyBBT0E7XG5cbiAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHsgaGVhZGVyOiAxIH0pIGFzIEFPQTtcbiAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXG4gICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbHVtbldpc2VEYXRhID0gdGhpcy5nZXRDb2x1bW5XaXNlRGF0YSh0RGF0YSk7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm1lbWJlcklkID0gdGVtcExpc3RbMF1bMjddO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUlkID0gdGVtcExpc3RbMF1bMjZdO1xuICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLmhlYWRlciA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbNF0uZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycyA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbNV0uZmlsdGVyKCh3ZWlnaHRGYWN0b3I6IGFueSkgPT4gd2VpZ2h0RmFjdG9yLmxlbmd0aCA+IDApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGVtcExpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50WzhdKSB7XG4gICAgICAgICAgICBjb25zdCBtZW1iZXIgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbOF0sXG4gICAgICAgICAgICAgIG1lbWJlcl9pZDogZWxlbWVudFs5XSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5vd25lckxpc3QucHVzaChtZW1iZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsyXSkge1xuICAgICAgICAgICAgY29uc3QgbWl0aWdhdGlvbiA9IHtcbiAgICAgICAgICAgICAgbWl0aWdhdGlvbk5hbWU6IGVsZW1lbnRbMl0sXG4gICAgICAgICAgICAgIG1pdGlnYXRpb25faWQ6IGVsZW1lbnRbM10sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWl0aWdhdGlvbkxpc3QucHVzaChtaXRpZ2F0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnRbNl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJjID0ge1xuICAgICAgICAgICAgICByY05hbWU6IGVsZW1lbnRbNl0sXG4gICAgICAgICAgICAgIHJjX2lkOiBlbGVtZW50WzddLFxuICAgICAgICAgICAgICBvd25lcl9pZHM6IGVsZW1lbnRbMTFdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZWxlbWVudFsxMl0pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5saWtlbGlob29kLnB1c2goZWxlbWVudFsxMl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsxM10pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5pbXBhY3QucHVzaChlbGVtZW50WzEzXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWZWxvY2l0eScpICYmXG4gICAgICAgICAgICBlbGVtZW50WzE0XVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8udmVsb2NpdHkucHVzaChlbGVtZW50WzE0XSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWdWxuZXJhYmlsaXR5JykgJiZcbiAgICAgICAgICAgIGVsZW1lbnRbMTVdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby52dWxuZXJhYmlsaXR5LnB1c2goZWxlbWVudFsxNV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIGZpbGUgZm9yIFJpc2sgQ2F0ZWdvcnk6JyArXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY2F0ZWdvcnlfbmFtZSArXG4gICAgICAgICAgICAnIFJFVFJZJztcblxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLmhlYWRlclswXSAhPT1cbiAgICAgICAgICAnV2hhdCByaXNrIHdvdWxkIHlvdSBsaWtlIHRvIG1hbmFnZT8qJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSBmaWxlIGZvciBSaXNrIENhdGVnb3J5OicgK1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5LmNhdGVnb3J5X25hbWUgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG5cbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGE/LnNsaWNlKDcpO1xuICAgICAgICBjb25zdCBkZWZhdWx0T3duZXIgPSB0aGlzLnRlbXBsYXRlSW5mbz8ub3duZXJMaXN0Py5maW5kSW5kZXgoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCA9PSB0aGlzLm1lbWJlcklkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChkZWZhdWx0T3duZXIgIT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudGVtcGxhdGVJbmZvLm93bmVyTGlzdFtkZWZhdWx0T3duZXJdLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgZmlsZSBmb3IgUmlzayBDYXRlZ29yeTonICtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9uYW1lICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQgfHxcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuX2lkICE9IHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5SWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgZmlsZSBmb3IgUmlzayBDYXRlZ29yeTonICtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9uYW1lICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNFbXB0eSA9IHRoaXMuY2hlY2tFbXB0eUZpbGUoKTtcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnWW91IGhhdmUgdXBsb2FkZWQgYSBibGFuayB0ZW1wbGF0ZS4gUGxlYXNlIGFkZCBkZXRhaWxzIGZvciBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQuaGVhZGVyWzZdID09PSAnUmlzayBBc3Nlc3NtZW50IERlYWRsaW5lKicpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzZXNzbWVudERlYWRMaW5lID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbGVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJpc2tEYXRhID0gdGhpcy5kYXRhLmZpbHRlcihcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxuICAgICAgICApO1xuXG4gICAgICAgIHJpc2tEYXRhLmZvckVhY2goKHJpc2s6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnN0IG9iajogYW55ID0ge1xuICAgICAgICAgIC8vICAgcmlza05hbWU6IHJpc2tbMF0gPz8gJycsXG4gICAgICAgICAgLy8gICBkZXNjcmlwdGlvbjogcmlza1sxXSA/PyAnJyxcbiAgICAgICAgICAvLyAgIHJjTmFtZTogcmlza1syXSA/PyAnJyxcbiAgICAgICAgICAvLyAgIG93bmVyOiByaXNrWzNdID8/ICcnLFxuICAgICAgICAgIC8vICAgbWl0aWdhdGlvblByaW9yaXR5OiByaXNrWzRdID8/ICcnLFxuICAgICAgICAgIC8vICAgb3ZlcnNlZXI6IHJpc2tbNV0gPz8gJycsXG4gICAgICAgICAgLy8gICBpc1ZhbGlkOiB0aGlzLmNoZWNrVmFsaWRpdHkocmlzayksXG4gICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgLy8gaWYgKHRoaXMuYXNzZXNzbWVudERlYWRMaW5lKSB7XG4gICAgICAgICAgLy8gICBvYmouYXNzZXNzbWVudERlYWRMaW5lID0gcmlza1s2XSA/PyAnJztcbiAgICAgICAgICAvLyAgIG9iai5saWtlbGlob29kID0gcmlza1s3XSA/PyAnJztcbiAgICAgICAgICAvLyAgIG9iai5pbXBhY3QgPSByaXNrWzhdID8/ICcnO1xuICAgICAgICAgIC8vICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggPT0gMykge1xuICAgICAgICAgIC8vICAgICBvYmoudmVsb2NpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggPT0gNCkge1xuICAgICAgICAgIC8vICAgICBvYmoudmVsb2NpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgICBvYmoudnVsbmVyYWJpbGl0eSA9IHJpc2tbMTBdID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG5cbiAgICAgICAgICAvLyAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jdXN0b21fdGFnLmZvckVhY2goKHRhZzogYW55LCBpbmRleDogYW55KSA9PiB7XG4gICAgICAgICAgLy8gICAgIGlmICh0YWcpIHtcbiAgICAgICAgICAvLyAgICAgICBjb25zdCBjVGFnID0ge1xuICAgICAgICAgIC8vICAgICAgICAgY3VzdG9tX3RhZ192YWx1ZTogcmlza1s3ICsgdGhpcy5yaXNrQnVsa1VwbG9hZC53ZWlnaHRGYWN0b3JzLmxlbmd0aCArIGluZGV4XSA/PyAnJyxcbiAgICAgICAgICAvLyAgICAgICAgIGN1c3RvbV90YWdfbmFtZTogdGFnLnRhZ05hbWVcbiAgICAgICAgICAvLyAgICAgICB9O1xuICAgICAgICAgIC8vICAgICAgIGN1c3RvbVRhZ3MucHVzaChjVGFnKTtcbiAgICAgICAgICAvLyAgICAgfVxuICAgICAgICAgIC8vICAgfSk7XG4gICAgICAgICAgLy8gICBvYmouY3VzdG9tVGFnID0gY3VzdG9tVGFncztcbiAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgIC8vICAgb2JqLmxpa2VsaWhvb2QgPSByaXNrWzZdID8/ICcnO1xuICAgICAgICAgIC8vICAgb2JqLmltcGFjdCA9IHJpc2tbN10gPz8gJyc7XG5cbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnMubGVuZ3RoID09IDMpIHtcbiAgICAgICAgICAvLyAgICAgb2JqLnZlbG9jaXR5ID0gcmlza1s4XSA/PyAnJztcbiAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnMubGVuZ3RoID09IDQpIHtcbiAgICAgICAgICAvLyAgICAgb2JqLnZlbG9jaXR5ID0gcmlza1s4XSA/PyAnJztcbiAgICAgICAgICAvLyAgICAgb2JqLnZ1bG5lcmFiaWxpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG4gICAgICAgICAgLy8gICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY3VzdG9tX3RhZy5mb3JFYWNoKCh0YWc6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgIC8vICAgICBpZiAodGFnKSB7XG4gICAgICAgICAgLy8gICAgICAgY29uc3QgY1RhZyA9IHtcbiAgICAgICAgICAvLyAgICAgICAgIGN1c3RvbV90YWdfdmFsdWU6IHJpc2tbNiArIHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggKyBpbmRleF0gPz8gJycsXG4gICAgICAgICAgLy8gICAgICAgICBjdXN0b21fdGFnX25hbWU6IHRhZy50YWdOYW1lXG4gICAgICAgICAgLy8gICAgICAgfTtcbiAgICAgICAgICAvLyAgICAgICBjdXN0b21UYWdzLnB1c2goY1RhZyk7XG4gICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgIC8vICAgb2JqLmN1c3RvbVRhZyA9IGN1c3RvbVRhZ3M7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGxldCBvYmogPSB0aGlzLnNldFJpc2tEZXRhaWxzKHJpc2spO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8ubGlrZWxpaG9vZCAmJlxuICAgICAgICAgICAgIXRoaXMudGVtcGxhdGVJbmZvPy5saWtlbGlob29kLmluY2x1ZGVzKG9iaj8ubGlrZWxpaG9vZClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvYmo/LmltcGFjdCAmJiAhdGhpcy50ZW1wbGF0ZUluZm8/LmltcGFjdC5pbmNsdWRlcyhvYmo/LmltcGFjdCkpIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8udmVsb2NpdHkgJiZcbiAgICAgICAgICAgICF0aGlzLnRlbXBsYXRlSW5mbz8udmVsb2NpdHkuaW5jbHVkZXMob2JqPy52ZWxvY2l0eSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8udnVsbmVyYWJpbGl0eSAmJlxuICAgICAgICAgICAgIXRoaXMudGVtcGxhdGVJbmZvPy52dWxuZXJhYmlsaXR5LmluY2x1ZGVzKG9iaj8udnVsbmVyYWJpbGl0eSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iai5pc0dyY05vdFZhbGlkID0gdGhpcy52YWxpZGF0ZUdyY09iamVjdEZvclJjKFxuICAgICAgICAgICAgb2JqLnJjTmFtZSxcbiAgICAgICAgICAgIG9iai5saW5rZWRHcmNPYmplY3RcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChvYmouaXNHcmNOb3RWYWxpZCkge1xuICAgICAgICAgICAgb2JqLmlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZC5yaXNrcy5wdXNoKG9iaik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldEdyY0xpc3QoKTtcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQ/LmZpbGVzWzBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrRW1wdHlGaWxlKCkge1xuICAgIGxldCBpc0VtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICBpc0VtcHR5ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHk7XG4gIH1cblxuICBjaGVja1ZhbGlkaXR5KHJpc2s6IGFueSkge1xuICAgIGNvbnN0IHJlID0gLyZuYnNwO3w8YnI+L2c7XG4gICAgbGV0IHRyaW1tZWROYW1lID0gcmlza1swXSA/IHJpc2tbMF0udG9TdHJpbmcoKS5yZXBsYWNlKHJlLCAnJykudHJpbSgpIDogJyc7XG4gICAgdHJpbW1lZE5hbWUgPSB0cmltbWVkTmFtZS5yZXBsYWNlKC8gICsvZywgJyAnKTtcbiAgICAvLyB8fCAodGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgJiYgKCFyaXNrWzZdKSlcbiAgICBpZiAoXG4gICAgICAhdHJpbW1lZE5hbWUgfHxcbiAgICAgIChyaXNrWzNdICYmIHJpc2tbM10gPT0gcmlza1s3XSkgfHxcbiAgICAgICghcmlza1szXSAmJiB0aGlzLmRlZmF1bHRPd25lciA9PSByaXNrWzddKSB8fFxuICAgICAgIXJpc2tbMl0gfHxcbiAgICAgICF0aGlzLmZyZXF1ZW5jeVR5cGU/LmluY2x1ZGVzKHJpc2tbNV0/LnRvTG93ZXJDYXNlKCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJyk7XG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gdG9kYXlbMF07XG4gICAgY29uc3QgZmlsZU5hbWUgPVxuICAgICAgJ1ZDb21wbHkgLSBSaXNrIE1vZHVsZSAtIEFkZCBNdWx0aXBsZSBSaXNrcyAtICcgK1xuICAgICAgdGhpcy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSArXG4gICAgICAnIC0gJyArXG4gICAgICBkb3dubG9hZERhdGUgK1xuICAgICAgJy54bHN4JztcblxuICAgIHRoaXMucmlza1NlcnZpY2VcbiAgICAgIC5kb3dubG9hZFRlbXBsYXRlKHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5faWQpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDEwMCAqIChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKFxuICAgICAgICAgICAgICAgIGRhdGEuYm9keSxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veGxzeCcsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHN1Ym1pdFJpc2tCdWxrVXBsb2FkKGNvbXBsZXRlQXNzZXNzbWVudDogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IFtdO1xuICAgIHRoaXMucmlza0J1bGtVcGxvYWQucmlza3MuZm9yRWFjaCgocmlzazogYW55KSA9PiB7XG4gICAgICBsZXQgZnJlcXVlbmN5VmFsdWUgPSAnJztcbiAgICAgIGlmIChyaXNrPy5mcmVxdWVuY3kudG9Mb3dlckNhc2UoKSA9PT0gJ29uZSB0aW1lJykge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgIGZyZXF1ZW5jeVZhbHVlID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICAnJyArXG4gICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBkYXRlLmdldERhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyZXF1ZW5jeVZhbHVlID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNob3J0SGFuZF9mcmVxQ2FsKFxuICAgICAgICAgIHJpc2s/LmZyZXF1ZW5jeVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAocmlzay5pc1ZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgICB0aXRsZTogcmlzaz8ucmlza05hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHJpc2s/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5X2N1c3RvbV90YWc6IHJpc2s/LmN1c3RvbVRhZyxcbiAgICAgICAgICBhc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZTpcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSxcbiAgICAgICAgICBvd25lcjogcmlzaz8ub3duZXJcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlzaz8ub3duZXIsICdvd25lcicpXG4gICAgICAgICAgICA6IHRoaXMucmV0dXJuSWRzKHRoaXMuZGVmYXVsdE93bmVyLCAnb3duZXInKSxcbiAgICAgICAgICByaXNrX293bmVyOiByaXNrPy5yaXNrT3duZXIsXG4gICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgICAgICAgICA/IFt0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZF1cbiAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgbWFuYWdlX292ZXJzaWdodDogdGhpcy5yZXR1cm5JZHMocmlzaz8ub3ZlcnNlZXIsICdvdmVyc2VlcicpLFxuICAgICAgICAgIHJjX2lkOiB0aGlzLnJldHVybklkcyhyaXNrPy5yY05hbWUsICdyY19pZCcpLFxuICAgICAgICAgIGhlYWRfaWRzOiB0aGlzLnJldHVybklkcyhyaXNrPy5yY05hbWUsICdyY19vd25lcl9pZHMnKSwgLy8yIHRvIGJlIGFyYXlcbiAgICAgICAgICBsaW5rZWRfR1JDX2lkczogdGhpcy5mZkxpbmtlZEdyY09iamVjdHNcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlzaz8ubGlua2VkR3JjT2JqZWN0LCAnZ3JjX2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgcmF0aW5nX2FycjogW1xuICAgICAgICAgICAgcmlzaz8ubGlrZWxpaG9vZCA/IHJpc2s/Lmxpa2VsaWhvb2Quc3BsaXQoJyAtICcpWzFdIDogMCxcbiAgICAgICAgICAgIHJpc2s/LmltcGFjdCA/IHJpc2s/LmltcGFjdC5zcGxpdCgnIC0gJylbMV0gOiAwLFxuICAgICAgICAgICAgcmlzaz8udmVsb2NpdHkgPyByaXNrPy52ZWxvY2l0eS5zcGxpdCgnIC0gJylbMV0gOiAwLFxuICAgICAgICAgICAgcmlzaz8udnVsbmVyYWJpbGl0eSA/IHJpc2s/LnZ1bG5lcmFiaWxpdHkuc3BsaXQoJyAtICcpWzFdIDogMCxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1lbWJlcl9pZDogdGhpcy5tZW1iZXJJZCxcbiAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXG4gICAgICAgICAgcmlza19wcm9ncmVzc19mbGFnOiAxLFxuICAgICAgICAgIElmQXNzZXNzbWVudERvbmU6IDAsXG4gICAgICAgICAgd29ya3Nob3BfaWQ6ICcnLFxuICAgICAgICAgIGNvbXBsZXRlX2Fzc2Vzc21lbnQ6IGNvbXBsZXRlQXNzZXNzbWVudCA/IDEgOiAwLFxuICAgICAgICAgIG1pdGlnYXRpb246IHRoaXMucmV0dXJuSWRzKHJpc2s/Lm1pdGlnYXRpb25Qcmlvcml0eSwgJ21pdGlnYXRpb24nKSwgLy8zIHdyb25nXG4gICAgICAgICAgd2VpZ2h0YWdlX2VuYWJsZTogdGhpcy5zZXR0aW5nc0luZm8/LndlaWdodGFnZV9lbmFibGUsXG4gICAgICAgICAgdHJlYXRtZW50X3R5cGU6IHRoaXMuc2V0dGluZ3NJbmZvPy50cmVhdG1lbnRfY3JpdGVyaWEsXG4gICAgICAgICAgd2VpZ2h0YWdlX2RldGFpbHM6IHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscyxcbiAgICAgICAgICB3ZWlnaHRhZ2Vfc2V0X2J5OiB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX3NldF9ieSxcbiAgICAgICAgICB3ZWlnaHRhZ2Vfc3RyOiBbXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX2RldGFpbHM/LmltcGFjdC52YWx1ZSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscz8ubGlrZWxpaG9vZC52YWx1ZSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscz8udmVsb2NpdHkudmFsdWUsXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX2RldGFpbHM/LnZ1bG5lcmFiaWxpdHkudmFsdWUsXG4gICAgICAgICAgXSxcbiAgICAgICAgICAvLyBhc3Nlc3NtZW50X2RlYWRsaW5lX3NldF9ieTogdGhpcy5zZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfc2V0X2J5LCAvL2NoZWNrMSBub3QgYXBwZWFyaW5nXG4gICAgICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnk6XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8uYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnkgPz8gdGhpcy5tZW1iZXJJZCwgLy9jaGVjazEgbm90IGFwcGVhcmluZ1xuICAgICAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogdGhpcy5zZXR0aW5nc0luZm9cbiAgICAgICAgICAgID8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGVcbiAgICAgICAgICAgID8gdGhpcy5zZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5c1xuICAgICAgICAgICAgOiByaXNrPy5hc3Nlc3NtZW50RGVhZExpbmUsXG4gICAgICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IHtcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogZnJlcXVlbmN5VmFsdWUsXG4gICAgICAgICAgICBzdGFydGVkX2F0OlxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpID8/IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxuICAgICAgICAgICAgZnJlcXVlbmN5X3RpbWU6ICcxMTowMCBwbScsXG4gICAgICAgICAgICByZW1pbmRfYmVmb3JlX2RheXM6IHJpc2s/LmVtYWlsUmVtaW5kZXJcbiAgICAgICAgICAgICAgPyByaXNrPy5lbWFpbFJlbWluZGVyXG4gICAgICAgICAgICAgIDogdGhpcy5zZXREZWZhdWx0RW1haWxSZW1pbmRlclZhbHVlKHJpc2s/LmZyZXF1ZW5jeSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByaXNrX2xhYmVsOiB0aGlzLnNldFJpc2tMYWJlbChyaXNrPy5yaXNrTGFiZWwpLFxuICAgICAgICAgIG1pdGlnYXRpb25fcGxhbl9yZWNvbW1lbmRhdGlvbjogcmlzaz8ubWl0aWdhdGlvblBsYW5zID8/ICcnLFxuICAgICAgICAgIHNhbWVSaXNrUmF0aW5nc0ZvckFsbFJDOiByaXNrPy5hcHBseVNhbWVSaXNrUmF0aW5nID8/ICdObycsXG4gICAgICAgIH07XG4gICAgICAgIHBheWxvYWQucHVzaChvYmopO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmlza1NlcnZpY2UuYWRkQnVsa1Jpc2socGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgIHRoaXMucmlza0RhdGEgPSByZXM7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybklkcyhpdGVtOiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ3JjX2lkJzpcbiAgICAgICAgY29uc3QgcmNJZDogYW55ID0gW107XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5mb3JFYWNoKChyY19lbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmNfZWxlbWVudC5yY05hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgcmNJZC5wdXNoKHJjX2VsZW1lbnQucmNfaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByY0lkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JjX293bmVyX2lkcyc6XG4gICAgICAgIGxldCBvd25lcl9pZHM6IGFueSA9IFtdO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5yY0xpc3QuZm9yRWFjaCgoaGVhZGVySWRzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaGVhZGVySWRzLnJjTmFtZSA9PSBpdGVtICYmIGhlYWRlcklkcy5vd25lcl9pZHMpIHtcbiAgICAgICAgICAgIG93bmVyX2lkcyA9IGhlYWRlcklkcy5vd25lcl9pZHMuaW5jbHVkZXMoJywnKVxuICAgICAgICAgICAgICA/IGhlYWRlcklkcy5vd25lcl9pZHMuc3BsaXQoJywnKS5tYXAoTnVtYmVyKVxuICAgICAgICAgICAgICA6IFtOdW1iZXIoaGVhZGVySWRzLm93bmVyX2lkcyldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvd25lcl9pZHM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3duZXInOlxuICAgICAgICBjb25zdCBvd25lcklkOiBhbnkgPSBbXTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ub3duZXJMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50Lm5hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgb3duZXJJZC5wdXNoKGVsZW1lbnQubWVtYmVyX2lkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3duZXJJZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlcic6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVySWQ6IGFueSA9IFtdO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5vd25lckxpc3QuZm9yRWFjaCgob3NfZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9zX2VsZW1lbnQubmFtZSA9PSBpdGVtKSB7XG4gICAgICAgICAgICBvdmVyc2VlcklkLnB1c2gob3NfZWxlbWVudC5tZW1iZXJfaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvdmVyc2VlcklkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbWl0aWdhdGlvbic6XG4gICAgICAgIGxldCBtaXRpZ2F0aW9uSWQ6IGFueSA9IDA7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm1pdGlnYXRpb25MaXN0LmZvckVhY2goKG1pdGlnYXRpb246IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChtaXRpZ2F0aW9uLm1pdGlnYXRpb25OYW1lID09IGl0ZW0pIHtcbiAgICAgICAgICAgIG1pdGlnYXRpb25JZCA9IG1pdGlnYXRpb24ubWl0aWdhdGlvbl9pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWl0aWdhdGlvbklkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZ3JjX2lkJzpcbiAgICAgICAgY29uc3QgZ3JjSWQ6IGFueSA9IFtdO1xuICAgICAgICBjb25zdCBncmNFbGVtZW50ID0gdGhpcy50ZW1wbGF0ZUluZm8uZ3JjTGlzdC5maW5kKFxuICAgICAgICAgIChncmNfZWxlbWVudDogYW55KSA9PiBncmNfZWxlbWVudC5ncmNOYW1lID09PSBpdGVtXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBncmNFbGVtZW50ID8gW2dyY0VsZW1lbnQuZ3JjSWRdIDogW107XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMucmlza0J1bGtVcGxvYWQgPSB7XG4gICAgICBoZWFkZXI6IFtdLFxuICAgICAgd2VpZ2h0RmFjdG9yczogW10sXG4gICAgICByaXNrczogW10sXG4gICAgfTtcblxuICAgIHRoaXMudGVtcGxhdGVJbmZvID0ge1xuICAgICAgbWVtYmVySWQ6ICcnLFxuICAgICAgY2F0ZWdvcnlJZDogJycsXG4gICAgICBvd25lckxpc3Q6IFtdLFxuICAgICAgcmNMaXN0OiBbXSxcbiAgICAgIG1pdGlnYXRpb25MaXN0OiBbXSxcbiAgICAgIGdyY0xpc3Q6IFtdLFxuICAgIH07XG5cbiAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXNzZXNzbWVudERlYWRMaW5lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gIH1cbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdhZGRNb3JlJzpcbiAgICAgICAgdGhpcy5jYXRlZ29yeSA9IHtcbiAgICAgICAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcbiAgICAgICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdOT1RfRE9XTkxPQURJTkcnO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmlld1Jpc2tzJzpcbiAgICAgICAgdGhpcy52aWV3Umlza3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLnJpc2tEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHZpZXdSaXNrcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgfVxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsICs9ICcvcmlzay1yZWdpc3Rlcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCArPSAnL3Jpc2svcmlzay1yZWdpc3Rlcic7XG4gICAgfVxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhbiBhcnJheSBvZiBzdHJpbmdzIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBhcnJheSB2YWx1ZXMgYXMgcHJvcGVydGllcy5cbiAgICogPC9jb2RlPlxuICAgKiBAcGFyYW0ge2FueX0gcmlzayAtIGFueSA9IFtcbiAgICogQHJldHVybnMgW1xuICAgKiAgIHtcbiAgICogICAgIFwicmlza05hbWVcIjogXCJcIixcbiAgICogICAgIFwiZGVzY3JpcHRpb25cIjogXCJcIixcbiAgICogICAgIFwicmNOYW1lXCI6IFwiXCIsXG4gICAqICAgICBcIm93bmVyXCI6IFwiXCIsXG4gICAqICAgICBcImZyZXF1ZW5jeVwiOiBcIlwiLFxuICAgKiAgICAgXCJlbWFpbFJlbWluZGVyXCI6IFwiXCIsXG4gICAqICAgICBcIm92ZXJzZWVyXCI6IFwiXCIsXG4gICAqICAgICBcImlzVmFsaWRcIjogZmFsc2UsXG4gICAqICAgICBcIm1pdGlnYXRpb25Qcmlvcml0eVwiOiBcIlwiLFxuICAgKi9cbiAgc2V0Umlza0RldGFpbHMocmlzazogYW55KSB7XG4gICAgbGV0IG9iajogYW55O1xuICAgIG9iaiA9IHtcbiAgICAgIHJpc2tOYW1lOiByaXNrWzBdID8/ICcnLFxuICAgICAgZGVzY3JpcHRpb246IHJpc2tbMV0gPz8gJycsXG4gICAgICByY05hbWU6IHJpc2tbMl0gPz8gJycsXG4gICAgICBvd25lcjogcmlza1szXSA/PyAnJyxcbiAgICAgIHJpc2tPd25lcjogcmlza1s0XSA/PyAnJyxcbiAgICAgIGZyZXF1ZW5jeTogcmlza1s1XSA/PyAnJyxcbiAgICAgIGVtYWlsUmVtaW5kZXI6IHJpc2tbNl0sXG4gICAgICBvdmVyc2Vlcjogcmlza1s3XSA/PyAnJyxcbiAgICAgIGlzVmFsaWQ6IHRoaXMuY2hlY2tWYWxpZGl0eShyaXNrKSxcbiAgICAgIGlzR3JjTm90VmFsaWQ6IHRoaXMudmFsaWRhdGVHcmNPYmplY3RGb3JSYyhcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJjTmFtZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyY05hbWVcbiAgICAgICksXG4gICAgfTtcbiAgICBsZXQgaW5kZXggPSA4O1xuICAgIGlmIChcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LmhlYWRlcj8uaW5jbHVkZXMoJ1JlY29tbWVuZGVkIE1pdGlnYXRpb24gUHJpb3JpdHknKVxuICAgICkge1xuICAgICAgb2JqWydtaXRpZ2F0aW9uUHJpb3JpdHknXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgb2JqWydtaXRpZ2F0aW9uUGxhbnMnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgIGluZGV4Kys7XG4gICAgb2JqWydyaXNrTGFiZWwnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgIGluZGV4Kys7XG4gICAgb2JqWydsaWtlbGlob29kJ10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICBpbmRleCsrO1xuICAgIG9ialsnaW1wYWN0J10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICBpbmRleCsrO1xuICAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkPy53ZWlnaHRGYWN0b3JzPy5pbmNsdWRlcygnVmVsb2NpdHknKSkge1xuICAgICAgb2JqWyd2ZWxvY2l0eSddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICBpZiAodGhpcy5yaXNrQnVsa1VwbG9hZD8ud2VpZ2h0RmFjdG9ycz8uaW5jbHVkZXMoJ1Z1bG5lcmFiaWxpdHknKSkge1xuICAgICAgb2JqWyd2dWxuZXJhYmlsaXR5J10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LmhlYWRlcj8uaW5jbHVkZXMoXG4gICAgICAgICdEbyB5b3Ugd2FudCB0byBhcHBseSB0aGUgc2FtZSByaXNrIHJhdGluZ3MgZm9yIGFsbCBSZXNwb25zaWJpbGl0eSBDZW50ZXJzPydcbiAgICAgIClcbiAgICApIHtcbiAgICAgIG9ialsnYXBwbHlTYW1lUmlza1JhdGluZyddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICBpZiAodGhpcy5yaXNrQnVsa1VwbG9hZD8uaGVhZGVyPy5pbmNsdWRlcygnTGlua2VkIEdSQyBPYmplY3QocyknKSkge1xuICAgICAgb2JqWydsaW5rZWRHcmNPYmplY3QnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG4gICAgdGhpcy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY3VzdG9tX3RhZz8uZm9yRWFjaCgodGFnOiBhbnksIGk6IGFueSkgPT4ge1xuICAgICAgaWYgKHRhZykge1xuICAgICAgICBjb25zdCBjVGFnID0ge1xuICAgICAgICAgIGN1c3RvbV90YWdfdmFsdWU6IHJpc2tbaW5kZXggKyBpXSA/PyAnJyxcbiAgICAgICAgICBjdXN0b21fdGFnX25hbWU6IHRhZy50YWdOYW1lLFxuICAgICAgICB9O1xuICAgICAgICBjdXN0b21UYWdzLnB1c2goY1RhZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb2JqWydjdXN0b21UYWcnXSA9IGN1c3RvbVRhZ3M7XG4gICAgb2JqWydpc1ZhbGlkRnJlcXVlbmN5J10gPSB0aGlzLmZyZXF1ZW5jeVR5cGU/LmluY2x1ZGVzKFxuICAgICAgb2JqPy5mcmVxdWVuY3k/LnRvTG93ZXJDYXNlKClcbiAgICApO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGZyZXF1ZW5jeVR5cGUgaXMgd2Vla2x5LCByZXR1cm4gMiwgaWYgaXQncyBtb250aGx5LCByZXR1cm4gNywgaWYgaXQncyBxdWFydGVybHksIHJldHVybiA3LFxuICAgKiBpZiBpdCdzIGJpYW5udWFsLCByZXR1cm4gMzAsIGlmIGl0J3MgYW5udWFsLCByZXR1cm4gMzAsIGlmIGl0J3Mgb25lIHRpbWUsIHJldHVybiAxNSwgb3RoZXJ3aXNlXG4gICAqIHJldHVybiAwLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZyZXF1ZW5jeVR5cGVdIC0gc3RyaW5nIC0gdGhlIGZyZXF1ZW5jeSB0eXBlIG9mIHRoZSByZW1pbmRlclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhlIGV2ZW50IHRoYXQgdGhlIHJlbWluZGVyIHNob3VsZCBiZSBzZW50LlxuICAgKi9cbiAgc2V0RGVmYXVsdEVtYWlsUmVtaW5kZXJWYWx1ZShmcmVxdWVuY3lUeXBlPzogc3RyaW5nKTogYW55IHtcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeVR5cGU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ3dlZWtseSc6XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgY2FzZSAnbW9udGhseSc6XG4gICAgICAgIHJldHVybiA3O1xuICAgICAgY2FzZSAncXVhcnRlcmx5JzpcbiAgICAgICAgcmV0dXJuIDc7XG4gICAgICBjYXNlICdiaWFubnVhbCc6XG4gICAgICAgIHJldHVybiAzMDtcbiAgICAgIGNhc2UgJ2FubnVhbCc6XG4gICAgICAgIHJldHVybiAzMDtcbiAgICAgIGNhc2UgJ29uZSB0aW1lJzpcbiAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBsYWJlbCBpcyAnbmV3IHJpc2snLCByZXR1cm4gMSwgaWYgdGhlIGxhYmVsIGlzICdlbWVyZ2luZy9yYXBpZGx5IGNoYW5naW5nIHJpc2tzJywgcmV0dXJuIDIsXG4gICAqIG90aGVyd2lzZSByZXR1cm4gMVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xhYmVsXSAtIHRoZSBsYWJlbCBvZiB0aGUgcmlza1xuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBleHByZXNzaW9uIGluIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHNldFJpc2tMYWJlbChsYWJlbD86IHN0cmluZykge1xuICAgIHN3aXRjaCAobGFiZWw/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ25ld2x5IGlkZW50aWZpZWQgcmlza3MnOlxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGNhc2UgJ3JhcGlkbHkgY2hhbmdpbmcgcmlza3MnOlxuICAgICAgICByZXR1cm4gMjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBcIklmIHRoZSBkYXRlIGlzIGEgbnVtYmVyLCBjb252ZXJ0IGl0IHRvIGEgZGF0ZSBvYmplY3QsIHRoZW4gY3JlYXRlIGEgbmV3IGRhdGUgb2JqZWN0IHdpdGggdGhlXG4gICAqIHRpbWV6b25lIHNldCB0byB0aGUgdXNlcidzIHRpbWV6b25lLCB0aGVuIHJldHVybiB0aGUgZGF0ZSBpbiB0aGUgZm9ybWF0IFlZWVktTU0tREQuXCJcbiAgICogPC9jb2RlPlxuICAgKiBAcGFyYW0ge2FueX0gZGF0ZSAtIGFueSAtIHRoZSBkYXRlIHlvdSB3YW50IHRvIGNoYW5nZSB0aGUgdGltZXpvbmUgb2ZcbiAgICogQHJldHVybnMgVGhlIGRhdGUgaXMgYmVpbmcgcmV0dXJuZWQgaW4gdGhlIHRpbWV6b25lIG9mIHRoZSB1c2VyLlxuICAgKi9cbiAgY2hhbmdlVGltZVpvbmUoZGF0ZTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIH1cbiAgICBjb25zdCBpbnZEYXRlID0gbmV3IERhdGUoXG4gICAgICBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgICAgdGltZVpvbmU6IHRoaXMuYXV0aFNlcnZpY2UudXNlckRldGFpbHM/LnRpbWV6b25lLFxuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBtb21lbnQoaW52RGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gIH1cblxuICBzZXRGZWF0dXJlRmxhZygpIHtcbiAgICB0aGlzLmZmTGlua2VkR3JjT2JqZWN0cyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9ncmNfdjEnKTtcbiAgfVxuXG4gIGdldENvbHVtbldpc2VEYXRhID0gKGRhdGE6IGFueVtdW10pOiBhbnlbXVtdID0+IHtcbiAgICByZXR1cm4gZGF0YVswXS5tYXAoKF8sIGNvbEluZGV4KSA9PiBkYXRhLm1hcCgocm93KSA9PiByb3dbY29sSW5kZXhdKSk7XG4gIH07XG5cbiAgdmFsaWRhdGVHcmNPYmplY3RGb3JSYyhzZWxlY3RlZFJjOiBzdHJpbmcsIHNlbGVjdGVkR3JjOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKFxuICAgICAgbGV0IGNvbEluZGV4ID0gMjk7XG4gICAgICBjb2xJbmRleCA8IHRoaXMuY29sdW1uV2lzZURhdGEubGVuZ3RoO1xuICAgICAgY29sSW5kZXggKz0gMlxuICAgICkge1xuICAgICAgY29uc3QgcmNOYW1lc0NvbHVtbiA9IHRoaXMuY29sdW1uV2lzZURhdGFbY29sSW5kZXhdO1xuXG4gICAgICBpZiAocmNOYW1lc0NvbHVtblswXSA9PT0gc2VsZWN0ZWRSYykge1xuICAgICAgICByZXR1cm4gIXJjTmFtZXNDb2x1bW5cbiAgICAgICAgICAuc2xpY2UoMSlcbiAgICAgICAgICAuc29tZSgoZ3JjOiBhbnkpID0+IGdyYyA9PT0gc2VsZWN0ZWRHcmMgfHwgIXNlbGVjdGVkR3JjKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0R3JjTGlzdCgpIHtcbiAgICB0aGlzLnJpc2tCdWxrVXBsb2FkPy5yaXNrcy5mb3JFYWNoKChyaXNrOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcmNOYW1lID0gcmlzaz8ubGlua2VkR3JjT2JqZWN0O1xuICAgICAgdGhpcy5zZWxlY3RlZFJjTmFtZSA9IHJpc2s/LnJjTmFtZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSY0lkID0gdGhpcy5yZXR1cm5JZHMocmlzay5yY05hbWUsICdyY19pZCcpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJjSWQpIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBsZXQgY29sSW5kZXggPSAyOTtcbiAgICAgICAgICBjb2xJbmRleCA8IHRoaXMuY29sdW1uV2lzZURhdGEubGVuZ3RoO1xuICAgICAgICAgIGNvbEluZGV4ICs9IDJcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgcmNOYW1lc0NvbHVtbiA9IHRoaXMuY29sdW1uV2lzZURhdGFbY29sSW5kZXhdO1xuICAgICAgICAgIGNvbnN0IHJjSWRzQ29sdW1uID0gdGhpcy5jb2x1bW5XaXNlRGF0YVtjb2xJbmRleCArIDFdO1xuICAgICAgICAgIGlmIChyY0lkc0NvbHVtblswXSA9PSB0aGlzLnNlbGVjdGVkUmNJZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCByY05hbWVzQ29sdW1uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGdyY05hbWUgPSByY05hbWVzQ29sdW1uW2ldO1xuICAgICAgICAgICAgICBjb25zdCBncmNJZCA9IHJjSWRzQ29sdW1uW2ldO1xuICAgICAgICAgICAgICBpZiAoZ3JjTmFtZSAmJiBncmNJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyYyA9IHtcbiAgICAgICAgICAgICAgICAgIGdyY05hbWU6IGdyY05hbWUsXG4gICAgICAgICAgICAgICAgICBncmNJZDogZ3JjSWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5ncmNMaXN0LnB1c2goZ3JjKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2tcIj5cbiAgPCEtLSBtYWluIGNvbnRhaW5lciBzdGFydHMgaGVyZSAtLT5cbiAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWJvZHlcIiBbY2xhc3MuZGlzYWJsZWRdPVwic2hvd0NhdGVnb3J5TGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnNwcmVhZHNoZWV0X211bHRpcGxlX2NhdGVnb3J5XCIgYWx0PVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8aDQgaWQ9XCJtdWx0aXBsZVJpc2tcIj5cbiAgICAgICAgWW91IGNhbiBhZGQgbXVsdGlwbGUgcmlzayBpbiBqdXN0IHRocmVlIGVhc3kgc3RlcHNcbiAgICAgIDwvaDQ+XG4gICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgIDxsaT5TZWxlY3QgYSBSaXNrIENhdGVnb3J5LjwvbGk+XG4gICAgICAgIDxsaT5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgYW5kIGZpbGwgaW4gdGhlIGRldGFpbHMuPC9saT5cbiAgICAgICAgPGxpPlVwbG9hZCB0aGUgLnhsc3ggZmlsZSBhbmQgeW91J3JlIGdvb2QgdG8gZ28hPC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgID5SaXNrIENhdGVnb3J5IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcbiAgICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCIhY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdldENhdGVnb3J5TGlzdCgpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJpc2sgQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNhdGVnb3J5KClcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IGNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmVDYXRlZ29yeSgpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dDYXRlZ29yeUxpc3QgPSB0cnVlOyBwaWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIFRlbXBsYXRlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCI+XG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XG4gICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8cFxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXQgfHwgaXNGaWxlRW1wdHlcIlxuICAgICAgPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtY2F0ZWdvcnktbGlzdFxuICAqbmdJZj1cInNob3dDYXRlZ29yeUxpc3RcIlxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3J5TGlzdFwiXG4gIFtzZWxlY3RlZENhdGVnb3J5XT1cImNhdGVnb3J5XCJcbiAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cIlxuICAgIHNhdmVTZWxlY3RlZENhdGVnb3J5KCRldmVudCk7IHBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSlcbiAgXCJcbiAgKGNsb3NlQ2F0ZWdvcmllc0xpc3QpPVwic2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlOyBwaWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpXCJcbiAgW2xvYWRlZF09XCIhaXNMb2FkZXJcIlxuPlxuPC9hcHAtY2F0ZWdvcnktbGlzdD5cbjxhcHAtYnVsay12aWV3XG4gICpuZ0lmPVwic2hvd0V4Y2VsXCJcbiAgW3Jpc2tCdWxrVXBsb2FkXT1cInJpc2tCdWxrVXBsb2FkXCJcbiAgW3RlbXBsYXRlSW5mb109XCJ0ZW1wbGF0ZUluZm9cIlxuICBbZGVmYXVsdE93bmVyXT1cImRlZmF1bHRPd25lclwiXG4gIFtmaWxlTmFtZV09XCJmaWxlTmFtZVwiXG4gIFtsb2FkZXJdPVwibG9hZGVyXCJcbiAgW2Fzc2Vzc21lbnREYXlzRW5hYmxlXT1cImFzc2Vzc21lbnREZWFkTGluZVwiXG4gIChzdWJtaXRSaXNrQnVsa1VwbG9hZCk9XCJzdWJtaXRSaXNrQnVsa1VwbG9hZCgkZXZlbnQpXCJcbiAgKGNhbmNlbCk9XCJyZXNldCgpXCJcbiAgW2ZmTGlua2VkR3JjT2JqZWN0c109XCJmZkxpbmtlZEdyY09iamVjdHNcIlxuPjwvYXBwLWJ1bGstdmlldz5cblxuPGlucHV0XG4gIHR5cGU9XCJmaWxlXCJcbiAgWyhuZ01vZGVsKV09XCJmaWxlVmFsdWVcIlxuICBpZD1cImZpbGVJbnB1dFwiXG4gIGNsYXNzPVwiaGlkZGVuLWlucHV0XCJcbiAgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiXG4vPlxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIlxuICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiXG4+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XG4iXX0=
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export const API = {
|
|
2
2
|
subscriptionList: `subscriptionList`,
|
|
3
|
-
goToPolicyWorkroom: `/all/policy/workroom?id=`,
|
|
4
|
-
editPolicy: `/all/policy/edit-policy?id=`,
|
|
5
3
|
};
|
|
6
|
-
|
|
4
|
+
export const PROGRAM_LIST_API = {
|
|
5
|
+
programList: 'sailsProgramList',
|
|
6
|
+
categoryList: 'sailsProgramCategories',
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2NvbnN0YW50cy9hcGkuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNqQixnQkFBZ0IsRUFBRSxrQkFBa0I7Q0FDckMsQ0FBQztBQUdGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLFdBQVcsRUFBRSxrQkFBa0I7SUFDL0IsWUFBWSxFQUFFLHdCQUF3QjtDQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFQSSA9IHtcbiAgc3Vic2NyaXB0aW9uTGlzdDogYHN1YnNjcmlwdGlvbkxpc3RgLFxufTtcblxuXG5leHBvcnQgY29uc3QgUFJPR1JBTV9MSVNUX0FQSSA9IHtcbiAgcHJvZ3JhbUxpc3Q6ICdzYWlsc1Byb2dyYW1MaXN0JyxcbiAgY2F0ZWdvcnlMaXN0OiAnc2FpbHNQcm9ncmFtQ2F0ZWdvcmllcycsXG59O1xuIl19
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
export const MOCK_PROGRAMS = [
|
|
2
|
+
{
|
|
3
|
+
"id": "A2B4C6",
|
|
4
|
+
"name": "P1",
|
|
5
|
+
"type": "regulations",
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"id": "X7Y9Z8",
|
|
9
|
+
"name": "Standard A",
|
|
10
|
+
"type": "standards",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "G7H2J9",
|
|
14
|
+
"name": "Internal Control B",
|
|
15
|
+
"type": "internal_controls",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "K4L6M1",
|
|
19
|
+
"name": "Other Document C",
|
|
20
|
+
"type": "others",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "N8P5Q7",
|
|
24
|
+
"name": "Regulation X",
|
|
25
|
+
"type": "regulations",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "R3S9T4",
|
|
29
|
+
"name": "Standard Y",
|
|
30
|
+
"type": "standards",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "U6V2W8",
|
|
34
|
+
"name": "Internal Control Z",
|
|
35
|
+
"type": "internal_controls",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "B9C4D7",
|
|
39
|
+
"name": "Other Document D",
|
|
40
|
+
"type": "others",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "E5F8H2",
|
|
44
|
+
"name": "Regulation AA",
|
|
45
|
+
"type": "regulations",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "J3K7L4",
|
|
49
|
+
"name": "Standard BB",
|
|
50
|
+
"type": "standards",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "M6N9P5",
|
|
54
|
+
"name": "Internal Control CC",
|
|
55
|
+
"type": "internal_controls",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "Q2R8S3",
|
|
59
|
+
"name": "Other Document E",
|
|
60
|
+
"type": "others",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "T7U4V1",
|
|
64
|
+
"name": "Regulation BB",
|
|
65
|
+
"type": "regulations",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "W5X8Y6",
|
|
69
|
+
"name": "Standard CC",
|
|
70
|
+
"type": "standards",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "Z2A6B9",
|
|
74
|
+
"name": "Internal Control DD",
|
|
75
|
+
"type": "internal_controls",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "C4D7E2",
|
|
79
|
+
"name": "Other Document F",
|
|
80
|
+
"type": "others",
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
export const MOCK_CATEGORIES = [
|
|
84
|
+
{ id: "A2B4C6", name: "P1", description: "Primary regulation document", level: 1, parent: null },
|
|
85
|
+
{ id: "D5E8F3", name: "Standard A", description: "Industry standard document", level: 1, parent: "A2B4C6" },
|
|
86
|
+
{ id: "G7H2J9", name: "Internal Control B", description: "Internal guidelines", level: 1, parent: "A2B4C6" },
|
|
87
|
+
{ id: "K4L6M1", name: "Other Document C", description: "Miscellaneous document", level: 1, parent: "A2B4C6" },
|
|
88
|
+
{ id: "N8P5Q7", name: "Regulation X", description: "Legal framework", level: 2, parent: "A2B4C6" },
|
|
89
|
+
{ id: "R3S9T4", name: "Standard Y", description: "Updated standard", level: 2, parent: "D5E8F3" },
|
|
90
|
+
{ id: "U6V2W8", name: "Internal Control Z", description: "Control procedures", level: 2, parent: "G7H2J9" },
|
|
91
|
+
{ id: "B9C4D7", name: "Other Document D", description: "General information", level: 2, parent: "K4L6M1" },
|
|
92
|
+
{ id: "E5F8H2", name: "Regulation AA", description: "Supplementary regulation", level: 3, parent: "N8P5Q7" },
|
|
93
|
+
{ id: "J3K7L4", name: "Standard BB", description: "New compliance standard", level: 3, parent: "R3S9T4" },
|
|
94
|
+
{ id: "M6N9P5", name: "Internal Control CC", description: "Advanced controls", level: 3, parent: "U6V2W8" },
|
|
95
|
+
{ id: "Q2R8S3", name: "Other Document E", description: "Additional reference", level: 3, parent: "B9C4D7" },
|
|
96
|
+
{ id: "T7U4V1", name: "Regulation BB", description: "Regulatory expansion", level: 4, parent: "E5F8H2" },
|
|
97
|
+
{ id: "W5X8Y6", name: "Standard CC", description: "Industry benchmark", level: 4, parent: "J3K7L4" },
|
|
98
|
+
{ id: "Z2A6B9", name: "Internal Control DD", description: "Internal audit policies", level: 4, parent: "M6N9P5" },
|
|
99
|
+
{ id: "C4D7E2", name: "Other Document F", description: "Extra documentation", level: 4, parent: "Q2R8S3" },
|
|
100
|
+
{ id: "F8H3J6", name: "Regulation CC", description: "Additional compliance rules", level: 5, parent: "T7U4V1" },
|
|
101
|
+
{ id: "K5L9M4", name: "Standard DD", description: "Revised guidelines", level: 5, parent: "W5X8Y6" },
|
|
102
|
+
{ id: "N2P6Q8", name: "Internal Control EE", description: "Operational security measures", level: 5, parent: "Z2A6B9" },
|
|
103
|
+
{ id: "R7S3T5", name: "Other Document G", description: "Supplementary notes", level: 5, parent: "C4D7E2" }
|
|
104
|
+
];
|
|
105
|
+
function addParentTreeToCategories(categories) {
|
|
106
|
+
// Create a map for quick lookup of categories by ID
|
|
107
|
+
const categoryMap = new Map(categories.map(category => [category.id, category]));
|
|
108
|
+
function getParentTree(category) {
|
|
109
|
+
const parentTree = [];
|
|
110
|
+
let currentParent = category.parent;
|
|
111
|
+
while (currentParent) {
|
|
112
|
+
const parentCategory = categoryMap.get(currentParent);
|
|
113
|
+
if (parentCategory) {
|
|
114
|
+
parentTree.push(parentCategory.name);
|
|
115
|
+
currentParent = parentCategory.parent;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return parentTree;
|
|
122
|
+
}
|
|
123
|
+
// First, add parentTree to all categories
|
|
124
|
+
const categoriesWithParentTree = categories.map(category => ({
|
|
125
|
+
...category,
|
|
126
|
+
parentTree: getParentTree(category)
|
|
127
|
+
}));
|
|
128
|
+
// Sort categories to group children with parents
|
|
129
|
+
return categoriesWithParentTree.sort((a, b) => {
|
|
130
|
+
// Compare parent trees first
|
|
131
|
+
const minLength = Math.min(a.parentTree.length, b.parentTree.length);
|
|
132
|
+
for (let i = 0; i < minLength; i++) {
|
|
133
|
+
if (a.parentTree[i] !== b.parentTree[i]) {
|
|
134
|
+
return a.parentTree[i].localeCompare(b.parentTree[i]);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// If one is a parent of the other, parent should come first
|
|
138
|
+
if (a.id === b.parent)
|
|
139
|
+
return -1;
|
|
140
|
+
if (b.id === a.parent)
|
|
141
|
+
return 1;
|
|
142
|
+
// If they share the same parent, sort by name
|
|
143
|
+
if (a.parent === b.parent) {
|
|
144
|
+
return a.name.localeCompare(b.name);
|
|
145
|
+
}
|
|
146
|
+
// If they're at the same level, sort by name
|
|
147
|
+
return a.name.localeCompare(b.name);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// Example usage:
|
|
151
|
+
const categoriesWithParentTree = addParentTreeToCategories(MOCK_CATEGORIES);
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2NvbnN0YW50cy9tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZTtJQUN2QztRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLElBQUk7UUFDWixNQUFNLEVBQUUsYUFBYTtLQUN0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsWUFBWTtRQUNwQixNQUFNLEVBQUUsV0FBVztLQUVwQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLE1BQU0sRUFBRSxtQkFBbUI7S0FHNUI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsUUFBUTtLQUdqQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsY0FBYztRQUN0QixNQUFNLEVBQUUsYUFBYTtLQUd0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsWUFBWTtRQUNwQixNQUFNLEVBQUUsV0FBVztLQUdwQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLE1BQU0sRUFBRSxtQkFBbUI7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsUUFBUTtLQUNqQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsYUFBYTtLQUN0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUUsYUFBYTtRQUNyQixNQUFNLEVB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VSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7UUFFRCw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU07WUFBRSxPQUFPLENBQUMsQ0FBQztRQUVoQyw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7UUFFRCw2Q0FBNkM7UUFDN0MsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsaUJBQWlCO0FBQ2pCLE1BQU0sd0JBQXdCLEdBQUcseUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb2NrLWRhdGEudHNcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9wcm9ncmFtLWxpc3QvaW50ZXJmYWNlcy9saXN0LWl0ZW0uaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IE1PQ0tfUFJPR1JBTVM6IExpc3RJdGVtW10gPSBbXG4gIHtcbiAgICBcImlkXCI6IFwiQTJCNEM2XCIsXG4gICAgXCJuYW1lXCI6IFwiUDFcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlg3WTlaOFwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIEFcIixcbiAgICBcInR5cGVcIjogXCJzdGFuZGFyZHNcIixcbiAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkc3SDJKOVwiLFxuICAgIFwibmFtZVwiOiBcIkludGVybmFsIENvbnRyb2wgQlwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICBcbiAgfSxcbiAge1xuICAgIFwiaWRcIjogXCJLNEw2TTFcIixcbiAgICBcIm5hbWVcIjogXCJPdGhlciBEb2N1bWVudCBDXCIsXG4gICAgXCJ0eXBlXCI6IFwib3RoZXJzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiTjhQNVE3XCIsXG4gICAgXCJuYW1lXCI6IFwiUmVndWxhdGlvbiBYXCIsXG4gICAgXCJ0eXBlXCI6IFwicmVndWxhdGlvbnNcIixcbiAgICBcbiAgICBcbiAgfSxcbiAge1xuICAgIFwiaWRcIjogXCJSM1M5VDRcIixcbiAgICBcIm5hbWVcIjogXCJTdGFuZGFyZCBZXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG5cbiAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlU2VjJXOFwiLFxuICAgIFwibmFtZVwiOiBcIkludGVybmFsIENvbnRyb2wgWlwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiQjlDNEQ3XCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRFwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkU1RjhIMlwiLFxuICAgIFwibmFtZVwiOiBcIlJlZ3VsYXRpb24gQUFcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIkozSzdMNFwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIEJCXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiTTZOOVA1XCIsXG4gICAgXCJuYW1lXCI6IFwiSW50ZXJuYWwgQ29udHJvbCBDQ1wiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiUTJSOFMzXCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRVwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICAgIFxuICAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlQ3VTRWMVwiLFxuICAgIFwibmFtZVwiOiBcIlJlZ3VsYXRpb24gQkJcIixcbiAgICBcInR5cGVcIjogXCJyZWd1bGF0aW9uc1wiLFxuICAgIFxuICAgIFxuICB9LFxuICB7XG4gICAgXCJpZFwiOiBcIlc1WDhZNlwiLFxuICAgIFwibmFtZVwiOiBcIlN0YW5kYXJkIENDXCIsXG4gICAgXCJ0eXBlXCI6IFwic3RhbmRhcmRzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiWjJBNkI5XCIsXG4gICAgXCJuYW1lXCI6IFwiSW50ZXJuYWwgQ29udHJvbCBERFwiLFxuICAgIFwidHlwZVwiOiBcImludGVybmFsX2NvbnRyb2xzXCIsXG4gICAgXG4gICAgXG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiQzREN0UyXCIsXG4gICAgXCJuYW1lXCI6IFwiT3RoZXIgRG9jdW1lbnQgRlwiLFxuICAgIFwidHlwZVwiOiBcIm90aGVyc1wiLFxuICAgIFxuICAgIFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IE1PQ0tfQ0FURUdPUklFUyA9IFsgICAgXG4gIHsgaWQ6IFwiQTJCNEM2XCIsIG5hbWU6IFwiUDFcIiwgZGVzY3JpcHRpb246IFwiUHJpbWFyeSByZWd1bGF0aW9uIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IG51bGwgfSxcbiAgeyBpZDogXCJENUU4RjNcIiwgbmFtZTogXCJTdGFuZGFyZCBBXCIsIGRlc2NyaXB0aW9uOiBcIkluZHVzdHJ5IHN0YW5kYXJkIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJHN0gySjlcIiwgbmFtZTogXCJJbnRlcm5hbCBDb250cm9sIEJcIiwgZGVzY3JpcHRpb246IFwiSW50ZXJuYWwgZ3VpZGVsaW5lc1wiLCBsZXZlbDogMSwgcGFyZW50OiBcIkEyQjRDNlwiIH0sXG4gIHsgaWQ6IFwiSzRMNk0xXCIsIG5hbWU6IFwiT3RoZXIgRG9jdW1lbnQgQ1wiLCBkZXNjcmlwdGlvbjogXCJNaXNjZWxsYW5lb3VzIGRvY3VtZW50XCIsIGxldmVsOiAxLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJOOFA1UTdcIiwgbmFtZTogXCJSZWd1bGF0aW9uIFhcIiwgZGVzY3JpcHRpb246IFwiTGVnYWwgZnJhbWV3b3JrXCIsIGxldmVsOiAyLCBwYXJlbnQ6IFwiQTJCNEM2XCIgfSxcbiAgeyBpZDogXCJSM1M5VDRcIiwgbmFtZTogXCJTdGFuZGFyZCBZXCIsIGRlc2NyaXB0aW9uOiBcIlVwZGF0ZWQgc3RhbmRhcmRcIiwgbGV2ZWw6IDIsIHBhcmVudDogXCJENUU4RjNcIiB9LFxuICB7IGlkOiBcIlU2VjJXOFwiLCBuYW1lOiBcIkludGVybmFsIENvbnRyb2wgWlwiLCBkZXNjcmlwdGlvbjogXCJDb250cm9sIHByb2NlZHVyZXNcIiwgbGV2ZWw6IDIsIHBhcmVudDogXCJHN0gySjlcIiB9LFxuICB7IGlkOiBcIkI5QzREN1wiLCBuYW1lOiBcIk90aGVyIERvY3VtZW50IERcIiwgZGVzY3JpcHRpb246IFwiR2VuZXJhbCBpbmZvcm1hdGlvblwiLCBsZXZlbDogMiwgcGFyZW50OiBcIks0TDZNMVwiIH0sXG4gIHsgaWQ6IFwiRTVGOEgyXCIsIG5hbWU6IFwiUmVndWxhdGlvbiBBQVwiLCBkZXNjcmlwdGlvbjogXCJTdXBwbGVtZW50YXJ5IHJlZ3VsYXRpb25cIiwgbGV2ZWw6IDMsIHBhcmVudDogXCJOOFA1UTdcIiB9LFxuICB7IGlkOiBcIkozSzdMNFwiLCBuYW1lOiBcIlN0YW5kYXJkIEJCXCIsIGRlc2NyaXB0aW9uOiBcIk5ldyBjb21wbGlhbmNlIHN0YW5kYXJkXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiUjNTOVQ0XCIgfSxcbiAgeyBpZDogXCJNNk45UDVcIiwgbmFtZTogXCJJbnRlcm5hbCBDb250cm9sIENDXCIsIGRlc2NyaXB0aW9uOiBcIkFkdmFuY2VkIGNvbnRyb2xzXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiVTZWMlc4XCIgfSxcbiAgeyBpZDogXCJRMlI4UzNcIiwgbmFtZTogXCJPdGhlciBEb2N1bWVudCBFXCIsIGRlc2NyaXB0aW9uOiBcIkFkZGl0aW9uYWwgcmVmZXJlbmNlXCIsIGxldmVsOiAzLCBwYXJlbnQ6IFwiQjlDNEQ3XCIgfSxcbiAgeyBpZDogXCJUN1U0VjFcIiwgbmFtZTogXCJSZWd1bGF0aW9uIEJCXCIsIGRlc2NyaXB0aW9uOiBcIlJlZ3VsYXRvcnkgZXhwYW5zaW9uXCIsIGxldmVsOiA0LCBwYXJlbnQ6IFwiRTVGOEgyXCIgfSxcbiAgeyBpZDogXCJXNVg4WTZcIiwgbmFtZTogXCJTdGFuZGFyZCBDQ1wiLCBkZXNjcmlwdGlvbjogXCJJbmR1c3RyeSBiZW5jaG1hcmtcIiwgbGV2ZWw6IDQsIHBhcmVudDogXCJKM0s3TDRcIiB9LFxuICB7IGlkOiBcIloyQTZCOVwiLCBuYW1lOiBcIkludGVybmFsIENvbnRyb2wgRERcIiwgZGVzY3JpcHRpb246IFwiSW50ZXJuYWwgYXVkaXQgcG9saWNpZXNcIiwgbGV2ZWw6IDQsIHBhcmVudDogXCJNNk45UDVcIiB9LFxuICB7IGlkOiBcIkM0RDdFMlwiLCBuYW1lOiBcIk90aGVyIERvY3VtZW50IEZcIiwgZGVzY3JpcHRpb246IFwiRXh0cmEgZG9jdW1lbnRhdGlvblwiLCBsZXZlbDogNCwgcGFyZW50OiBcIlEyUjhTM1wiIH0sXG4gIHsgaWQ6IFwiRjhIM0o2XCIsIG5hbWU6IFwiUmVndWxhdGlvbiBDQ1wiLCBkZXNjcmlwdGlvbjogXCJBZGRpdGlvbmFsIGNvbXBsaWFuY2UgcnVsZXNcIiwgbGV2ZWw6IDUsIHBhcmVudDogXCJUN1U0VjFcIiB9LFxuICB7IGlkOiBcIks1TDlNNFwiLCBuYW1lOiBcIlN0YW5kYXJkIEREXCIsIGRlc2NyaXB0aW9uOiBcIlJldmlzZWQgZ3VpZGVsaW5lc1wiLCBsZXZlbDogNSwgcGFyZW50OiBcIlc1WDhZNlwiIH0sXG4gIHsgaWQ6IFwiTjJQNlE4XCIsIG5hbWU6IFwiSW50ZXJuYWwgQ29udHJvbCBFRVwiLCBkZXNjcmlwdGlvbjogXCJPcGVyYXRpb25hbCBzZWN1cml0eSBtZWFzdXJlc1wiLCBsZXZlbDogNSwgcGFyZW50OiBcIloyQTZCOVwiIH0sXG4gIHsgaWQ6IFwiUjdTM1Q1XCIsIG5hbWU6IFwiT3RoZXIgRG9jdW1lbnQgR1wiLCBkZXNjcmlwdGlvbjogXCJTdXBwbGVtZW50YXJ5IG5vdGVzXCIsIGxldmVsOiA1LCBwYXJlbnQ6IFwiQzREN0UyXCIgfVxuICBcbl1cblxuaW50ZXJmYWNlIENhdGVnb3J5IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBsZXZlbDogbnVtYmVyO1xuICBwYXJlbnQ6IHN0cmluZyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBDYXRlZ29yeVdpdGhQYXJlbnRUcmVlIGV4dGVuZHMgQ2F0ZWdvcnkge1xuICBwYXJlbnRUcmVlOiBzdHJpbmdbXTtcbn1cblxuZnVuY3Rpb24gYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyhjYXRlZ29yaWVzOiBDYXRlZ29yeVtdKTogQ2F0ZWdvcnlXaXRoUGFyZW50VHJlZVtdIHtcbiAgLy8gQ3JlYXRlIGEgbWFwIGZvciBxdWljayBsb29rdXAgb2YgY2F0ZWdvcmllcyBieSBJRFxuICBjb25zdCBjYXRlZ29yeU1hcCA9IG5ldyBNYXAoY2F0ZWdvcmllcy5tYXAoY2F0ZWdvcnkgPT4gW2NhdGVnb3J5LmlkLCBjYXRlZ29yeV0pKTtcblxuICBmdW5jdGlvbiBnZXRQYXJlbnRUcmVlKGNhdGVnb3J5OiBDYXRlZ29yeSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwYXJlbnRUcmVlOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50UGFyZW50ID0gY2F0ZWdvcnkucGFyZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnRQYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhcmVudENhdGVnb3J5ID0gY2F0ZWdvcnlNYXAuZ2V0KGN1cnJlbnRQYXJlbnQpO1xuICAgICAgaWYgKHBhcmVudENhdGVnb3J5KSB7XG4gICAgICAgIHBhcmVudFRyZWUucHVzaChwYXJlbnRDYXRlZ29yeS5uYW1lKTtcbiAgICAgICAgY3VycmVudFBhcmVudCA9IHBhcmVudENhdGVnb3J5LnBhcmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRUcmVlO1xuICB9XG5cbiAgLy8gRmlyc3QsIGFkZCBwYXJlbnRUcmVlIHRvIGFsbCBjYXRlZ29yaWVzXG4gIGNvbnN0IGNhdGVnb3JpZXNXaXRoUGFyZW50VHJlZSA9IGNhdGVnb3JpZXMubWFwKGNhdGVnb3J5ID0+ICh7XG4gICAgLi4uY2F0ZWdvcnksXG4gICAgcGFyZW50VHJlZTogZ2V0UGFyZW50VHJlZShjYXRlZ29yeSlcbiAgfSkpO1xuXG4gIC8vIFNvcnQgY2F0ZWdvcmllcyB0byBncm91cCBjaGlsZHJlbiB3aXRoIHBhcmVudHNcbiAgcmV0dXJuIGNhdGVnb3JpZXNXaXRoUGFyZW50VHJlZS5zb3J0KChhLCBiKSA9PiB7XG4gICAgLy8gQ29tcGFyZSBwYXJlbnQgdHJlZXMgZmlyc3RcbiAgICBjb25zdCBtaW5MZW5ndGggPSBNYXRoLm1pbihhLnBhcmVudFRyZWUubGVuZ3RoLCBiLnBhcmVudFRyZWUubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbkxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYS5wYXJlbnRUcmVlW2ldICE9PSBiLnBhcmVudFRyZWVbaV0pIHtcbiAgICAgICAgcmV0dXJuIGEucGFyZW50VHJlZVtpXS5sb2NhbGVDb21wYXJlKGIucGFyZW50VHJlZVtpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgb25lIGlzIGEgcGFyZW50IG9mIHRoZSBvdGhlciwgcGFyZW50IHNob3VsZCBjb21lIGZpcnN0XG4gICAgaWYgKGEuaWQgPT09IGIucGFyZW50KSByZXR1cm4gLTE7XG4gICAgaWYgKGIuaWQgPT09IGEucGFyZW50KSByZXR1cm4gMTtcblxuICAgIC8vIElmIHRoZXkgc2hhcmUgdGhlIHNhbWUgcGFyZW50LCBzb3J0IGJ5IG5hbWVcbiAgICBpZiAoYS5wYXJlbnQgPT09IGIucGFyZW50KSB7XG4gICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGV5J3JlIGF0IHRoZSBzYW1lIGxldmVsLCBzb3J0IGJ5IG5hbWVcbiAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgfSk7XG59XG5cbi8vIEV4YW1wbGUgdXNhZ2U6XG5jb25zdCBjYXRlZ29yaWVzV2l0aFBhcmVudFRyZWUgPSBhZGRQYXJlbnRUcmVlVG9DYXRlZ29yaWVzKE1PQ0tfQ0FURUdPUklFUyk7Il19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2ludGVyZmFjZXMvZnJlcXVlbmN5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGcmVxdWVuY3lPYmplY3Qge1xuICB0eXBlOiAnb25lX3RpbWUnIHwgJ2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknIHwgJ3F1YXJ0ZXJseScgfCAnc2VtZXN0ZXInIHwgJ3llYXJseScgfCAncmFuZG9tJyB8ICdvbmdvaW5nJyB8ICdvbl9jb21wbGV0aW9uX29mJyB8ICdiaWFubnVhbGx5JzsgXG4gIGVuZEFmdGVyOiBudW1iZXI7XG4gIHN0YXJ0QmVmb3JlOiBudW1iZXI7XG4gIGF1dG9EZWFjdGl2YXRlOiBudW1iZXI7XG4gIGRheTogbnVtYmVyO1xuICB0aW1lOiBzdHJpbmc7XG4gIHJlcGVhdE9wdGlvbnM/OiBSZXBlYXRPcHRpb25zO1xuICByYW5kb20/OiBSYW5kb20gfCB7fTtcbiAgb25Db21wbGV0ZT86IE9uQ29tcGxldGUgfCB7fTtcbiAgb25Hb2luZz86IE9uR29pbmcgfCB7fTtcbiAgXG59XG5cblxuaW50ZXJmYWNlIFJlcGVhdE9wdGlvbnMge1xuICBldmVyeTogbnVtYmVyO1xuICByZXBlYXRPbjogc3RyaW5nO1xuICBsaWZlY3ljbGU6IExpZmVjeWNsZTtcbn1cblxuaW50ZXJmYWNlIFJhbmRvbSB7XG4gIHR5cGU6IHN0cmluZztcbiAgb2NjdXJyZW5jZXM6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE9uQ29tcGxldGUge1xuICBySWQ6IG51bWJlcjtcbiAgYUlkOiBudW1iZXI7XG4gIHJjSWQ6IG51bWJlcjtcbiAgc3RhcnRBZnRlcjogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgT25Hb2luZyB7XG4gICByZW1pbmRlcnM6IG51bWJlcjtcbiAgIHN0YXJ0T2Y6ICd3ZWVrJyB8ICdtb250aCcgfCAncXVhcnRlcicgfCAnc2VtZXN0ZXInIHwgJ3llYXInO1xufVxuXG5pbnRlcmZhY2UgTGlmZWN5Y2xlIHtcbiAgc3RhcnRGcm9tOiBzdHJpbmc7IC8veXl5eS1tbS1kZFxuICBlbmRCeTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL3l5eXktbW0tZGRcbiAgZW5kQWZ0ZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuXG4iXX0=
|