vcomply-workflow-engine 2.6.19 → 2.6.21
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/bundles/vcomply-workflow-engine.umd.js +420 -612
- package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
- package/esm2015/lib/add-multiple-responsibility/add-multiple-responsibility.component.js +1 -1
- package/esm2015/lib/add-multiple-risk/add-multiple-risk.component.js +1 -1
- package/esm2015/lib/confirmation-alert/confirmation-alert.component.js +4 -4
- package/esm2015/lib/confirmation-alert/confirmation-alert.component.ngfactory.js +11 -4
- package/esm2015/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.js +1 -1
- package/esm2015/lib/interfaces/confirmation-alert.js +1 -1
- package/esm2015/lib/log-an-issue/log-an-issue.component.js +1 -1
- package/esm2015/lib/sharedComponents/assessment-editor/services/editor.service.js +1 -1
- package/esm2015/lib/sharedComponents/assessment-editor/services/validator.service.js +6 -4
- package/esm2015/lib/sharedComponents/assessment-editor/services/validator.service.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/floating-bar/floating-bar.component.js +3 -8
- package/esm2015/lib/sharedComponents/floating-bar/floating-bar.component.ngfactory.js +3 -4
- package/esm2015/lib/sharedComponents/floating-bar/floating-bar.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/format-and-evidence/format-and-evidence.component.js +1 -1
- package/esm2015/lib/sharedComponents/program-listing/program-listing.component.js +40 -220
- package/esm2015/lib/sharedComponents/program-listing/program-listing.component.ngfactory.js +70 -78
- package/esm2015/lib/sharedComponents/program-listing/program-listing.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/risk-classification/risk-classification.component.js +1 -1
- package/esm2015/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.js +1 -1
- package/esm2015/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.js +1 -1
- package/esm2015/lib/workflow-assessment/workflow-assessment.component.js +1 -1
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.js +146 -123
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.ngfactory.js +60 -88
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.ngsummary.json +1 -1
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.js +14 -3
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.ngfactory.js +16 -13
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.ngsummary.json +1 -1
- package/esm2015/lib/workflow-engine.module.js +2 -4
- package/esm2015/lib/workflow-engine.module.ngfactory.js +1 -1
- package/esm2015/lib/workflow-policy/workflow-policy.component.js +1 -1
- package/esm2015/lib/workflow-program/create-program-ui/file-pill/file-pill.component.js +1 -1
- package/esm2015/lib/workflow-program/create-program-ui/form-field/form-field.component.js +1 -1
- package/esm2015/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.js +1 -1
- package/esm2015/lib/workflow-program/workflow-program.component.js +1 -1
- package/esm2015/lib/workflow-risk/workflow-risk.component.js +3 -3
- package/esm2015/lib/workflow-risk/workflow-risk.component.ngfactory.js +38 -39
- package/esm2015/lib/workflow-services/responsibility.service.js +3 -8
- package/esm2015/lib/workflow-survey-form/workflow-survey-form.component.js +1 -1
- package/esm2015/vcomply-workflow-engine.js +188 -189
- package/esm2015/vcomply-workflow-engine.ngsummary.json +1 -1
- package/fesm2015/vcomply-workflow-engine.js +229 -397
- package/fesm2015/vcomply-workflow-engine.js.map +1 -1
- package/lib/interfaces/confirmation-alert.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts +1 -0
- package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +0 -2
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts +1 -54
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +103 -16
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -0
- package/lib/workflow-services/responsibility.service.d.ts +1 -1
- package/package.json +2 -2
- package/vcomply-workflow-engine.d.ts +187 -188
- package/vcomply-workflow-engine.metadata.json +1 -1
- package/esm2015/lib/sharedComponents/pipes/spaceTrim.pipe.js +0 -14
- package/esm2015/lib/sharedComponents/pipes/spaceTrim.pipe.ngsummary.json +0 -1
- package/lib/sharedComponents/pipes/spaceTrim.pipe.d.ts +0 -4
|
@@ -633,4 +633,4 @@ EditorService.ctorParameters = () => [
|
|
|
633
633
|
{ type: HttpClient },
|
|
634
634
|
{ type: Configurations, decorators: [{ type: Optional }] }
|
|
635
635
|
];
|
|
636
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUN6RCw4REFBOEQ7QUFJOUQsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBb0IsSUFBZ0IsRUFBYSxNQUF1QjtRQUFwRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBS3BDLHVCQUFrQixHQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMvRSwwQkFBcUIsR0FBRyxXQUFXLENBQUM7UUFDN0Isd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCwwQkFBcUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekQsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUN6QixvQkFBZSxHQUFH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QUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O01BR0U7SUFDRixPQUFPLENBQUMsQ0FBUztRQUNmLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDNUMsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsUUFBYSxFQUFFLElBQVM7UUFDbkMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7O1lBL29CRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVRRLFVBQVU7WUFLVixjQUFjLHVCQU9pQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMnO1xyXG4vLyBpbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJ3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JTZXJ2aWNlIHtcclxuICAgZW52ICE6YW55O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9ucykge1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGN1cnJlbnRQYWdlRGV0YWlsczogYW55ID0geyBwYWdlTmFtZTogJycsIHBhZ2VOdW1iZXI6IDEsIHBhZ2VEZXNjcmlwdGlvbjogJycgfTtcclxuICBwcmVmaXhGb3JRdWVzdGlvbk5hbWUgPSAnUXVlc3Rpb25fJztcclxuICBwdWJsaWMgYWN0aXZlUXVlc3Rpb25JbmRleCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtNSk7XHJcbiAgYWN0aXZlUXVlc3Rpb25TdHJlYW0kID0gdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyBjdXJyZW50UGFnZU51bWJlcjogbnVtYmVyID0gMTtcclxuICBwdWJsaWMgYWN0aXZlUXVlc3Rpb24gPSAwO1xyXG4gIHNob3dBZGRQYWdlT3B0aW9uID0gdHJ1ZTtcclxuICBzaG93UGFnZURldGFpbHMgPSBmYWxzZTtcclxuICBwdWJsaWMgc2NvcmUgPSB7XHJcbiAgICBkZWZhdWx0U2NvcmU6IDEsXHJcbiAgICBuZWdhdGl2ZVNjb3JlOiAwXHJcbiAgfVxyXG4gIHB1YmxpYyBhbGxQYWdlczogYW55ID0gW107XHJcbiAgc3RlcElkZW50aWZpZXIgPSAncGFnZXNjcmVlbic7IC8vIHRoaXMgdmFsdWUgY2FuIGJlIFwid2VsY29tZXNjcmVlblwiLFwidGhhbmt5b3VzY3JlZW5cIixcInBhZ2VzY3JlZW5cIiBvbmx5XHJcbiAgYXNzZXNzbWVudElkICE6IGFueTtcclxuICBwdWJsaWMgc2V0dGluZ3M6IGFueSA9IHtcclxuICAgIGFzc2Vzc21lbnRNb2RlOiBmYWxzZSxcclxuICAgIGRlZmF1bHRTY29yZTogMSxcclxuICAgIG5lZ2F0aXZlU2NvcmVDcml0ZXJpYTogJ0ZBSUxFRCcsXHJcbiAgICBuZWdhdGl2ZVNjb3JlOiAwLFxyXG4gICAgd2VpZ2h0YWdlRW5hYmxlZDogZmFsc2UsXHJcbiAgICBzZXR0aW5nc0VuYWJsZWQ6IGZhbHNlXHJcbiAgfVxyXG5cclxuICBmb3Jtc1BhZ2U6IGFueSA9IHtcclxuICAgIHZlcnNpb246IDIsXHJcbiAgICBxdWVzdGlvblJhbmRvbWl6ZTogdHJ1ZSxcclxuICAgIGFub255bW91c1Jlc3BvbnNlOiBmYWxzZSxcclxuICAgIGhhc1dlbGNvbWU6IGZhbHNlLFxyXG4gICAgaGFzV2VsY29tZURlc2NyaXB0aW9uOiB0cnVlLFxyXG4gICAgd2VsY29tZVRleHQ6ICcnLFxyXG4gICAgaGFzV2VsY29tZUltYWdlOiB0cnVlLFxyXG4gICAgd2VsY29tZUltYWdlOiAnJyxcclxuICAgIHdlbGNvbWVEZXNjcmlwdGlvbjogJycsXHJcbiAgICBoYXNUaGFua3M6IGZhbHNlLFxyXG4gICAgaGFzVGhhbmt5b3VJbWFnZTogZmFsc2UsXHJcbiAgICB0aGFua3lvdVRleHQ6ICcnLFxyXG4gICAgdGhhbmt5b3VJbWFnZTogJycsXHJcbiAgICBoYXNUaGFua3lvdURlc2NyaXB0aW9uOiB0cnVlLFxyXG4gICAgdGhhbmt5b3VEZXNjcmlwdGlvbjogJycsXHJcbiAgICBlbGVtZW50czogW10sXHJcbiAgICBwYWdlRGV0YWlsc0xpc3Q6IFtdLFxyXG4gICAgY3VzdG9tUmVzcG9uc2VTZXQ6IFtdLFxyXG4gICAgc2V0dGluZ3M6IHRoaXMuc2V0dGluZ3MsXHJcbiAgICByZXNwb25zZVNlZ21lbnQ6IHRoaXMuaW5pdGlhbGl6ZUVtcHR5UmVzcG9uc2VTZWdtZW50KClcclxuICB9O1xyXG5cclxuICBpbml0aWFsaXplRW1wdHlSZXNwb25zZVNlZ21lbnQoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgbWF4U2NvcmU6IDEwLFxyXG4gICAgICBzZWdtZW50czogW1xyXG5cclxuICAgICAgXVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkSGFuZGxlcihmb3JtRGF0YTogYW55LCBkZXN0aW5hdGlvbjogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLmVudi5maWxlVXBsb2FkRW5kUG9pbnQgKyBkZXN0aW5hdGlvbiwgZm9ybURhdGEpO1xyXG4gICAgLy9yZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihcImVudlwiICsgZGVzdGluYXRpb24sIGZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIGFkZFF1ZXN0aW9uKGV2dDogYW55LCBpbmRleD86IG51bWJlcikge1xyXG4gICAgc3dpdGNoIChldnQudHJpbSgpKSB7XHJcbiAgICAgIGNhc2UgJ3dlbGNvbWUnOiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IC0xO1xyXG4gICAgICAgIHRoaXMuc3RlcElkZW50aWZpZXIgPSAnd2VsY29tZXNjcmVlbic7XHJcbiAgICAgICAgdGhpcy5mb3Jtc1BhZ2UuaGFzV2VsY29tZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAndGhhbmt5b3UnOiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IC0yO1xyXG4gICAgICAgIHRoaXMuc3RlcElkZW50aWZpZXIgPSAndGhhbmt5b3VzY3JlZW4nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ211bHRpcGxlLWNob2ljZSc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVNdWx0aXBsZUNob2ljZShpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQ2hlY2tib3goaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3N0YXItcmF0aW5nJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVN0YXJSYXRpbmcoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3NpbmdsZS10ZXh0Ym94Jzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVNpbmdsZVRleHRib3goaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2NvbW1lbnQtYm94Jzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZUNvbW1lbnRib3goaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ21hdHJpeC1kcm9wZG93bic6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVNYXRyaXhEcm9wZG93bihpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZHJvcGRvd24nOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRHJvcGRvd24oaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3NsaWRlcic6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTbGlkZXIoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3JhdGluZy1zY2FsZSc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVSYXRpbmdTY2FsZShpbmRleClcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdtdWx0aXBsZS10ZXh0Ym94Jzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZU11bHRpcGxlVGV4dGJveChpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZURhdGVUaW1lKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdmaWxlLXVwbG9hZCc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGaWxlVXBsb2FkKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdyYW5raW5nJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVJhbmtpbmcoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3N0YXItcmF0aW5nJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVN0YXJSYXRpbmcoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRUb1BhZ2Vmcm9tV2VsY29tZSgpIHtcclxuICAgIGlmIChbJ3RoYW5reW91c2NyZWVuJywgJ3dlbGNvbWVzY3JlZW4nXS5pbmNsdWRlcyh0aGlzLnN0ZXBJZGVudGlmaWVyKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5hbGxQYWdlcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuc3RlcElkZW50aWZpZXIgPSAncGFnZXNjcmVlbic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayB3aGV0aGVyIHRvIGRpc3BsYXkgUGFnZSBEZXRhaWxzIG9yIEFkZCBQYWdlIHRpbHRlIG9wdGlvblxyXG4gICAqL1xyXG4gIGNoZWNrRm9yUGFnZURldGFpbHMoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZURldGFpbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmN1cnJlbnRQYWdlRGV0YWlscy5wYWdlTmFtZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5zaG93QWRkUGFnZU9wdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1BhZ2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dBZGRQYWdlT3B0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1BhZ2VEZXRhaWxzID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgbXVsdGlwbGUgY2hvaWNlXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVNdWx0aXBsZUNob2ljZShpbmRleD86IGFueSkge1xyXG5cclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdtdWx0aXBsZS1jaG9pY2UnLCBuYW1lOiBgYCwgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlciwgb3RoZXJDb25maWc6IHsgY29sb3I6ICcjMDAwMDAwJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUgfSxcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIG90aGVyVmFsdWU6ICdPdGhlcicsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLCB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgaGVscGluZ0xhYmVsOiAnJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUsIGNvbG9yOiB0aGlzLmdlbmVyYXRlUmFuZG9tQ29sb3IoKVxyXG4gICAgICAgIH1dXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIGNoZWNrYm94XHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVDaGVja2JveChpbmRleD86IGFueSkge1xyXG5cclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdjaGVja2JveCcsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBvdGhlckNvbmZpZzogeyBjb2xvcjogJyMwMDAwMDAnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiB0aGlzLnNjb3JlLmRlZmF1bHRTY29yZSB9LFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOlxyXG4gICAgICAgIFt7XHJcbiAgICAgICAgICB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsXHJcbiAgICAgICAgICBoZWxwaW5nTGFiZWw6ICcnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiB0aGlzLnNjb3JlLmRlZmF1bHRTY29yZSwgY29sb3I6IHRoaXMuZ2VuZXJhdGVSYW5kb21Db2xvcigpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgc3RhciByYXRpbmdcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqIFtOb3RlXTogUmF0aW5nIGxhYmVsIHR5cGUgY2FuIHRha2UgMiB2YWx1ZXMgJ3NwZWNpZmljJy8nc2NhbGUnXHJcbiAgICovXHJcbiAgY3JlYXRlU3RhclJhdGluZyhpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ3N0YXItcmF0aW5nJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSxcclxuICAgICAgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJywgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIGN1cnNvclR5cGU6ICdudW1iZXInLFxyXG4gICAgICBjdXJzb3JDb2xvcjogJyNmZjgwMDAnLCBzY2FsZTogMiwgc3RhclZhbHVlOiAnJywgaGFzUmF0aW5nTGFiZWw6IGZhbHNlLCByYXRpbmdMYWJlbFR5cGU6ICdzcGVjaWZpYycsXHJcbiAgICAgIHNjYWxlUmFuZ2VGcm9tOiAnTm90IGF0IGFsbCBsaWtlbHknLFxyXG4gICAgICBzY2FsZVJhbmdlVG86ICdFeHRyZW1lIExpa2VseScsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgaXNWaXNpYmxlOiB0cnVlLCB2YWx1ZTogMCwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IHRydWUsIGhlbHBpbmdMYWJlbDogJycgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgaXNWaXNpYmxlOiB0cnVlLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IHRydWUsIGhlbHBpbmdMYWJlbDogJycgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBzaW5nbGUgdGV4dGJveFxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlU2luZ2xlVGV4dGJveChpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ3NpbmdsZS10ZXh0Ym94JywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGhhc1ZhbGlkYXRpb246IGZhbHNlLCB2YWxpZGF0aW9uVHlwZTogJycsIGlzUmVxdWlyZWQ6IGZhbHNlLCBoYXNDaGFyYWN0ZXJMZW5ndGg6IGZhbHNlLCBtaW5DaGFyYWN0ZXJMZW5ndGg6IDAsXHJcbiAgICAgIG1heENoYXJhY3Rlckxlbmd0aDogMTAwLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFt7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiB0cnVlLCBoZWxwaW5nTGFiZWw6ICcnIH1dXHJcbiAgICB9O1xyXG5cclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuXHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgY29tbWVudCBib3hcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZUNvbW1lbnRib3goaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdjb21tZW50LWJveCcsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIGhhc0NoYXJhY3Rlckxlbmd0aDogZmFsc2UsIG1pbkNoYXJhY3Rlckxlbmd0aDogMCwgbWF4Q2hhcmFjdGVyTGVuZ3RoOiAwLCByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsXHJcbiAgICAgIG90aGVyVmFsdWU6ICdPdGhlcicsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLCBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLFxyXG4gICAgICBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSwgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgY2hvaWNlczogW1xyXG4gICAgICAgIHsgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnLCBpbWFnZVVSTDogJycgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgbWF0cml4IG9mIGRyb3Bkb3duXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVNYXRyaXhEcm9wZG93bihpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ21hdHJpeC1kcm9wZG93bicsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBvdGhlckNvbmZpZzogeyBjb2xvcjogJyMwMDAwMDAnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiAxIH0sXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFt7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9XSxcclxuICAgICAgY29sdW1uczogW3tcclxuICAgICAgICB0aXRsZTogJycsIHZhbHVlOiAxLCB3ZWlnaHQ6IDAsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyxcclxuICAgICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV1cclxuICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIGRyb3Bkb3duXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVEcm9wZG93bihpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ2Ryb3Bkb3duJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsIG90aGVyQ29uZmlnOiB7IGNvbG9yOiAnIzAwMDAwMCcsIGlzRmFpbGVkOiBmYWxzZSwgc2NvcmU6IHRoaXMuc2NvcmUuZGVmYXVsdFNjb3JlIH0sXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycsXHJcbiAgICAgICAgICBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiB0aGlzLnNjb3JlLmRlZmF1bHRTY29yZSwgY29sb3I6IHRoaXMuZ2VuZXJhdGVSYW5kb21Db2xvcigpXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIHNsaWRlclxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlU2xpZGVyKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnc2xpZGVyJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFt7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9XSxcclxuICAgICAgY2VudGVyUmFuZ2U6IGZhbHNlLCBhZGp1c3RTY2FsZTogZmFsc2UsIG51bWVyaWNCb3hFbmFibGVkOiBmYWxzZSwgbGVmdDogMCwgY2VudGVyOiAwLCByaWdodDogMTAwLFxyXG4gICAgICBzY2FsZVJhbmdlTWluOiAwLCBzY2FsZVJhbmdlTWF4OiAxMDAsIHN0ZXBTaXplOiAxMCwgc3RhcnRQb3NpdGlvbjogMCwgZWRpdG9yVmFsdWU6IDBcclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgbWF0cml4IHJhdGluZyBzY2FsZVxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlUmF0aW5nU2NhbGUoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdyYXRpbmctc2NhbGUnLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlcixcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIGhhc1JhdGluZ0xhYmVsOiBmYWxzZSwgcmF0aW5nTGFiZWxUeXBlOiAnJyxcclxuICAgICAgb3RoZXJWYWx1ZTogJ090aGVyJywgaGFzV2VpZ2h0OiBmYWxzZSwgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV0sXHJcbiAgICAgIGNvbHVtbnM6IFt7IHRpdGxlOiAnJywgdmFsdWU6IDEsIHdlaWdodDogMCwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH1dXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIHJhbmtpbmdcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZVJhbmtpbmcoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdyYW5raW5nJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBoYXNSYXRpbmdMYWJlbDogZmFsc2UsIGFsaWdubWVudDogZmFsc2UsXHJcbiAgICAgIHJldmVyc2U6IGZhbHNlLCBvbmx5TnVtYmVyOiB0cnVlLCBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLFxyXG4gICAgICBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSwgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgY2hvaWNlczogW1xyXG4gICAgICAgIHsgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH0sXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgbXVsdGlwbGUgdGV4dGJveFxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlTXVsdGlwbGVUZXh0Ym94KGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnbXVsdGlwbGUtdGV4dGJveCcsIG5hbWU6ICcnLFxyXG4gICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJywgb3RoZXJWYWx1ZTogJ090aGVyJywgaGFzUmF0aW5nTGFiZWw6IGZhbHNlLFxyXG4gICAgICBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSwgb25seU51bWJlcjogdHJ1ZSwgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSxcclxuICAgICAgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9LFxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIGRhdGUvdGltZVxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlRGF0ZVRpbWUoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdkYXRlLXRpbWUnLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlcixcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIG90aGVyVmFsdWU6ICdPdGhlcicsIGhhc1JhdGluZ0xhYmVsOiBmYWxzZSwgYWxpZ25tZW50OiBmYWxzZSxcclxuICAgICAgcmV2ZXJzZTogZmFsc2UsIG9ubHlOdW1iZXI6IHRydWUsIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLFxyXG4gICAgICB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLCBoYXNEYXRlOiB0cnVlLCBoYXNUaW1lOiBmYWxzZSwgZGF0ZUZvcm1hdDogJ0REL01NL1lZWVknLCB0aW1lRm9ybWF0OiAyNCxcclxuICAgICAgY2hvaWNlczogW1xyXG4gICAgICAgIHsgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH0sXHJcblxyXG4gICAgICBdLFxyXG4gICAgICBkYXRlOiB7IHRpdGxlOiAnJywgdmFsdWU6ICcnIH0sXHJcbiAgICAgIHRpbWU6IHsgdGl0bGU6ICcnLCB2YWx1ZTogJycgfVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBmaWxlIHVwbG9hZFxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlRmlsZVVwbG9hZChpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ2ZpbGUtdXBsb2FkJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0luc3RydWN0aW9uOiBmYWxzZSwgaW5zdHJ1Y3Rpb246ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGZpbGVUeXBlUmVzdHJpY3Rpb25zOiBmYWxzZSwgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsXHJcbiAgICAgIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9XSxcclxuICAgICAgYWxsb3dlZEZpbGVUeXBlczoge1xyXG4gICAgICAgIHBkZjogdHJ1ZSxcclxuICAgICAgICBkb2M6IHRydWUsXHJcbiAgICAgICAgcG5nOiB0cnVlLFxyXG4gICAgICAgIGpwZzogdHJ1ZSxcclxuICAgICAgICBnaWY6IHRydWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBpbWFnZSBjaG9pY2VcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZUltYWdlQ2hvaWNlKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnaW1hZ2UtY2hvaWNlJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsXHJcbiAgICAgIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJywgaW1hZ2VVUkw6ICcnIH1cclxuXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBDcmVhdGVzIGFuZCBhZGRzIHRoZSBxdWVzdGlvbiB0byBsaXN0IG9mIHF1ZXN0aW9ucyBpZiBhIHF1ZXN0aW9uJ3MgaW5kZXggaXMgdW5kZWZpbmVkXHJcbiAqIEBwYXJhbSBlbGVtZW50IERldGFpbHMgb2YgcXVlc3Rpb24gdG8gYmUgY3JlYXRlZFxyXG4gKi9cclxuICBvcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudDogYW55KSB7XHJcblxyXG4gICAgZWxlbWVudC5uYW1lID0gdGhpcy5nZW5lcmF0ZVF1ZXN0aW9uTmFtZSh0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5sZW5ndGggKyAxKSxcclxuICAgICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMucHVzaChlbGVtZW50KTtcclxuICAgIHRoaXMuc2V0QWN0aXZlUXVlc3Rpb25CYXNlZE9uUGFnZUxlbmd0aCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhbmQgYWRkcyB0aGUgcXVlc3Rpb24gdG8gbGlzdCBvZiBxdWVzdGlvbnMgaWYgYSBxdWVzdGlvbidzIGluZGV4IGlzIHByZXNlbnRcclxuICAgKiBAcGFyYW0gZWxlbWVudCBEZXRhaWxzIG9mIHF1ZXN0aW9uIHRvIGJlIGNyZWF0ZWRcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gc2hvdWxkIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBvcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkge1xyXG5cclxuICAgIGVsZW1lbnQubmFtZSA9IHRoaXMuZ2VuZXJhdGVRdWVzdGlvbk5hbWUoaW5kZXggKyAxKTtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLnNwbGljZShpbmRleCArIDEsIDAsIGVsZW1lbnQpO1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbiA9IGluZGV4ICsgMTtcclxuICAgIHRoaXMuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KGluZGV4ICsgMSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAgKiBTZXRzIHRoZSBhY3RpdmUgcXVlc3Rpb24gYmFzZWQgb24gcGFydGljdWxhciBwYWdlXHJcbiAgICAqL1xyXG4gIHNldEFjdGl2ZVF1ZXN0aW9uQmFzZWRPblBhZ2VMZW5ndGgoKSB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5jdXJyZW50UGFnZU51bWJlcjsgaSsrKSB7XHJcbiAgICAgIGNvdW50ICs9IFsuLi50aGlzLmZvcm1zUGFnZS5lbGVtZW50c10ucmVkdWNlKFxyXG4gICAgICAgIChjb3VudGVyOiBhbnksIGN1cnJlbnRFbGVtZW50OiBhbnkpID0+IChpID09PSBjdXJyZW50RWxlbWVudC5wYWdlID8gY291bnRlciArIDEgOiBjb3VudGVyKSwgMCkgLSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbiA9IGNvdW50ICsgdGhpcy5jdXJyZW50UGFnZU51bWJlciAtIDE7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dChjb3VudCArIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgLSAxKTtcclxuXHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAvLyB9LCAxNTApO1xyXG4gICAgLy8gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICAvKipcclxuKiBTb3J0cyB0aGUgcXVlc3Rpb25zIGJhc2VkIG9uIHBhZ2UgbnVtYmVyXHJcbiovXHJcbiAgc29ydFF1ZXN0aW9uKCkge1xyXG4gICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIGEucGFnZSAtIGIucGFnZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgcXVlc3Rpb24gbmFtZSBmb3IgbmV3bHkgYWRkZWQgcXVlc3Rpb25cclxuICAgKiBAcGFyYW0gcXVlc3Rpb25JbmRleCBJbmRleCBvZiBxdWVzdGlvbiB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgZ2VuZXJhdGVRdWVzdGlvbk5hbWUocXVlc3Rpb25JbmRleDogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHF1ZXN0aW9uTmFtZXMgPSB0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5tYXAoKGE6IGFueSkgPT4gYS5uYW1lKTtcclxuICAgIGlmIChxdWVzdGlvbk5hbWVzLmluY2x1ZGVzKGAke3RoaXMucHJlZml4Rm9yUXVlc3Rpb25OYW1lfSR7cXVlc3Rpb25JbmRleH1gKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVF1ZXN0aW9uTmFtZShxdWVzdGlvbkluZGV4ICsgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBuYW1lID0gJ1F1ZXN0aW9uXycgKyBxdWVzdGlvbkluZGV4LnRvU3RyaW5nKCk7XHJcbiAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZW5lcmF0ZVJhbmRvbUNvbG9yKCkge1xyXG4gICAgLy9yZXR1cm4gJyMnICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTY3NzcyMTUpLnRvU3RyaW5nKDE2KTtcclxuICAgIHJldHVybiAnIzAwMDAwMCdcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBTZXRzIHRoZSBxdWVzdGlvbiBhcyBhY3RpdmUgYmFzZWQgb24gdGhlIHBhcnRpY3VsYXIgaW5kZXhcclxuICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSBxdWVzdGlvbiB0byBiZSBtYXJrZWQgYXMgYWN0aXZlIHF1ZXN0aW9uXHJcbiAqL1xyXG4gIHNldGFjdGl2ZVF1ZXN0aW9uKGluZGV4PzogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uID0gaW5kZXg7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dChpbmRleCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gKiBEdXBsaWNhdGVzIGEgcXVlc3Rpb24gd2l0aCBwYXJ0aWN1bGFyIGluZGV4XHJcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiBxdWVzdGlvbiB0byBiZSBkdXBsaWNhdGVkXHJcbiAqL1xyXG4gIGNvcHlRdWVzdGlvbihpbmRleDogYW55KSB7XHJcbiAgICB0aGlzLnNldGFjdGl2ZVF1ZXN0aW9uKGluZGV4ICsgMSk7XHJcbiAgICBjb25zdCBDT1BZX0VMRU1FTlQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzW2luZGV4XSkpO1xyXG4gICAgaWYgKENPUFlfRUxFTUVOVC5lcnJvckFycmF5KSB7XHJcbiAgICAgIGRlbGV0ZSBDT1BZX0VMRU1FTlQuZXJyb3JBcnJheTtcclxuICAgIH1cclxuICAgIENPUFlfRUxFTUVOVC52aXNpYmlsaXR5TG9naWMgPSBbXTtcclxuICAgIGNvbnN0IGVsZW1lbnRzTmFtZXM6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnRzTmFtZXMucHVzaChlbGVtZW50Lm5hbWUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNoZWNrRm9yU2FtZU5hbWUoZWxlbWVudHNOYW1lcywgQ09QWV9FTEVNRU5UKTtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLnNwbGljZShpbmRleCArIDEsIDAsIENPUFlfRUxFTUVOVCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEFzc2lnbnMgYSB1bmlxdWUgbmFtZSB0byB0aGUgZHVwbGljYXRlZCBxdWVzdGlvblxyXG4gICAqIEBwYXJhbSBlbGVtZW50c05hbWVzIExpc3Qgb2YgcXVlc3Rpb24gbmFtZXNcclxuICAgKiBAcGFyYW0gQ09QWV9FTEVNRU5UIERldGFpbHMgb2YgcXVlc3Rpb24gZHVwbGljYXRlZFxyXG4gICAqL1xyXG4gIGNoZWNrRm9yU2FtZU5hbWUoZWxlbWVudHNOYW1lczogYW55LCBDT1BZX0VMRU1FTlQ6IGFueSkge1xyXG4gICAgaWYgKGVsZW1lbnRzTmFtZXMuaW5jbHVkZXMoQ09QWV9FTEVNRU5ULm5hbWUpKSB7XHJcbiAgICAgIGNvbnN0IENPUFlfRUxFTUVOVF9OQU1FID0gQ09QWV9FTEVNRU5ULm5hbWUuc3BsaXQoJ18nKTtcclxuICAgICAgQ09QWV9FTEVNRU5UX05BTUVbQ09QWV9FTEVNRU5UX05BTUUubGVuZ3RoIC0gMV0gPSAocGFyc2VJbnQoQ09QWV9FTEVNRU5UX05BTUVbQ09QWV9FTEVNRU5UX05BTUUubGVuZ3RoIC0gMV0sIDEwKSArIDEpLnRvU3RyaW5nKCk7XHJcbiAgICAgIENPUFlfRUxFTUVOVC5uYW1lID0gQ09QWV9FTEVNRU5UX05BTUUuam9pbignXycpO1xyXG4gICAgICB0aGlzLmNoZWNrRm9yU2FtZU5hbWUoZWxlbWVudHNOYW1lcywgQ09QWV9FTEVNRU5UKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAqIERlbGV0ZXMgdGhlIHF1ZXN0aW9uIG9uIGNsaWNrIG9mIGRlbGV0ZSBidXR0b25cclxuICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHF1ZXN0aW9uIHRvIGJlIGRlbGV0ZWRcclxuICovXHJcbiAgZGVsZXRlUXVlc3Rpb24oaW5kZXg6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVMb2dpY0Zyb21EZXBlbmRlbnRRdWVzdGlvbihpbmRleCk7XHJcbiAgICB0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuICAvKipcclxuICogUmVtb3ZlcyB0aGUgbG9naWMgZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHF1ZXN0aW9uIGZyb20gb3RoZXIgcXVlc3Rpb25zXHJcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiBxdWVzdGlvbiB3aG9zZSBsb2dpYyBkYXRhIG5lZWRzIHRvIGJlIHJlbW92ZWQgZnJvbSBvdGhlciBxdWVzdGlvbnNcclxuICovXHJcbiAgcmVtb3ZlTG9naWNGcm9tRGVwZW5kZW50UXVlc3Rpb24oaW5kZXg6IGFueSkge1xyXG4gICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuZm9yRWFjaCgocXVlc3Rpb25FbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHF1ZXN0aW9uRWxlbWVudC52aXNpYmlsaXR5TG9naWMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHF1ZXN0aW9uRWxlbWVudC52aXNpYmlsaXR5TG9naWMgPSBxdWVzdGlvbkVsZW1lbnQudmlzaWJpbGl0eUxvZ2ljLmZpbHRlcigobG9naWM6IGFueSkgPT5cclxuICAgICAgICAgIGxvZ2ljLnF1ZXN0aW9uTmFtZSAhPT0gdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHNbaW5kZXhdLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiogQWRkcyBhIG5ldyBwYWdlXHJcbiovXHJcbiAgYWRkUGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID09PSAtMSB8fCB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID09PSAtMikge1xyXG4gICAgICAvL3RoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLm51bWJlck9mUGFnZXMoKSArIDE7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLmFsbFBhZ2VzLmxlbmd0aCArIDE7XHJcbiAgICAgIHRoaXMuYWxsUGFnZXMucHVzaCh0aGlzLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuICAgICAgdGhpcy5udW1iZXJPZlBhZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5hbGxQYWdlcy5sZW5ndGggKyAxO1xyXG4gICAgICB0aGlzLmFsbFBhZ2VzLnB1c2godGhpcy5jdXJyZW50UGFnZU51bWJlcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgKiBDb3VudHMgdGhlIG51bWJlciBvZiBwYWdlcyBpbiBhIHN1cnZleS9mb3JtXHJcbiAgKi9cclxuICBudW1iZXJPZlBhZ2VzKCk6IGFueSB7XHJcbiAgICBjb25zdCBQQUdFX0FSUkFZOiBhbnkgPSBbXTtcclxuICAgIGlmICh0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5sZW5ndGggIT09IDApIHtcclxuICAgICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgUEFHRV9BUlJBWS5wdXNoKGVsZW1lbnQucGFnZSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZURldGFpbHMucGFnZU51bWJlciA9IGVsZW1lbnQ/LnBhZ2U7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5wdXNoKHRoaXMuY3VycmVudFBhZ2VEZXRhaWxzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmFsbFBhZ2VzID0gWy4uLm5ldyBTZXQoUEFHRV9BUlJBWSldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodHRwT3B0aW9ucyA9IHtcclxuICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsIHRva2VuOiB0aGlzLmdldEF1dGhvcml6YXRpb25Ub2tlbigpIH0pXHJcbiAgfTtcclxuXHJcbiAgZmV0Y2hBc3Nlc3NtZW50RGF0YShpZDogc3RyaW5nKSB7XHJcbiAgICAvL21vZGU9YXNzZXNzbWVudC9mZXRjaFF1ZXN0aW9uc0J5QXNzZXNzbWVudElkJmlkPTYxZjNmNzg3MWM2MDAyMDAwOWEyMDU0M1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXCJlbnZcIiArICdhc3Nlc3NtZW50L2ZldGNoUXVlc3Rpb25zQnlBc3Nlc3NtZW50SWQmaWQ9JyArIGlkLCB0aGlzLmh0dHBPcHRpb25zKS5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIHNhdmVBc3Nlc3NtZW50KGlkOiBhbnksIHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFwiZW52XCIgKyAnYXNzZXNzbWVudC91cGRhdGUmaWQ9JyArIGlkLCBwYXlsb2FkLCB0aGlzLmh0dHBPcHRpb25zKVxyXG4gICAgLy8/bW9kZT1hc3Nlc3NtZW50L3VwZGF0ZSZpZD02MWYzZjc4NzFjNjAwMjAwMDlhMjA1NDNcclxuICB9XHJcblxyXG4gIGdldEF1dGhvcml6YXRpb25Ub2tlbigpIHtcclxuICAgIGNvbnN0IFRPS0VOID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRVc2VyJyk7XHJcbiAgICBsZXQgY3VycmVudFVzZXI7XHJcbiAgICBUT0tFTiAhPT0gbnVsbCA/IChjdXJyZW50VXNlciA9IEpTT04ucGFyc2UoVE9LRU4pKSA6IChjdXJyZW50VXNlciA9IHt9KTtcclxuICAgIHJldHVybiBjdXJyZW50VXNlci50b2tlbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRXh0cmFjdHMgdGhlIHRleHQgZnJvbSBhIHBhcnRpY3VsYXIgaHRtbCBjb250ZW50XHJcbiAgKiBAcGFyYW0gcyBodG1sIGNvbnRlbnQgZnJvbSB3aGljaCB0ZXh0IG5lZWRzIHRvIGJlIGV4dHJhY3RlZFxyXG4gICovXHJcbiAgZXh0cmFjdChzOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICBzcGFuLmlubmVySFRNTCA9IHM7XHJcbiAgICByZXR1cm4gc3Bhbi50ZXh0Q29udGVudCB8fCBzcGFuLmlubmVyVGV4dDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTW92ZXMgUXVlc3Rpb24gdG8gYSBwYXJ0aWN1bGFyIGluZGV4IGluIGFuIGFycmF5XHJcbiAgICogQHBhcmFtIHByZXZpb3VzIEluZGV4IGZyb20gd2hpY2ggUXVlc3Rpb24gc2hvdWxkIGJlIG1vdmVkXHJcbiAgICogQHBhcmFtIG5leHQgIEluZGV4IGJlZm9yZSB3aGljaCBRdWVzdGlvbiBzaG91bGQgYmUgbW92ZWRcclxuICAgKi9cclxuICBtb3ZlUXVlc3Rpb24ocHJldmlvdXM6IGFueSwgbmV4dDogYW55KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMsIHByZXZpb3VzLCBuZXh0KTtcclxuICB9XHJcbn1cclxuIl19
|
|
636
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUN6RCw4REFBOEQ7QUFJOUQsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBb0IsSUFBZ0IsRUFBYSxNQUF1QjtRQUFwRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBS3BDLHVCQUFrQixHQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMvRSwwQkFBcUIsR0FBRyxXQUFXLENBQUM7UUFDN0Isd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCwwQkFBcUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekQsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUN6QixvQkFBZSxHQUFH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QUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O01BR0U7SUFDRixPQUFPLENBQUMsQ0FBUztRQUNmLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDNUMsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsUUFBYSxFQUFFLElBQVM7UUFDbkMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7O1lBL29CRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVJRLFVBQVU7WUFJVixjQUFjLHVCQU9pQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMnO1xyXG4vLyBpbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJ3NyYy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JTZXJ2aWNlIHtcclxuICAgZW52ICE6YW55O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9ucykge1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGN1cnJlbnRQYWdlRGV0YWlsczogYW55ID0geyBwYWdlTmFtZTogJycsIHBhZ2VOdW1iZXI6IDEsIHBhZ2VEZXNjcmlwdGlvbjogJycgfTtcclxuICBwcmVmaXhGb3JRdWVzdGlvbk5hbWUgPSAnUXVlc3Rpb25fJztcclxuICBwdWJsaWMgYWN0aXZlUXVlc3Rpb25JbmRleCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtNSk7XHJcbiAgYWN0aXZlUXVlc3Rpb25TdHJlYW0kID0gdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyBjdXJyZW50UGFnZU51bWJlcjogbnVtYmVyID0gMTtcclxuICBwdWJsaWMgYWN0aXZlUXVlc3Rpb24gPSAwO1xyXG4gIHNob3dBZGRQYWdlT3B0aW9uID0gdHJ1ZTtcclxuICBzaG93UGFnZURldGFpbHMgPSBmYWxzZTtcclxuICBwdWJsaWMgc2NvcmUgPSB7XHJcbiAgICBkZWZhdWx0U2NvcmU6IDEsXHJcbiAgICBuZWdhdGl2ZVNjb3JlOiAwXHJcbiAgfVxyXG4gIHB1YmxpYyBhbGxQYWdlczogYW55ID0gW107XHJcbiAgc3RlcElkZW50aWZpZXIgPSAncGFnZXNjcmVlbic7IC8vIHRoaXMgdmFsdWUgY2FuIGJlIFwid2VsY29tZXNjcmVlblwiLFwidGhhbmt5b3VzY3JlZW5cIixcInBhZ2VzY3JlZW5cIiBvbmx5XHJcbiAgYXNzZXNzbWVudElkICE6IGFueTtcclxuICBwdWJsaWMgc2V0dGluZ3M6IGFueSA9IHtcclxuICAgIGFzc2Vzc21lbnRNb2RlOiBmYWxzZSxcclxuICAgIGRlZmF1bHRTY29yZTogMSxcclxuICAgIG5lZ2F0aXZlU2NvcmVDcml0ZXJpYTogJ0ZBSUxFRCcsXHJcbiAgICBuZWdhdGl2ZVNjb3JlOiAwLFxyXG4gICAgd2VpZ2h0YWdlRW5hYmxlZDogZmFsc2UsXHJcbiAgICBzZXR0aW5nc0VuYWJsZWQ6IGZhbHNlXHJcbiAgfVxyXG5cclxuICBmb3Jtc1BhZ2U6IGFueSA9IHtcclxuICAgIHZlcnNpb246IDIsXHJcbiAgICBxdWVzdGlvblJhbmRvbWl6ZTogdHJ1ZSxcclxuICAgIGFub255bW91c1Jlc3BvbnNlOiBmYWxzZSxcclxuICAgIGhhc1dlbGNvbWU6IGZhbHNlLFxyXG4gICAgaGFzV2VsY29tZURlc2NyaXB0aW9uOiB0cnVlLFxyXG4gICAgd2VsY29tZVRleHQ6ICcnLFxyXG4gICAgaGFzV2VsY29tZUltYWdlOiB0cnVlLFxyXG4gICAgd2VsY29tZUltYWdlOiAnJyxcclxuICAgIHdlbGNvbWVEZXNjcmlwdGlvbjogJycsXHJcbiAgICBoYXNUaGFua3M6IGZhbHNlLFxyXG4gICAgaGFzVGhhbmt5b3VJbWFnZTogZmFsc2UsXHJcbiAgICB0aGFua3lvdVRleHQ6ICcnLFxyXG4gICAgdGhhbmt5b3VJbWFnZTogJycsXHJcbiAgICBoYXNUaGFua3lvdURlc2NyaXB0aW9uOiB0cnVlLFxyXG4gICAgdGhhbmt5b3VEZXNjcmlwdGlvbjogJycsXHJcbiAgICBlbGVtZW50czogW10sXHJcbiAgICBwYWdlRGV0YWlsc0xpc3Q6IFtdLFxyXG4gICAgY3VzdG9tUmVzcG9uc2VTZXQ6IFtdLFxyXG4gICAgc2V0dGluZ3M6IHRoaXMuc2V0dGluZ3MsXHJcbiAgICByZXNwb25zZVNlZ21lbnQ6IHRoaXMuaW5pdGlhbGl6ZUVtcHR5UmVzcG9uc2VTZWdtZW50KClcclxuICB9O1xyXG5cclxuICBpbml0aWFsaXplRW1wdHlSZXNwb25zZVNlZ21lbnQoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgbWF4U2NvcmU6IDEwLFxyXG4gICAgICBzZWdtZW50czogW1xyXG5cclxuICAgICAgXVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkSGFuZGxlcihmb3JtRGF0YTogYW55LCBkZXN0aW5hdGlvbjogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLmVudi5maWxlVXBsb2FkRW5kUG9pbnQgKyBkZXN0aW5hdGlvbiwgZm9ybURhdGEpO1xyXG4gICAgLy9yZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihcImVudlwiICsgZGVzdGluYXRpb24sIGZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIGFkZFF1ZXN0aW9uKGV2dDogYW55LCBpbmRleD86IG51bWJlcikge1xyXG4gICAgc3dpdGNoIChldnQudHJpbSgpKSB7XHJcbiAgICAgIGNhc2UgJ3dlbGNvbWUnOiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IC0xO1xyXG4gICAgICAgIHRoaXMuc3RlcElkZW50aWZpZXIgPSAnd2VsY29tZXNjcmVlbic7XHJcbiAgICAgICAgdGhpcy5mb3Jtc1BhZ2UuaGFzV2VsY29tZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAndGhhbmt5b3UnOiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IC0yO1xyXG4gICAgICAgIHRoaXMuc3RlcElkZW50aWZpZXIgPSAndGhhbmt5b3VzY3JlZW4nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ211bHRpcGxlLWNob2ljZSc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVNdWx0aXBsZUNob2ljZShpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlQ2hlY2tib3goaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3N0YXItcmF0aW5nJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVN0YXJSYXRpbmcoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3NpbmdsZS10ZXh0Ym94Jzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVNpbmdsZVRleHRib3goaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2NvbW1lbnQtYm94Jzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZUNvbW1lbnRib3goaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ21hdHJpeC1kcm9wZG93bic6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVNYXRyaXhEcm9wZG93bihpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZHJvcGRvd24nOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRHJvcGRvd24oaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3NsaWRlcic6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTbGlkZXIoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3JhdGluZy1zY2FsZSc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVSYXRpbmdTY2FsZShpbmRleClcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdtdWx0aXBsZS10ZXh0Ym94Jzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZU11bHRpcGxlVGV4dGJveChpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZURhdGVUaW1lKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdmaWxlLXVwbG9hZCc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGaWxlVXBsb2FkKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdyYW5raW5nJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVJhbmtpbmcoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3N0YXItcmF0aW5nJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVN0YXJSYXRpbmcoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRUb1BhZ2Vmcm9tV2VsY29tZSgpIHtcclxuICAgIGlmIChbJ3RoYW5reW91c2NyZWVuJywgJ3dlbGNvbWVzY3JlZW4nXS5pbmNsdWRlcyh0aGlzLnN0ZXBJZGVudGlmaWVyKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5hbGxQYWdlcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuc3RlcElkZW50aWZpZXIgPSAncGFnZXNjcmVlbic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayB3aGV0aGVyIHRvIGRpc3BsYXkgUGFnZSBEZXRhaWxzIG9yIEFkZCBQYWdlIHRpbHRlIG9wdGlvblxyXG4gICAqL1xyXG4gIGNoZWNrRm9yUGFnZURldGFpbHMoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZURldGFpbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmN1cnJlbnRQYWdlRGV0YWlscy5wYWdlTmFtZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy5zaG93QWRkUGFnZU9wdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1BhZ2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dBZGRQYWdlT3B0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1BhZ2VEZXRhaWxzID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgbXVsdGlwbGUgY2hvaWNlXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVNdWx0aXBsZUNob2ljZShpbmRleD86IGFueSkge1xyXG5cclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdtdWx0aXBsZS1jaG9pY2UnLCBuYW1lOiBgYCwgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlciwgb3RoZXJDb25maWc6IHsgY29sb3I6ICcjMDAwMDAwJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUgfSxcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIG90aGVyVmFsdWU6ICdPdGhlcicsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLCB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgaGVscGluZ0xhYmVsOiAnJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUsIGNvbG9yOiB0aGlzLmdlbmVyYXRlUmFuZG9tQ29sb3IoKVxyXG4gICAgICAgIH1dXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIGNoZWNrYm94XHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVDaGVja2JveChpbmRleD86IGFueSkge1xyXG5cclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdjaGVja2JveCcsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBvdGhlckNvbmZpZzogeyBjb2xvcjogJyMwMDAwMDAnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiB0aGlzLnNjb3JlLmRlZmF1bHRTY29yZSB9LFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOlxyXG4gICAgICAgIFt7XHJcbiAgICAgICAgICB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsXHJcbiAgICAgICAgICBoZWxwaW5nTGFiZWw6ICcnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiB0aGlzLnNjb3JlLmRlZmF1bHRTY29yZSwgY29sb3I6IHRoaXMuZ2VuZXJhdGVSYW5kb21Db2xvcigpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgc3RhciByYXRpbmdcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqIFtOb3RlXTogUmF0aW5nIGxhYmVsIHR5cGUgY2FuIHRha2UgMiB2YWx1ZXMgJ3NwZWNpZmljJy8nc2NhbGUnXHJcbiAgICovXHJcbiAgY3JlYXRlU3RhclJhdGluZyhpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ3N0YXItcmF0aW5nJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSxcclxuICAgICAgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJywgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIGN1cnNvclR5cGU6ICdudW1iZXInLFxyXG4gICAgICBjdXJzb3JDb2xvcjogJyNmZjgwMDAnLCBzY2FsZTogMiwgc3RhclZhbHVlOiAnJywgaGFzUmF0aW5nTGFiZWw6IGZhbHNlLCByYXRpbmdMYWJlbFR5cGU6ICdzcGVjaWZpYycsXHJcbiAgICAgIHNjYWxlUmFuZ2VGcm9tOiAnTm90IGF0IGFsbCBsaWtlbHknLFxyXG4gICAgICBzY2FsZVJhbmdlVG86ICdFeHRyZW1lIExpa2VseScsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgaXNWaXNpYmxlOiB0cnVlLCB2YWx1ZTogMCwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IHRydWUsIGhlbHBpbmdMYWJlbDogJycgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgaXNWaXNpYmxlOiB0cnVlLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IHRydWUsIGhlbHBpbmdMYWJlbDogJycgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBzaW5nbGUgdGV4dGJveFxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlU2luZ2xlVGV4dGJveChpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ3NpbmdsZS10ZXh0Ym94JywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGhhc1ZhbGlkYXRpb246IGZhbHNlLCB2YWxpZGF0aW9uVHlwZTogJycsIGlzUmVxdWlyZWQ6IGZhbHNlLCBoYXNDaGFyYWN0ZXJMZW5ndGg6IGZhbHNlLCBtaW5DaGFyYWN0ZXJMZW5ndGg6IDAsXHJcbiAgICAgIG1heENoYXJhY3Rlckxlbmd0aDogMTAwLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFt7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiB0cnVlLCBoZWxwaW5nTGFiZWw6ICcnIH1dXHJcbiAgICB9O1xyXG5cclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuXHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgY29tbWVudCBib3hcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZUNvbW1lbnRib3goaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdjb21tZW50LWJveCcsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIGhhc0NoYXJhY3Rlckxlbmd0aDogZmFsc2UsIG1pbkNoYXJhY3Rlckxlbmd0aDogMCwgbWF4Q2hhcmFjdGVyTGVuZ3RoOiAwLCByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsXHJcbiAgICAgIG90aGVyVmFsdWU6ICdPdGhlcicsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLCBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLFxyXG4gICAgICBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSwgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgY2hvaWNlczogW1xyXG4gICAgICAgIHsgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnLCBpbWFnZVVSTDogJycgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgbWF0cml4IG9mIGRyb3Bkb3duXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVNYXRyaXhEcm9wZG93bihpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ21hdHJpeC1kcm9wZG93bicsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBvdGhlckNvbmZpZzogeyBjb2xvcjogJyMwMDAwMDAnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiAxIH0sXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFt7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9XSxcclxuICAgICAgY29sdW1uczogW3tcclxuICAgICAgICB0aXRsZTogJycsIHZhbHVlOiAxLCB3ZWlnaHQ6IDAsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyxcclxuICAgICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV1cclxuICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIGRyb3Bkb3duXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVEcm9wZG93bihpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ2Ryb3Bkb3duJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsIG90aGVyQ29uZmlnOiB7IGNvbG9yOiAnIzAwMDAwMCcsIGlzRmFpbGVkOiBmYWxzZSwgc2NvcmU6IHRoaXMuc2NvcmUuZGVmYXVsdFNjb3JlIH0sXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycsXHJcbiAgICAgICAgICBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiB0aGlzLnNjb3JlLmRlZmF1bHRTY29yZSwgY29sb3I6IHRoaXMuZ2VuZXJhdGVSYW5kb21Db2xvcigpXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIHNsaWRlclxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlU2xpZGVyKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnc2xpZGVyJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sXHJcbiAgICAgIGNob2ljZXM6IFt7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9XSxcclxuICAgICAgY2VudGVyUmFuZ2U6IGZhbHNlLCBhZGp1c3RTY2FsZTogZmFsc2UsIG51bWVyaWNCb3hFbmFibGVkOiBmYWxzZSwgbGVmdDogMCwgY2VudGVyOiAwLCByaWdodDogMTAwLFxyXG4gICAgICBzY2FsZVJhbmdlTWluOiAwLCBzY2FsZVJhbmdlTWF4OiAxMDAsIHN0ZXBTaXplOiAxMCwgc3RhcnRQb3NpdGlvbjogMCwgZWRpdG9yVmFsdWU6IDBcclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgbWF0cml4IHJhdGluZyBzY2FsZVxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlUmF0aW5nU2NhbGUoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdyYXRpbmctc2NhbGUnLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlcixcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIGhhc1JhdGluZ0xhYmVsOiBmYWxzZSwgcmF0aW5nTGFiZWxUeXBlOiAnJyxcclxuICAgICAgb3RoZXJWYWx1ZTogJ090aGVyJywgaGFzV2VpZ2h0OiBmYWxzZSwgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV0sXHJcbiAgICAgIGNvbHVtbnM6IFt7IHRpdGxlOiAnJywgdmFsdWU6IDEsIHdlaWdodDogMCwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH1dXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIHJhbmtpbmdcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZVJhbmtpbmcoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdyYW5raW5nJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBoYXNSYXRpbmdMYWJlbDogZmFsc2UsIGFsaWdubWVudDogZmFsc2UsXHJcbiAgICAgIHJldmVyc2U6IGZhbHNlLCBvbmx5TnVtYmVyOiB0cnVlLCBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLFxyXG4gICAgICBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSwgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgY2hvaWNlczogW1xyXG4gICAgICAgIHsgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH0sXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgbXVsdGlwbGUgdGV4dGJveFxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlTXVsdGlwbGVUZXh0Ym94KGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnbXVsdGlwbGUtdGV4dGJveCcsIG5hbWU6ICcnLFxyXG4gICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJywgb3RoZXJWYWx1ZTogJ090aGVyJywgaGFzUmF0aW5nTGFiZWw6IGZhbHNlLFxyXG4gICAgICBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSwgb25seU51bWJlcjogdHJ1ZSwgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSxcclxuICAgICAgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9LFxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIGRhdGUvdGltZVxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlRGF0ZVRpbWUoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdkYXRlLXRpbWUnLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlcixcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIG90aGVyVmFsdWU6ICdPdGhlcicsIGhhc1JhdGluZ0xhYmVsOiBmYWxzZSwgYWxpZ25tZW50OiBmYWxzZSxcclxuICAgICAgcmV2ZXJzZTogZmFsc2UsIG9ubHlOdW1iZXI6IHRydWUsIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLFxyXG4gICAgICB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLCBoYXNEYXRlOiB0cnVlLCBoYXNUaW1lOiBmYWxzZSwgZGF0ZUZvcm1hdDogJ0REL01NL1lZWVknLCB0aW1lRm9ybWF0OiAyNCxcclxuICAgICAgY2hvaWNlczogW1xyXG4gICAgICAgIHsgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH0sXHJcblxyXG4gICAgICBdLFxyXG4gICAgICBkYXRlOiB7IHRpdGxlOiAnJywgdmFsdWU6ICcnIH0sXHJcbiAgICAgIHRpbWU6IHsgdGl0bGU6ICcnLCB2YWx1ZTogJycgfVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBmaWxlIHVwbG9hZFxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlRmlsZVVwbG9hZChpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ2ZpbGUtdXBsb2FkJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0luc3RydWN0aW9uOiBmYWxzZSwgaW5zdHJ1Y3Rpb246ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGZpbGVUeXBlUmVzdHJpY3Rpb25zOiBmYWxzZSwgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsXHJcbiAgICAgIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9XSxcclxuICAgICAgYWxsb3dlZEZpbGVUeXBlczoge1xyXG4gICAgICAgIHBkZjogdHJ1ZSxcclxuICAgICAgICBkb2M6IHRydWUsXHJcbiAgICAgICAgcG5nOiB0cnVlLFxyXG4gICAgICAgIGpwZzogdHJ1ZSxcclxuICAgICAgICBnaWY6IHRydWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBpbWFnZSBjaG9pY2VcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZUltYWdlQ2hvaWNlKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnaW1hZ2UtY2hvaWNlJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSxcclxuICAgICAgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSwgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsXHJcbiAgICAgIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJywgaW1hZ2VVUkw6ICcnIH1cclxuXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBDcmVhdGVzIGFuZCBhZGRzIHRoZSBxdWVzdGlvbiB0byBsaXN0IG9mIHF1ZXN0aW9ucyBpZiBhIHF1ZXN0aW9uJ3MgaW5kZXggaXMgdW5kZWZpbmVkXHJcbiAqIEBwYXJhbSBlbGVtZW50IERldGFpbHMgb2YgcXVlc3Rpb24gdG8gYmUgY3JlYXRlZFxyXG4gKi9cclxuICBvcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudDogYW55KSB7XHJcblxyXG4gICAgZWxlbWVudC5uYW1lID0gdGhpcy5nZW5lcmF0ZVF1ZXN0aW9uTmFtZSh0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5sZW5ndGggKyAxKSxcclxuICAgICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMucHVzaChlbGVtZW50KTtcclxuICAgIHRoaXMuc2V0QWN0aXZlUXVlc3Rpb25CYXNlZE9uUGFnZUxlbmd0aCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhbmQgYWRkcyB0aGUgcXVlc3Rpb24gdG8gbGlzdCBvZiBxdWVzdGlvbnMgaWYgYSBxdWVzdGlvbidzIGluZGV4IGlzIHByZXNlbnRcclxuICAgKiBAcGFyYW0gZWxlbWVudCBEZXRhaWxzIG9mIHF1ZXN0aW9uIHRvIGJlIGNyZWF0ZWRcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gc2hvdWxkIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBvcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkge1xyXG5cclxuICAgIGVsZW1lbnQubmFtZSA9IHRoaXMuZ2VuZXJhdGVRdWVzdGlvbk5hbWUoaW5kZXggKyAxKTtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLnNwbGljZShpbmRleCArIDEsIDAsIGVsZW1lbnQpO1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbiA9IGluZGV4ICsgMTtcclxuICAgIHRoaXMuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KGluZGV4ICsgMSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAgKiBTZXRzIHRoZSBhY3RpdmUgcXVlc3Rpb24gYmFzZWQgb24gcGFydGljdWxhciBwYWdlXHJcbiAgICAqL1xyXG4gIHNldEFjdGl2ZVF1ZXN0aW9uQmFzZWRPblBhZ2VMZW5ndGgoKSB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5jdXJyZW50UGFnZU51bWJlcjsgaSsrKSB7XHJcbiAgICAgIGNvdW50ICs9IFsuLi50aGlzLmZvcm1zUGFnZS5lbGVtZW50c10ucmVkdWNlKFxyXG4gICAgICAgIChjb3VudGVyOiBhbnksIGN1cnJlbnRFbGVtZW50OiBhbnkpID0+IChpID09PSBjdXJyZW50RWxlbWVudC5wYWdlID8gY291bnRlciArIDEgOiBjb3VudGVyKSwgMCkgLSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbiA9IGNvdW50ICsgdGhpcy5jdXJyZW50UGFnZU51bWJlciAtIDE7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dChjb3VudCArIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgLSAxKTtcclxuXHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAvLyB9LCAxNTApO1xyXG4gICAgLy8gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICAvKipcclxuKiBTb3J0cyB0aGUgcXVlc3Rpb25zIGJhc2VkIG9uIHBhZ2UgbnVtYmVyXHJcbiovXHJcbiAgc29ydFF1ZXN0aW9uKCkge1xyXG4gICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIGEucGFnZSAtIGIucGFnZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgcXVlc3Rpb24gbmFtZSBmb3IgbmV3bHkgYWRkZWQgcXVlc3Rpb25cclxuICAgKiBAcGFyYW0gcXVlc3Rpb25JbmRleCBJbmRleCBvZiBxdWVzdGlvbiB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgZ2VuZXJhdGVRdWVzdGlvbk5hbWUocXVlc3Rpb25JbmRleDogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHF1ZXN0aW9uTmFtZXMgPSB0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5tYXAoKGE6IGFueSkgPT4gYS5uYW1lKTtcclxuICAgIGlmIChxdWVzdGlvbk5hbWVzLmluY2x1ZGVzKGAke3RoaXMucHJlZml4Rm9yUXVlc3Rpb25OYW1lfSR7cXVlc3Rpb25JbmRleH1gKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZVF1ZXN0aW9uTmFtZShxdWVzdGlvbkluZGV4ICsgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBuYW1lID0gJ1F1ZXN0aW9uXycgKyBxdWVzdGlvbkluZGV4LnRvU3RyaW5nKCk7XHJcbiAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZW5lcmF0ZVJhbmRvbUNvbG9yKCkge1xyXG4gICAgLy9yZXR1cm4gJyMnICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTY3NzcyMTUpLnRvU3RyaW5nKDE2KTtcclxuICAgIHJldHVybiAnIzAwMDAwMCdcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBTZXRzIHRoZSBxdWVzdGlvbiBhcyBhY3RpdmUgYmFzZWQgb24gdGhlIHBhcnRpY3VsYXIgaW5kZXhcclxuICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSBxdWVzdGlvbiB0byBiZSBtYXJrZWQgYXMgYWN0aXZlIHF1ZXN0aW9uXHJcbiAqL1xyXG4gIHNldGFjdGl2ZVF1ZXN0aW9uKGluZGV4PzogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uID0gaW5kZXg7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dChpbmRleCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gKiBEdXBsaWNhdGVzIGEgcXVlc3Rpb24gd2l0aCBwYXJ0aWN1bGFyIGluZGV4XHJcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiBxdWVzdGlvbiB0byBiZSBkdXBsaWNhdGVkXHJcbiAqL1xyXG4gIGNvcHlRdWVzdGlvbihpbmRleDogYW55KSB7XHJcbiAgICB0aGlzLnNldGFjdGl2ZVF1ZXN0aW9uKGluZGV4ICsgMSk7XHJcbiAgICBjb25zdCBDT1BZX0VMRU1FTlQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzW2luZGV4XSkpO1xyXG4gICAgaWYgKENPUFlfRUxFTUVOVC5lcnJvckFycmF5KSB7XHJcbiAgICAgIGRlbGV0ZSBDT1BZX0VMRU1FTlQuZXJyb3JBcnJheTtcclxuICAgIH1cclxuICAgIENPUFlfRUxFTUVOVC52aXNpYmlsaXR5TG9naWMgPSBbXTtcclxuICAgIGNvbnN0IGVsZW1lbnRzTmFtZXM6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnRzTmFtZXMucHVzaChlbGVtZW50Lm5hbWUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNoZWNrRm9yU2FtZU5hbWUoZWxlbWVudHNOYW1lcywgQ09QWV9FTEVNRU5UKTtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLnNwbGljZShpbmRleCArIDEsIDAsIENPUFlfRUxFTUVOVCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEFzc2lnbnMgYSB1bmlxdWUgbmFtZSB0byB0aGUgZHVwbGljYXRlZCBxdWVzdGlvblxyXG4gICAqIEBwYXJhbSBlbGVtZW50c05hbWVzIExpc3Qgb2YgcXVlc3Rpb24gbmFtZXNcclxuICAgKiBAcGFyYW0gQ09QWV9FTEVNRU5UIERldGFpbHMgb2YgcXVlc3Rpb24gZHVwbGljYXRlZFxyXG4gICAqL1xyXG4gIGNoZWNrRm9yU2FtZU5hbWUoZWxlbWVudHNOYW1lczogYW55LCBDT1BZX0VMRU1FTlQ6IGFueSkge1xyXG4gICAgaWYgKGVsZW1lbnRzTmFtZXMuaW5jbHVkZXMoQ09QWV9FTEVNRU5ULm5hbWUpKSB7XHJcbiAgICAgIGNvbnN0IENPUFlfRUxFTUVOVF9OQU1FID0gQ09QWV9FTEVNRU5ULm5hbWUuc3BsaXQoJ18nKTtcclxuICAgICAgQ09QWV9FTEVNRU5UX05BTUVbQ09QWV9FTEVNRU5UX05BTUUubGVuZ3RoIC0gMV0gPSAocGFyc2VJbnQoQ09QWV9FTEVNRU5UX05BTUVbQ09QWV9FTEVNRU5UX05BTUUubGVuZ3RoIC0gMV0sIDEwKSArIDEpLnRvU3RyaW5nKCk7XHJcbiAgICAgIENPUFlfRUxFTUVOVC5uYW1lID0gQ09QWV9FTEVNRU5UX05BTUUuam9pbignXycpO1xyXG4gICAgICB0aGlzLmNoZWNrRm9yU2FtZU5hbWUoZWxlbWVudHNOYW1lcywgQ09QWV9FTEVNRU5UKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAqIERlbGV0ZXMgdGhlIHF1ZXN0aW9uIG9uIGNsaWNrIG9mIGRlbGV0ZSBidXR0b25cclxuICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHF1ZXN0aW9uIHRvIGJlIGRlbGV0ZWRcclxuICovXHJcbiAgZGVsZXRlUXVlc3Rpb24oaW5kZXg6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVMb2dpY0Zyb21EZXBlbmRlbnRRdWVzdGlvbihpbmRleCk7XHJcbiAgICB0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuICAvKipcclxuICogUmVtb3ZlcyB0aGUgbG9naWMgZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHF1ZXN0aW9uIGZyb20gb3RoZXIgcXVlc3Rpb25zXHJcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiBxdWVzdGlvbiB3aG9zZSBsb2dpYyBkYXRhIG5lZWRzIHRvIGJlIHJlbW92ZWQgZnJvbSBvdGhlciBxdWVzdGlvbnNcclxuICovXHJcbiAgcmVtb3ZlTG9naWNGcm9tRGVwZW5kZW50UXVlc3Rpb24oaW5kZXg6IGFueSkge1xyXG4gICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuZm9yRWFjaCgocXVlc3Rpb25FbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHF1ZXN0aW9uRWxlbWVudC52aXNpYmlsaXR5TG9naWMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHF1ZXN0aW9uRWxlbWVudC52aXNpYmlsaXR5TG9naWMgPSBxdWVzdGlvbkVsZW1lbnQudmlzaWJpbGl0eUxvZ2ljLmZpbHRlcigobG9naWM6IGFueSkgPT5cclxuICAgICAgICAgIGxvZ2ljLnF1ZXN0aW9uTmFtZSAhPT0gdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHNbaW5kZXhdLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiogQWRkcyBhIG5ldyBwYWdlXHJcbiovXHJcbiAgYWRkUGFnZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID09PSAtMSB8fCB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID09PSAtMikge1xyXG4gICAgICAvL3RoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLm51bWJlck9mUGFnZXMoKSArIDE7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLmFsbFBhZ2VzLmxlbmd0aCArIDE7XHJcbiAgICAgIHRoaXMuYWxsUGFnZXMucHVzaCh0aGlzLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuICAgICAgdGhpcy5udW1iZXJPZlBhZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5hbGxQYWdlcy5sZW5ndGggKyAxO1xyXG4gICAgICB0aGlzLmFsbFBhZ2VzLnB1c2godGhpcy5jdXJyZW50UGFnZU51bWJlcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgKiBDb3VudHMgdGhlIG51bWJlciBvZiBwYWdlcyBpbiBhIHN1cnZleS9mb3JtXHJcbiAgKi9cclxuICBudW1iZXJPZlBhZ2VzKCk6IGFueSB7XHJcbiAgICBjb25zdCBQQUdFX0FSUkFZOiBhbnkgPSBbXTtcclxuICAgIGlmICh0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5sZW5ndGggIT09IDApIHtcclxuICAgICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgUEFHRV9BUlJBWS5wdXNoKGVsZW1lbnQucGFnZSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZURldGFpbHMucGFnZU51bWJlciA9IGVsZW1lbnQ/LnBhZ2U7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5wdXNoKHRoaXMuY3VycmVudFBhZ2VEZXRhaWxzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmFsbFBhZ2VzID0gWy4uLm5ldyBTZXQoUEFHRV9BUlJBWSldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodHRwT3B0aW9ucyA9IHtcclxuICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsIHRva2VuOiB0aGlzLmdldEF1dGhvcml6YXRpb25Ub2tlbigpIH0pXHJcbiAgfTtcclxuXHJcbiAgZmV0Y2hBc3Nlc3NtZW50RGF0YShpZDogc3RyaW5nKSB7XHJcbiAgICAvL21vZGU9YXNzZXNzbWVudC9mZXRjaFF1ZXN0aW9uc0J5QXNzZXNzbWVudElkJmlkPTYxZjNmNzg3MWM2MDAyMDAwOWEyMDU0M1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXCJlbnZcIiArICdhc3Nlc3NtZW50L2ZldGNoUXVlc3Rpb25zQnlBc3Nlc3NtZW50SWQmaWQ9JyArIGlkLCB0aGlzLmh0dHBPcHRpb25zKS5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIHNhdmVBc3Nlc3NtZW50KGlkOiBhbnksIHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFwiZW52XCIgKyAnYXNzZXNzbWVudC91cGRhdGUmaWQ9JyArIGlkLCBwYXlsb2FkLCB0aGlzLmh0dHBPcHRpb25zKVxyXG4gICAgLy8/bW9kZT1hc3Nlc3NtZW50L3VwZGF0ZSZpZD02MWYzZjc4NzFjNjAwMjAwMDlhMjA1NDNcclxuICB9XHJcblxyXG4gIGdldEF1dGhvcml6YXRpb25Ub2tlbigpIHtcclxuICAgIGNvbnN0IFRPS0VOID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRVc2VyJyk7XHJcbiAgICBsZXQgY3VycmVudFVzZXI7XHJcbiAgICBUT0tFTiAhPT0gbnVsbCA/IChjdXJyZW50VXNlciA9IEpTT04ucGFyc2UoVE9LRU4pKSA6IChjdXJyZW50VXNlciA9IHt9KTtcclxuICAgIHJldHVybiBjdXJyZW50VXNlci50b2tlbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRXh0cmFjdHMgdGhlIHRleHQgZnJvbSBhIHBhcnRpY3VsYXIgaHRtbCBjb250ZW50XHJcbiAgKiBAcGFyYW0gcyBodG1sIGNvbnRlbnQgZnJvbSB3aGljaCB0ZXh0IG5lZWRzIHRvIGJlIGV4dHJhY3RlZFxyXG4gICovXHJcbiAgZXh0cmFjdChzOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICBzcGFuLmlubmVySFRNTCA9IHM7XHJcbiAgICByZXR1cm4gc3Bhbi50ZXh0Q29udGVudCB8fCBzcGFuLmlubmVyVGV4dDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTW92ZXMgUXVlc3Rpb24gdG8gYSBwYXJ0aWN1bGFyIGluZGV4IGluIGFuIGFycmF5XHJcbiAgICogQHBhcmFtIHByZXZpb3VzIEluZGV4IGZyb20gd2hpY2ggUXVlc3Rpb24gc2hvdWxkIGJlIG1vdmVkXHJcbiAgICogQHBhcmFtIG5leHQgIEluZGV4IGJlZm9yZSB3aGljaCBRdWVzdGlvbiBzaG91bGQgYmUgbW92ZWRcclxuICAgKi9cclxuICBtb3ZlUXVlc3Rpb24ocHJldmlvdXM6IGFueSwgbmV4dDogYW55KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMsIHByZXZpb3VzLCBuZXh0KTtcclxuICB9XHJcbn1cclxuIl19
|