qms-angular 1.0.90 → 1.0.93
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/qms-angular.umd.js +81 -40
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/banner/models/qms-banner.model.js +9 -1
- package/esm2015/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.js +8 -4
- package/esm2015/lib/components/banner/qms-banner-confirm/qms-banner-confirm.module.js +7 -4
- package/esm2015/lib/components/button/button-toggle.js +1 -1
- package/esm2015/lib/components/button/button.js +1 -1
- package/esm2015/lib/components/list/list.js +2 -2
- package/esm2015/lib/components/related/popup/related-popup.component.js +1 -1
- package/esm2015/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.js +28 -7
- package/esm2015/lib/components/select-include-children/select-include-children.component.js +1 -1
- package/esm2015/lib/components/select-process-document/select-process-document.component.js +1 -1
- package/esm2015/lib/components/tree/tree.component.js +1 -1
- package/esm2015/lib/components/treeNew/tree.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/common/helper/fileHelper.js +15 -0
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +5 -18
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.js +9 -3
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +2 -2
- package/fesm2015/qms-angular.js +79 -39
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/banner/models/qms-banner.model.d.ts +10 -0
- package/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.d.ts +2 -1
- package/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.d.ts +7 -3
- package/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.d.ts +1 -1
- package/lib/qms-ckeditor-components/common/helper/fileHelper.d.ts +1 -0
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +0 -1
- package/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.d.ts +3 -1
- package/package.json +1 -1
- package/qms-angular.metadata.json +1 -1
- package/src/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.scss +14 -0
- package/src/lib/components/button/button-icon.scss +1 -1
- package/src/lib/components/button/button-toggle.scss +27 -70
- package/src/lib/components/list/_list-expansion.scss +11 -7
- package/src/lib/components/list/list.scss +2 -1
- package/src/lib/components/related/popup/related-popup.component.scss +0 -1
- package/src/lib/components/reports/qms-report-cover-portrait/qms-report-cover-portrait.component.scss +1 -2
- package/src/lib/components/select-include-children/select-include-children.component.scss +0 -1
- package/src/lib/components/select-process-document/select-process-document.component.scss +0 -1
- package/src/lib/components/tree/tree.component.scss +1 -1
- package/src/lib/components/treeNew/tree.component.scss +1 -1
- package/src/themes/core/_checkbox.scss +39 -38
- package/src/themes/core/_date-picker.scss +2 -2
- package/src/themes/core/_radio.scss +27 -79
- package/src/themes/core/_slide-toggle.scss +43 -36
- package/src/themes/core/_table.scss +1 -1
- package/src/themes/theme/_variable.scss +15 -6
@@ -503,7 +503,7 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
503
503
|
const dialogTemplate = this.dialog.open(QMSCKEditorFlowchartComponent, {
|
504
504
|
width: '89vw',
|
505
505
|
maxWidth: '100vw',
|
506
|
-
height: '
|
506
|
+
height: '725px',
|
507
507
|
maxHeight: '100vw',
|
508
508
|
data: id,
|
509
509
|
disableClose: true
|
@@ -636,4 +636,4 @@ QMSCKEditorComponent.propDecorators = {
|
|
636
636
|
qmsckContentOutput: [{ type: Output }],
|
637
637
|
onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
|
638
638
|
};
|
639
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvcW1zLWNrZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0wsT0FBTyxFQUFlLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGdCQUFnQixFQUEwQixNQUFNLG1DQUFtQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sdUJBQXVCLE1BQU0sb0NBQW9DLENBQUM7QUFHekUsT0FBTyxlQUFlLE1BQU0sd0NBQXdDLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDeEgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDbEgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7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LENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO3dCQUNuRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFoRFEsU0FBUztZQUVULHVCQUF1QjtZQWtCdkIsd0JBQXdCO1lBT3hCLHNCQUFzQjtZQWpCdEIsOEJBQThCO1lBWmdHLFNBQVM7WUFBcEYsVUFBVTs7O3dCQW9EbkUsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsS0FBSyxTQUFDLFVBQVU7dUJBQ2hCLEtBQUssU0FBQyxVQUFVO2lDQUNoQixNQUFNO3dCQVlOLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUW1zVXBsb2FkQWRhcHRlciwgUW1zVXBsb2FkQWRhcHRlckNvbmZpZyB9IGZyb20gJy4vY29tbW9uL2NsYXNzZXMvcW1zVXBsb2FkQWRhcHRlcic7XHJcbmltcG9ydCB7IENLRWRpdG9yRXZlbnRDb25zdCB9IGZyb20gJy4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckV2ZW50LmNvbnN0YW50JztcclxuaW1wb3J0IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zIGZyb20gJy4vY29tbW9uL2Z1bmN0aW9ucy9jb21tb24uZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckRhdGEgfSBmcm9tICcuL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclBsdWdpbiB9IGZyb20gJy4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcGx1Z2luLm1vZGVsJztcclxuaW1wb3J0IFFNU0NLRWRpdG9yTGluayBmcm9tICcuL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXVybC5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItYnBtbi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckZ1bGxzY3JlZW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWZ1bGxzY3JlZW4vcW1zLWNrZWRpdG9yLWZ1bGxzY3JlZW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAvcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItbGluay9xbXMtY2tlZGl0b3ItbGluay5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxvYWRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItbG9hZC10ZW1wbGF0ZS9xbXMtY2tlZGl0b3ItbG9hZC10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci10ZW1wbGF0ZS9xbXMtY2tlZGl0b3ItdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci10b29sdGlwL3Ftcy1ja2VkaXRvci10b29sdGlwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9ySW1hZ2VNYXAgfSBmcm9tICcuL21vZGVscy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRlbXBsYXRlIH0gZnJvbSAnLi9tb2RlbHMvcW1zLWNrZWRpdG9yLXRlbXBsYXRlLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb29sdGlwIH0gZnJvbSAnLi9tb2RlbHMvcW1zLWNrZWRpdG9yLXRvb2x0aXAubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tICcuL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yR2xvYmFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWdsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JBYm91dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItYWJvdXQvcW1zLWNrZWRpdG9yLWFib3V0LmNvbXBvbmVudCc7XHJcbi8vaW1wb3J0IHsgQ0tFZGl0b3I1IH0gZnJvbSAnQGNrZWRpdG9yL2NrZWRpdG9yNS1hbmd1bGFyL2NrZWRpdG9yJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uRGF0YSB9IGZyb20gJy4vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvcmVsYXRlZC9jb21tb24vZGF0YS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBQb3B1cERhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL3JlbGF0ZWQvbW9kZWwvcG9wdXAtZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFJlbGF0ZWRQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcmVsYXRlZC9wb3B1cC9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci10cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckZsb3djaGFydENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0L3Ftcy1ja2VkaXRvci1mbG93Y2hhcnQuY29tcG9uZW50JztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtY2tlZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtY2tlZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Ftcy1ja2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgUU1TQ0tFZGl0b3JGdWxsc2NyZWVuQ29tcG9uZW50LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUU1TQ0tFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUU1TQ0tFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZhbGlkYXRvciB7XHJcbiAgQElucHV0KCkgcW1zY2tEYXRhOiBRTVNDS0VkaXRvckRhdGE7XHJcbiAgQElucHV0KCkgcW1zY2tQbHVnaW46IFFNU0NLRWRpdG9yUGx1Z2luO1xyXG4gIEBJbnB1dCgpIHFtc2NrQ29udGVudElucHV0OiBzdHJpbmc7XHJcbiAgQElucHV0KCdkaXNhYmxlZCcpIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCdyZXF1aXJlZCcpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHFtc2NrQ29udGVudE91dHB1dDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIExBTkc6IGFueTtcclxuICBja0VkaXRvcjogYW55O1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBja2VkaXRvckNvbmZpZzogYW55O1xyXG4gIGNrRWRpdG9yRXZlbnRDb25zdCA9IENLRWRpdG9yRXZlbnRDb25zdDtcclxuICBjb3VudFdvcmQ6IG51bWJlcjtcclxuICBjb3VudENoYXI6IG51bWJlcjtcclxuICBlZGl0b3JJbnN0YW5jZTogYW55O1xyXG4gIGNrVGFnbmFtZTogc3RyaW5nO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmRhdGEuZXZlbnROYW1lKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfVEVNUExBVEVfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLnRlbXBsYXRlRXZlbnRIYW5kbGluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xPQURfVEVNUExBVEVfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmxvYWRUZW1wbGF0ZUV2ZW50SGFuZGxpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19MSU5LX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5saW5rRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19UT09MVElQX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy50b29sdGlwRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19JTUFHRU1BUF9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMuaW1hZ2VNYXBFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU5fUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmJwbW5FdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0FCT1VUX0NLRURJVE9SX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5hYm91dENLRWRpdG9yRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlRfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmZsb3djaGFydEV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfVE9HR0xFX1RPT0xCQVJfTVNHOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlVG9vbGJhckV2ZW50SGFuZGxpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUk9XU0VfVklERU9fTVNHOlxyXG4gICAgICAgIHRoaXMuYnJvd3NlVmlkZW9FdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3JcclxuICAgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXJ2aWNlOiBRTVNDS0VkaXRvckdsb2JhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyZWVTZXJ2aWNlOiBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBxbXNDS0VkaXRvckZ1bGxzY3JlZW5Db21wb25lbnQ6IFFNU0NLRWRpdG9yRnVsbHNjcmVlbkNvbXBvbmVudCxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmNrVGFnbmFtZSA9ICdkaXYnO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hbWUgPSAnQ0tFZGl0b3IgY3VzdG9tIGJ1aWxkJztcclxuICAgIHRoaXMuY2tFZGl0b3IgPSB0aGlzLnFtc2NrUGx1Z2luLnBsdWdpbk9iamVjdDtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2tlZGl0b3JDb25maWcgPSBDS0VkaXRvckNvbW1vbkZ1bmN0aW9ucy5nZXRDS0VkaXRvckNvbmZpZ3VyYXRpb24odGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhcik7XHJcbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2V0QXBpVXJsKHRoaXMucW1zY2tEYXRhLmFwaVVybCk7XHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRNYXRodHlwZUNvbmZpZygpKSB7XHJcbiAgICAgIHRoaXMuYWRkTWF0aFR5cGVDb25maWcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRUaW1lc3RhbXBDb25maWcoKSkge1xyXG4gICAgICB0aGlzLmFkZFRpbWVzdGFtcENvbmZpZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkVG9nZ2xlVG9vbGJhcigpKSB7XHJcbiAgICAgIHRoaXMuYWRkVG9nZ2xlVG9vbGJhckNvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZFdQcm9vZnJlYWRlcigpKSB7XHJcbiAgICAgIHRoaXMuYWRkV1Byb29mcmVhZGVyQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRUT0NUb29sYmFyKCkpIHtcclxuICAgICAgdGhpcy5hZGRUb2dnbGVUT0NDb25maWcoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZEZ1bGxTY3JlZW5Db25maWcoKSkge1xyXG4gICAgICB0aGlzLmFkZEZ1bGxTY3JlZW5Db25maWcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZWRpdG9ySW5zdGFuY2UpIHtcclxuICAgICAgdGhpcy5lZGl0b3JJbnN0YW5jZS5kZXN0cm95KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogKGNvbnRlbnQ6IGFueSkgPT4gdm9pZDtcclxuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ2NrLWRpc2FibGVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRXUHJvb2ZyZWFkZXIoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyh3cHJvb2ZyZWFkZXIpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlclxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zcmNVcmxcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRXUHJvb2ZyZWFkZXJDb25maWcoKSB7XHJcbiAgICBjb25zdCB3cHJvb2ZyZWFkZXJDb25maWcgPSB7XHJcbiAgICAgIHdwcm9vZnJlYWRlcjoge1xyXG4gICAgICAgIC4uLnRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlclxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKCF0aGlzLnFtc2NrRGF0YS53cHJvb2ZyZWFkZXIuc2VydmljZUlkIHx8IHRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zZXJ2aWNlSWQubGVuZ3RoID09IDApIHtcclxuICAgICAgLy9GYWxsYmFjayB2YWx1ZSBvZiBzZXJ2aWNlSWQgcHJvcGVydHkgdG8gZGVtbyBzZXJ2aWNlSWRcclxuICAgICAgdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyLnNlcnZpY2VJZCA9ICcxOktwa3ZRMi02S05Vai1MMVczdTItQzlqMEsxLVp2MnRZMS1DZkRPeC1XZkdSZzItcVh0Y2ktWXl5RTM0LWowOUg0Mi1iMGFDdDMtZDlhJztcclxuICAgIH1cclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB3cHJvb2ZyZWFkZXJDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVG9nZ2xlVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHRvZ2dsZVRvb2xiYXIpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLnRvZ2dsZVRvb2xiYXJcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRUb2dnbGVUb29sYmFyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnFtc2NrRGF0YS50b2dnbGVUb29sYmFyLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCB0b2dnbGVUb29sYmFyQ29uZmlnID0ge1xyXG4gICAgICB0b2dnbGVUb29sYmFyQ29uZmlnOiB7XHJcbiAgICAgICAgdG9vbGJhcjogaXRlbXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0b2dnbGVUb29sYmFyQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIGlzRW5hYmxlZEZ1bGxTY3JlZW5Db25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyhxbXNGdWxsc2NyZWVuKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmICEhdGhpcy5xbXNja0RhdGEuZnVsbFNjcmVlbkNsYXNzXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRGdWxsU2NyZWVuQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZnVsbFNjcmVlbkNvbmZpZyA9IHtcclxuICAgICAgZnVsbFNjcmVlbkNvbmZpZzoge1xyXG4gICAgICAgIGNsYXNzOiB0aGlzLnFtc2NrRGF0YS5mdWxsU2NyZWVuQ2xhc3NcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIGZ1bGxTY3JlZW5Db25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVE9DVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHRhYmxlT2ZDb250ZW50cykvZ21pO1xyXG4gICAgcmV0dXJuICEhdGhpcy5xbXNja0RhdGEudGFibGVPZkNvbnRlbnRIZWFkaW5nc1xyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFRvZ2dsZVRPQ0NvbmZpZygpIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5xbXNja0RhdGEudGFibGVPZkNvbnRlbnRIZWFkaW5ncy5zcGxpdCgnLCcpO1xyXG4gICAgY29uc3QgdGFibGVPZkNvbnRlbnRzID0ge1xyXG4gICAgICB0YWJsZU9mQ29udGVudHM6IHtcclxuICAgICAgICBzdXBwb3J0ZWRIZWFkaW5nczogaXRlbXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0YWJsZU9mQ29udGVudHMpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVGltZXN0YW1wQ29uZmlnKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC8odGltZXN0YW1wKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS50aW1lc3RhbXBGb3JtYXRcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRUaW1lc3RhbXBDb25maWcoKSB7XHJcbiAgICBjb25zdCB0aW1lc3RhbXBDb25maWcgPSB7XHJcbiAgICAgIHRpbWVzdGFtcENvbmZpZzoge1xyXG4gICAgICAgIGRhdGV0aW1lRm9ybWF0OiB0aGlzLnFtc2NrRGF0YS50aW1lc3RhbXBGb3JtYXRcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0aW1lc3RhbXBDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkTWF0aHR5cGVDb25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyhNYXRoVHlwZSl8KENoZW1UeXBlKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS5tYXRodHlwZVNlcnZpY2VVcmxcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRNYXRoVHlwZUNvbmZpZygpIHtcclxuICAgIGNvbnN0IG1hdGhUeXBlQ29uZmlnID0ge1xyXG4gICAgICBtYXRoVHlwZVBhcmFtZXRlcnM6IHtcclxuICAgICAgICBzZXJ2aWNlUHJvdmlkZXJQcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgICBVUkk6IHRoaXMucW1zY2tEYXRhLm1hdGh0eXBlU2VydmljZVVybCxcclxuICAgICAgICAgIHNlcnZlcjogJ2FzcHgnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIG1hdGhUeXBlQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZWQoeyBlZGl0b3IgfSkge1xyXG4gICAgLy90aGlzLnFtc2NrQ29udGVudElucHV0ID0gZWRpdG9yLmdldERhdGEoKTtcclxuICAgIHRoaXMucW1zY2tDb250ZW50T3V0cHV0LmVtaXQodGhpcy5xbXNja0NvbnRlbnRJbnB1dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25CbHVyKHsgZWRpdG9yIH0pIHtcclxuICAgIHRoaXMucW1zY2tDb250ZW50SW5wdXQgPSBlZGl0b3IuZ2V0RGF0YSgpO1xyXG4gICAgdGhpcy5xbXNja0NvbnRlbnRPdXRwdXQuZW1pdCh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcbiAgICBpZiAoIXRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRoaXMucW1zY2tDb250ZW50SW5wdXQgJiYgIXRoaXMucmVxdWlyZWQpID8gbnVsbCA6IHtcclxuICAgICAgdHlwZToge1xyXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcclxuICAgICAgICBhY3R1YWw6IGMudmFsdWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG9uUmVhZHlcclxuICAgKi9cclxuICBwdWJsaWMgb25SZWFkeShlZGl0b3IpIHtcclxuICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBlZGl0b3I7XHJcbiAgICBpZiAodGhpcy5xbXNja0NvbnRlbnRJbnB1dCkge1xyXG4gICAgICBlZGl0b3Iuc2V0RGF0YSh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdEVkaXRvcihlZGl0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RWRpdG9yKGVkaXRvcikge1xyXG4gICAgY29uc3QgaW1hZ2VVcGxvYWRUeXBlcyA9IGVkaXRvci5jb25maWcuZ2V0KCdpbWFnZS51cGxvYWQudHlwZXMnKTtcclxuICAgIGNvbnN0IG1heEZpbGVTaXplTUIgPSB0aGlzLnFtc2NrRGF0YS5tYXhGaWxlU2l6ZU1CO1xyXG4gICAgY29uc3QgY29uZmlnOiBRbXNVcGxvYWRBZGFwdGVyQ29uZmlnID0geyBhcGlVcmw6IHRoaXMucW1zY2tEYXRhLmFwaVVybCwgTEFORzogdGhpcy5MQU5HLCBpbWFnZVVwbG9hZFR5cGVzLCBtYXhGaWxlU2l6ZU1CIH07XHJcbiAgICBlZGl0b3IucGx1Z2lucy5nZXQoXCJGaWxlUmVwb3NpdG9yeVwiKS5jcmVhdGVVcGxvYWRBZGFwdGVyID0gKGxvYWRlcikgPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFFtc1VwbG9hZEFkYXB0ZXIobG9hZGVyLCBjb25maWcpO1xyXG4gICAgfTtcclxuXHJcbiAgICBlZGl0b3IudWlcclxuICAgICAgLmdldEVkaXRhYmxlRWxlbWVudCgpXHJcbiAgICAgIC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShlZGl0b3IudWkudmlldy50b29sYmFyLmVsZW1lbnQsIGVkaXRvci51aS5nZXRFZGl0YWJsZUVsZW1lbnQoKSk7XHJcblxyXG4gICAgLy8gQXBwZWQgV29yZGNvdW50IHRvIENLZWRpdG9yXHJcbiAgICBlZGl0b3IucGx1Z2lucy5nZXQoJ1dvcmRDb3VudCcpLm9uKCd1cGRhdGUnLCAoZXZ0LCBzdGF0cykgPT4ge1xyXG4gICAgICAvLyBQcmludHMgdGhlIGN1cnJlbnQgY29udGVudCBzdGF0aXN0aWNzLlxyXG4gICAgICBjb25zdCB3b3Jkc0JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53b3JkY291bnQtY29udGVudCcpO1xyXG4gICAgICBpZighIXdvcmRzQm94KXtcclxuICAgICAgICB3b3Jkc0JveC50ZXh0Q29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5XT1JEU306ICR7c3RhdHMud29yZHN9IC8gJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQ0hBUkFDVEVSU306ICR7c3RhdHMuY2hhcmFjdGVyc31gO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCB0ZW1wbGF0ZSAtIExvYWQgdGVtcGxhdGVcclxuICAgKi9cclxuICBwdWJsaWMgdGVtcGxhdGVFdmVudEhhbmRsaW5nKCkge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JUZW1wbGF0ZSA9IG5ldyBRTVNDS0VkaXRvclRlbXBsYXRlKCk7XHJcbiAgICBkYXRhLmlkID0gMDtcclxuICAgIGRhdGEuY29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLmVkaXQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvclRlbXBsYXRlQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICBoZWlnaHQ6ICc1MjBweCcsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAvLyBURE9cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIHRlbXBsYXRlIC0gTG9hZCB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2FkVGVtcGxhdGVFdmVudEhhbmRsaW5nKCkge1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yTG9hZFRlbXBsYXRlQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICBoZWlnaHQ6ICc3MDBweCcsXHJcbiAgICAgIGRhdGE6IHRoaXMucW1zY2tDb250ZW50SW5wdXQsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTE9BRF9URU1QTEFURV9QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbmNob3IgLSBMaW5rIC0gSW1hZ2UgbWFwcGluZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyBsaW5rRXZlbnRIYW5kbGluZyhsaW5rKSB7XHJcbiAgICBsZXQgZGF0YSA9IG5ldyBRTVNDS0VkaXRvckxpbmsoKTtcclxuICAgIGRhdGEgPSBsaW5rO1xyXG4gICAgZGF0YS5lZGl0b3JDb250ZW50ID0gdGhpcy5xbXNja0NvbnRlbnRJbnB1dDtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5xbXNja0RhdGEubW9kdWxlO1xyXG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMucW1zY2tEYXRhLmVudGl0eUlkO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yTGlua0NvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNjYwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xJTktfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9vbHRpcCBtYXBwaW5nXHJcbiAgICovXHJcbiAgcHVibGljIHRvb2x0aXBFdmVudEhhbmRsaW5nKHZhbHVlKSB7XHJcbiAgICBsZXQgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclRvb2x0aXAoKTtcclxuICAgIGRhdGEudGV4dCA9IHZhbHVlLnRleHQ7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSB2YWx1ZS5jb250ZW50O1xyXG4gICAgZGF0YS5ja0VkaXRvciA9IHRoaXMucW1zY2tQbHVnaW4ucGx1Z2luT2JqZWN0O1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvclRvb2x0aXBDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzU1NXB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19UT09MVElQX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBJbWFnZU1hcCBtYXBwaW5nXHJcbiAqL1xyXG4gIHB1YmxpYyBpbWFnZU1hcEV2ZW50SGFuZGxpbmcodmFsdWUpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9ySW1hZ2VNYXAoKTtcclxuICAgIGRhdGEubmFtZSA9IHZhbHVlLm5hbWU7XHJcbiAgICBkYXRhLmFyZWFzID0gdmFsdWUuYXJlYXM7XHJcbiAgICBkYXRhLmltYWdlVXJsID0gdmFsdWUuaW1hZ2VVcmw7XHJcbiAgICBkYXRhLmltYWdlV2lkdGggPSB2YWx1ZS5pbWFnZVdpZHRoO1xyXG4gICAgZGF0YS5pbWFnZUhlaWdodCA9IHZhbHVlLmltYWdlSGVpZ2h0O1xyXG4gICAgZGF0YS5tb2R1bGUgPSB0aGlzLnFtc2NrRGF0YS5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5xbXNja0RhdGEuZW50aXR5SWQ7XHJcbiAgICBkYXRhLmVkaXRvckNvbnRlbnQgPSB0aGlzLnFtc2NrQ29udGVudElucHV0O1xyXG4gICAgZGF0YS5saW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZCA9IHRoaXMucW1zY2tEYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9ySW1hZ2VNYXBDb21wb25lbnQsIHtcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19JTUFHRU1BUF9QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgQnVzaW5lc3MgUHJvY2VzcyBNb2RlbCBhbmQgTm90YXRpb25cclxuICAqL1xyXG4gIHB1YmxpYyBicG1uRXZlbnRIYW5kbGluZyhpZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgZGF0YSA9IG5ldyBRTVNDS0VkaXRvckJwbW5EYXRhKCk7XHJcbiAgICBkYXRhLmlkID0gaWQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnODl2dycsXHJcbiAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxyXG4gICAgICBoZWlnaHQ6ICc3MDBweCcsXHJcbiAgICAgIG1heEhlaWdodDogJzEwMHZ3JyxcclxuICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLypcclxuICAgQWJvdXQgQ0tFZGl0b3JcclxuICovXHJcbiAgcHVibGljIGFib3V0Q0tFZGl0b3JFdmVudEhhbmRsaW5nKHZlcnNpb246IHN0cmluZykge1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yQWJvdXRDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIGRhdGE6IHZlcnNpb24sXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIFRvb2xiYXIgdG9nZ2xlXHJcbiAgKi9cclxuICBwdWJsaWMgdG9nZ2xlVG9vbGJhckV2ZW50SGFuZGxpbmcoKSB7XHJcbiAgICBjb25zdCBxbXNja2VkaXRvciA9IHdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncW1zY2tlZGl0b3InKTtcclxuICAgIGNvbnN0IHRvZ2dsZUF0dHJpYnV0ZSA9ICdpc1RvZ2dsZVRvb2xiYXInO1xyXG4gICAgY29uc3QgY2tlZGl0b3JUYWcgPSAnY2tlZGl0b3InO1xyXG5cclxuICAgIGlmIChxbXNja2VkaXRvcikge1xyXG4gICAgICBjb25zdCBpc1RvZ2dsZVRvb2xiYXIgPSBxbXNja2VkaXRvci5nZXRBdHRyaWJ1dGUodG9nZ2xlQXR0cmlidXRlKSA9PSAndHJ1ZSc7XHJcbiAgICAgIGlmIChpc1RvZ2dsZVRvb2xiYXIpIHtcclxuICAgICAgICB0aGlzLmNrZWRpdG9yQ29uZmlnID0gQ0tFZGl0b3JDb21tb25GdW5jdGlvbnMuZ2V0Q0tFZGl0b3JDb25maWd1cmF0aW9uKHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIpO1xyXG4gICAgICAgIHFtc2NrZWRpdG9yLnNldEF0dHJpYnV0ZSh0b2dnbGVBdHRyaWJ1dGUsICdmYWxzZScpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2tlZGl0b3JDb25maWcgPSBDS0VkaXRvckNvbW1vbkZ1bmN0aW9ucy5nZXRDS0VkaXRvckNvbmZpZ3VyYXRpb24odGhpcy5xbXNja0RhdGEudG9nZ2xlVG9vbGJhcik7XHJcbiAgICAgICAgcW1zY2tlZGl0b3Iuc2V0QXR0cmlidXRlKHRvZ2dsZUF0dHJpYnV0ZSwgJ3RydWUnKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBvbkNoYW5nZWQgPSB0aGlzLm9uQ2hhbmdlZC5iaW5kKHRoaXMpO1xyXG4gICAgICBjb25zdCBvbkJsdXIgPSB0aGlzLm9uQmx1ci5iaW5kKHRoaXMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZWRpdG9ySW5zdGFuY2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5lZGl0b3JJbnN0YW5jZS5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvL1RoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZC5cclxuICAgICAgLy9UcmFja2luZyBzdGF0dXMgYW5kIHByb2dyZXNzIG9mIHRoZSBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy83MzgzXHJcbiAgICAgIGNvbnN0IHJvb3QgPSB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihja2VkaXRvclRhZyk7XHJcbiAgICAgIGlmICghIXJvb3QpIHtcclxuICAgICAgICBsZXQgZWRpdG9yRWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHJvb3QuY2hpbGRFbGVtZW50Q291bnQgPiAwKSB7XHJcbiAgICAgICAgICBlZGl0b3JFbGVtZW50ID0gQXJyYXkuZnJvbShyb290LmNoaWxkcmVuKS5maW5kKGkgPT4gaS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IHRoaXMuY2tUYWduYW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBlZGl0b3JFbGVtZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5ja1RhZ25hbWUpO1xyXG4gICAgICAgICAgZWRpdG9yRWxlbWVudC5zdHlsZSA9ICdkaXNwbGF5OiBub25lOyc7XHJcbiAgICAgICAgICByb290LmFwcGVuZENoaWxkKGVkaXRvckVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5ja0VkaXRvci5jcmVhdGUoZWRpdG9yRWxlbWVudCwgdGhpcy5ja2VkaXRvckNvbmZpZykudGhlbihlZGl0b3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pbml0RWRpdG9yKGVkaXRvcik7XHJcbiAgICAgICAgICB0aGlzLmVkaXRvckluc3RhbmNlID0gZWRpdG9yO1xyXG5cclxuICAgICAgICAgIC8vRGVsZXRlIGNhY2hlIGNvbnRlbnRcclxuICAgICAgICAgIGVkaXRvckVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgICAgICAgLy9zZXR1cCBlZGl0b3IgZXZlbnRzXHJcbiAgICAgICAgICBjb25zdCBtb2RlbERvY3VtZW50ID0gZWRpdG9yLm1vZGVsLmRvY3VtZW50O1xyXG4gICAgICAgICAgY29uc3Qgdmlld0RvY3VtZW50ID0gZWRpdG9yLmVkaXRpbmcudmlldy5kb2N1bWVudDtcclxuICAgICAgICAgIG1vZGVsRG9jdW1lbnQub24oJ2NoYW5nZTpkYXRhJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBvbkNoYW5nZWQoeyBlZGl0b3IgfSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB2aWV3RG9jdW1lbnQub24oJ2JsdXInLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG9uQmx1cih7IGVkaXRvciB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogRmxvd2NoYXJ0XHJcbiAqL1xyXG4gIHB1YmxpYyBmbG93Y2hhcnRFdmVudEhhbmRsaW5nKGlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckZsb3djaGFydENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzg5dncnLFxyXG4gICAgICBtYXhXaWR0aDogJzEwMHZ3JyxcclxuICAgICAgaGVpZ2h0OiAnNzAwcHgnLFxyXG4gICAgICBtYXhIZWlnaHQ6ICcxMDB2dycsXHJcbiAgICAgIGRhdGE6IGlkLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfRkxPV0NIQVJUX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJyb3dzZSBWaWRlb1xyXG4gICAqL1xyXG4gIHB1YmxpYyBicm93c2VWaWRlb0V2ZW50SGFuZGxpbmcodmFsdWUpIHtcclxuICAgIHRoaXMudHJlZVNlcnZpY2VcclxuICAgICAgLmdldFVwbG9hZFZpZGVvTGlzdCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmlkZW9zID0gcmVzcG9uc2UgfHwgW107XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICAgICAgYWxsb3dTZWxlY3RGb2xkZXI6IGZhbHNlLFxyXG4gICAgICAgICAgYXJlYU9mQ3VycmVudFByb2Nlc3M6ICcnLFxyXG4gICAgICAgICAgc2hvd0NoZWNrQm94OiB0cnVlLFxyXG4gICAgICAgICAgYWxsb3dNdWx0aXBsZUNoZWNrOiB2YWx1ZS5hbGxvd011bHRpcGxlRmlsZXMsXHJcbiAgICAgICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogdHJ1ZSxcclxuICAgICAgICAgIG1vZHVsZUlkOiBEYXRhVHlwZS5kb2N1bWVudCxcclxuICAgICAgICAgIG9wZW5JY29uOiAnZm9sZGVyX29wZW4nLFxyXG4gICAgICAgICAgb3Blbkljb25Db2xvcjogJyMxOTU0QTknLFxyXG4gICAgICAgICAgY2xvc2VJY29uOiAnZm9sZGVyX2ZpbGxlZCcsXHJcbiAgICAgICAgICBjbG9zZUljb25Db2xvcjogJyM0YWNhZmYnLFxyXG4gICAgICAgICAgaXRlbUljb246ICdpbnNlcnRfZHJpdmVfZmlsZScsXHJcbiAgICAgICAgICBpdGVtSWNvblBhdGg6ICcnLFxyXG4gICAgICAgICAgaXRlbUljb25CYXNlNjQ6ICcnLFxyXG4gICAgICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxyXG4gICAgICAgICAgZXhwYW5kQWxsOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBkYXRhOiBQb3B1cERhdGEgPSBuZXcgUG9wdXBEYXRhKCk7XHJcbiAgICAgICAgZGF0YS5tb2R1bGVJZCA9IDI7XHJcbiAgICAgICAgZGF0YS5tb2R1bGVOYW1lID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SLlNFTEVDVF9WSURFT19GUk9NX0FSQ0hJVkU7XHJcbiAgICAgICAgZGF0YS50cmVlRGF0YTEgPSB2aWRlb3MubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByb290SWQ6IGl0ZW0ucm9vdElkLFxyXG4gICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcclxuICAgICAgICAgICAgcm9vdE5hbWU6IGl0ZW0ucm9vdE5hbWUsXHJcbiAgICAgICAgICAgIHN1Yk5hbWU6IGl0ZW0uc3ViTmFtZSxcclxuICAgICAgICAgICAgY2hpbGRJZDogaXRlbS5jaGlsZElkLFxyXG4gICAgICAgICAgICBjaGlsZE5hbWU6IGl0ZW0uY2hpbGROYW1lLFxyXG4gICAgICAgICAgICBzdGF0dXNJZDogaXRlbS5zdGF0dXNJZCxcclxuICAgICAgICAgICAgZGlzcGxheUlkOiBpdGVtLmRpc3BsYXlJZCxcclxuICAgICAgICAgICAgY29udGVudFR5cGU6IGl0ZW0uY29udGVudFR5cGUsXHJcbiAgICAgICAgICAgIHVybDogaXRlbS51cmxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGF0YS50cmVlRGF0YTIgPSBbXTtcclxuICAgICAgICBkYXRhLnRyZWVDb25maWcxID0gY29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUmVsYXRlZFBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICBtaW5XaWR0aDogJzQ1MHB4JyxcclxuICAgICAgICAgIG1heFdpZHRoOiAnODAwcHgnLFxyXG4gICAgICAgICAgbWluSGVpZ2h0OiAnNjIwcHgnLFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICdxbXNja2VkaXRvci1icm93c2UtdmlkZW8tcG9wdXAnXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc2VhcmNoQm94ID0gd2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xbXNja2VkaXRvci1icm93c2UtdmlkZW8tcG9wdXAgI3Ftc2xpYl9yZWxhdGVkX3BvcHVwX3NlYXJjaCcpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgaWYgKHNlYXJjaEJveCkge1xyXG4gICAgICAgICAgICBzZWFyY2hCb3guc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDApO1xyXG5cclxuICAgICAgICBkaWFsb2dSZWZcclxuICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGlkcyA9IHJlc3VsdC5yZWR1Y2UoKHJlc3VsdCwgaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2l0ZW0uaWQudG9TdHJpbmcoKV0gPSBpdGVtLmlkO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgICAgICAgY29uc3QgdXJscyA9IHZpZGVvcy5maWx0ZXIoaSA9PiBpLmNoaWxkSWQgJiYgISFpZHNbaS5jaGlsZElkLnRvU3RyaW5nKCldKS5tYXAoaSA9PiBpLnVybCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JST1dTRV9WSURFT19SRVNQLCB7IGRldGFpbDogeyB1cmxzOiB1cmxzIH0gfSk7XHJcbiAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
639
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvcW1zLWNrZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0wsT0FBTyxFQUFlLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGdCQUFnQixFQUEwQixNQUFNLG1DQUFtQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sdUJBQXVCLE1BQU0sb0NBQW9DLENBQUM7QUFHekUsT0FBTyxlQUFlLE1BQU0sd0NBQXdDLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDeEgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDbEgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7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LENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO3dCQUNuRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFoRFEsU0FBUztZQUVULHVCQUF1QjtZQWtCdkIsd0JBQXdCO1lBT3hCLHNCQUFzQjtZQWpCdEIsOEJBQThCO1lBWmdHLFNBQVM7WUFBcEYsVUFBVTs7O3dCQW9EbkUsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsS0FBSyxTQUFDLFVBQVU7dUJBQ2hCLEtBQUssU0FBQyxVQUFVO2lDQUNoQixNQUFNO3dCQVlOLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUW1zVXBsb2FkQWRhcHRlciwgUW1zVXBsb2FkQWRhcHRlckNvbmZpZyB9IGZyb20gJy4vY29tbW9uL2NsYXNzZXMvcW1zVXBsb2FkQWRhcHRlcic7XHJcbmltcG9ydCB7IENLRWRpdG9yRXZlbnRDb25zdCB9IGZyb20gJy4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckV2ZW50LmNvbnN0YW50JztcclxuaW1wb3J0IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zIGZyb20gJy4vY29tbW9uL2Z1bmN0aW9ucy9jb21tb24uZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckRhdGEgfSBmcm9tICcuL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclBsdWdpbiB9IGZyb20gJy4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcGx1Z2luLm1vZGVsJztcclxuaW1wb3J0IFFNU0NLRWRpdG9yTGluayBmcm9tICcuL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXVybC5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItYnBtbi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckZ1bGxzY3JlZW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWZ1bGxzY3JlZW4vcW1zLWNrZWRpdG9yLWZ1bGxzY3JlZW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAvcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItbGluay9xbXMtY2tlZGl0b3ItbGluay5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxvYWRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItbG9hZC10ZW1wbGF0ZS9xbXMtY2tlZGl0b3ItbG9hZC10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci10ZW1wbGF0ZS9xbXMtY2tlZGl0b3ItdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci10b29sdGlwL3Ftcy1ja2VkaXRvci10b29sdGlwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9ySW1hZ2VNYXAgfSBmcm9tICcuL21vZGVscy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRlbXBsYXRlIH0gZnJvbSAnLi9tb2RlbHMvcW1zLWNrZWRpdG9yLXRlbXBsYXRlLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb29sdGlwIH0gZnJvbSAnLi9tb2RlbHMvcW1zLWNrZWRpdG9yLXRvb2x0aXAubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tICcuL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yR2xvYmFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWdsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JBYm91dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItYWJvdXQvcW1zLWNrZWRpdG9yLWFib3V0LmNvbXBvbmVudCc7XHJcbi8vaW1wb3J0IHsgQ0tFZGl0b3I1IH0gZnJvbSAnQGNrZWRpdG9yL2NrZWRpdG9yNS1hbmd1bGFyL2NrZWRpdG9yJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uRGF0YSB9IGZyb20gJy4vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvcmVsYXRlZC9jb21tb24vZGF0YS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBQb3B1cERhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL3JlbGF0ZWQvbW9kZWwvcG9wdXAtZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFJlbGF0ZWRQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcmVsYXRlZC9wb3B1cC9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci10cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckZsb3djaGFydENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0L3Ftcy1ja2VkaXRvci1mbG93Y2hhcnQuY29tcG9uZW50JztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtY2tlZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtY2tlZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Ftcy1ja2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgUU1TQ0tFZGl0b3JGdWxsc2NyZWVuQ29tcG9uZW50LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUU1TQ0tFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUU1TQ0tFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZhbGlkYXRvciB7XHJcbiAgQElucHV0KCkgcW1zY2tEYXRhOiBRTVNDS0VkaXRvckRhdGE7XHJcbiAgQElucHV0KCkgcW1zY2tQbHVnaW46IFFNU0NLRWRpdG9yUGx1Z2luO1xyXG4gIEBJbnB1dCgpIHFtc2NrQ29udGVudElucHV0OiBzdHJpbmc7XHJcbiAgQElucHV0KCdkaXNhYmxlZCcpIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCdyZXF1aXJlZCcpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHFtc2NrQ29udGVudE91dHB1dDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIExBTkc6IGFueTtcclxuICBja0VkaXRvcjogYW55O1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBja2VkaXRvckNvbmZpZzogYW55O1xyXG4gIGNrRWRpdG9yRXZlbnRDb25zdCA9IENLRWRpdG9yRXZlbnRDb25zdDtcclxuICBjb3VudFdvcmQ6IG51bWJlcjtcclxuICBjb3VudENoYXI6IG51bWJlcjtcclxuICBlZGl0b3JJbnN0YW5jZTogYW55O1xyXG4gIGNrVGFnbmFtZTogc3RyaW5nO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmRhdGEuZXZlbnROYW1lKSB7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfVEVNUExBVEVfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLnRlbXBsYXRlRXZlbnRIYW5kbGluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xPQURfVEVNUExBVEVfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmxvYWRUZW1wbGF0ZUV2ZW50SGFuZGxpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19MSU5LX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5saW5rRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19UT09MVElQX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy50b29sdGlwRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19JTUFHRU1BUF9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMuaW1hZ2VNYXBFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU5fUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmJwbW5FdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0FCT1VUX0NLRURJVE9SX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5hYm91dENLRWRpdG9yRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlRfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmZsb3djaGFydEV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfVE9HR0xFX1RPT0xCQVJfTVNHOlxyXG4gICAgICAgIHRoaXMudG9nZ2xlVG9vbGJhckV2ZW50SGFuZGxpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUk9XU0VfVklERU9fTVNHOlxyXG4gICAgICAgIHRoaXMuYnJvd3NlVmlkZW9FdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3JcclxuICAgKi9cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXJ2aWNlOiBRTVNDS0VkaXRvckdsb2JhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyZWVTZXJ2aWNlOiBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBxbXNDS0VkaXRvckZ1bGxzY3JlZW5Db21wb25lbnQ6IFFNU0NLRWRpdG9yRnVsbHNjcmVlbkNvbXBvbmVudCxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmNrVGFnbmFtZSA9ICdkaXYnO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hbWUgPSAnQ0tFZGl0b3IgY3VzdG9tIGJ1aWxkJztcclxuICAgIHRoaXMuY2tFZGl0b3IgPSB0aGlzLnFtc2NrUGx1Z2luLnBsdWdpbk9iamVjdDtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2tlZGl0b3JDb25maWcgPSBDS0VkaXRvckNvbW1vbkZ1bmN0aW9ucy5nZXRDS0VkaXRvckNvbmZpZ3VyYXRpb24odGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhcik7XHJcbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2V0QXBpVXJsKHRoaXMucW1zY2tEYXRhLmFwaVVybCk7XHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRNYXRodHlwZUNvbmZpZygpKSB7XHJcbiAgICAgIHRoaXMuYWRkTWF0aFR5cGVDb25maWcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRUaW1lc3RhbXBDb25maWcoKSkge1xyXG4gICAgICB0aGlzLmFkZFRpbWVzdGFtcENvbmZpZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkVG9nZ2xlVG9vbGJhcigpKSB7XHJcbiAgICAgIHRoaXMuYWRkVG9nZ2xlVG9vbGJhckNvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZFdQcm9vZnJlYWRlcigpKSB7XHJcbiAgICAgIHRoaXMuYWRkV1Byb29mcmVhZGVyQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRUT0NUb29sYmFyKCkpIHtcclxuICAgICAgdGhpcy5hZGRUb2dnbGVUT0NDb25maWcoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZEZ1bGxTY3JlZW5Db25maWcoKSkge1xyXG4gICAgICB0aGlzLmFkZEZ1bGxTY3JlZW5Db25maWcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZWRpdG9ySW5zdGFuY2UpIHtcclxuICAgICAgdGhpcy5lZGl0b3JJbnN0YW5jZS5kZXN0cm95KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogKGNvbnRlbnQ6IGFueSkgPT4gdm9pZDtcclxuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ2NrLWRpc2FibGVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRXUHJvb2ZyZWFkZXIoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyh3cHJvb2ZyZWFkZXIpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlclxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zcmNVcmxcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRXUHJvb2ZyZWFkZXJDb25maWcoKSB7XHJcbiAgICBjb25zdCB3cHJvb2ZyZWFkZXJDb25maWcgPSB7XHJcbiAgICAgIHdwcm9vZnJlYWRlcjoge1xyXG4gICAgICAgIC4uLnRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlclxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKCF0aGlzLnFtc2NrRGF0YS53cHJvb2ZyZWFkZXIuc2VydmljZUlkIHx8IHRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zZXJ2aWNlSWQubGVuZ3RoID09IDApIHtcclxuICAgICAgLy9GYWxsYmFjayB2YWx1ZSBvZiBzZXJ2aWNlSWQgcHJvcGVydHkgdG8gZGVtbyBzZXJ2aWNlSWRcclxuICAgICAgdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyLnNlcnZpY2VJZCA9ICcxOktwa3ZRMi02S05Vai1MMVczdTItQzlqMEsxLVp2MnRZMS1DZkRPeC1XZkdSZzItcVh0Y2ktWXl5RTM0LWowOUg0Mi1iMGFDdDMtZDlhJztcclxuICAgIH1cclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB3cHJvb2ZyZWFkZXJDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVG9nZ2xlVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHRvZ2dsZVRvb2xiYXIpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLnRvZ2dsZVRvb2xiYXJcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRUb2dnbGVUb29sYmFyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnFtc2NrRGF0YS50b2dnbGVUb29sYmFyLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCB0b2dnbGVUb29sYmFyQ29uZmlnID0ge1xyXG4gICAgICB0b2dnbGVUb29sYmFyQ29uZmlnOiB7XHJcbiAgICAgICAgdG9vbGJhcjogaXRlbXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0b2dnbGVUb29sYmFyQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIGlzRW5hYmxlZEZ1bGxTY3JlZW5Db25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyhxbXNGdWxsc2NyZWVuKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmICEhdGhpcy5xbXNja0RhdGEuZnVsbFNjcmVlbkNsYXNzXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRGdWxsU2NyZWVuQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZnVsbFNjcmVlbkNvbmZpZyA9IHtcclxuICAgICAgZnVsbFNjcmVlbkNvbmZpZzoge1xyXG4gICAgICAgIGNsYXNzOiB0aGlzLnFtc2NrRGF0YS5mdWxsU2NyZWVuQ2xhc3NcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIGZ1bGxTY3JlZW5Db25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVE9DVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHRhYmxlT2ZDb250ZW50cykvZ21pO1xyXG4gICAgcmV0dXJuICEhdGhpcy5xbXNja0RhdGEudGFibGVPZkNvbnRlbnRIZWFkaW5nc1xyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFRvZ2dsZVRPQ0NvbmZpZygpIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5xbXNja0RhdGEudGFibGVPZkNvbnRlbnRIZWFkaW5ncy5zcGxpdCgnLCcpO1xyXG4gICAgY29uc3QgdGFibGVPZkNvbnRlbnRzID0ge1xyXG4gICAgICB0YWJsZU9mQ29udGVudHM6IHtcclxuICAgICAgICBzdXBwb3J0ZWRIZWFkaW5nczogaXRlbXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0YWJsZU9mQ29udGVudHMpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVGltZXN0YW1wQ29uZmlnKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC8odGltZXN0YW1wKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS50aW1lc3RhbXBGb3JtYXRcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRUaW1lc3RhbXBDb25maWcoKSB7XHJcbiAgICBjb25zdCB0aW1lc3RhbXBDb25maWcgPSB7XHJcbiAgICAgIHRpbWVzdGFtcENvbmZpZzoge1xyXG4gICAgICAgIGRhdGV0aW1lRm9ybWF0OiB0aGlzLnFtc2NrRGF0YS50aW1lc3RhbXBGb3JtYXRcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0aW1lc3RhbXBDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkTWF0aHR5cGVDb25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyhNYXRoVHlwZSl8KENoZW1UeXBlKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS5tYXRodHlwZVNlcnZpY2VVcmxcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRNYXRoVHlwZUNvbmZpZygpIHtcclxuICAgIGNvbnN0IG1hdGhUeXBlQ29uZmlnID0ge1xyXG4gICAgICBtYXRoVHlwZVBhcmFtZXRlcnM6IHtcclxuICAgICAgICBzZXJ2aWNlUHJvdmlkZXJQcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgICBVUkk6IHRoaXMucW1zY2tEYXRhLm1hdGh0eXBlU2VydmljZVVybCxcclxuICAgICAgICAgIHNlcnZlcjogJ2FzcHgnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIG1hdGhUeXBlQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZWQoeyBlZGl0b3IgfSkge1xyXG4gICAgLy90aGlzLnFtc2NrQ29udGVudElucHV0ID0gZWRpdG9yLmdldERhdGEoKTtcclxuICAgIHRoaXMucW1zY2tDb250ZW50T3V0cHV0LmVtaXQodGhpcy5xbXNja0NvbnRlbnRJbnB1dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25CbHVyKHsgZWRpdG9yIH0pIHtcclxuICAgIHRoaXMucW1zY2tDb250ZW50SW5wdXQgPSBlZGl0b3IuZ2V0RGF0YSgpO1xyXG4gICAgdGhpcy5xbXNja0NvbnRlbnRPdXRwdXQuZW1pdCh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcbiAgICBpZiAoIXRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRoaXMucW1zY2tDb250ZW50SW5wdXQgJiYgIXRoaXMucmVxdWlyZWQpID8gbnVsbCA6IHtcclxuICAgICAgdHlwZToge1xyXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcclxuICAgICAgICBhY3R1YWw6IGMudmFsdWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG9uUmVhZHlcclxuICAgKi9cclxuICBwdWJsaWMgb25SZWFkeShlZGl0b3IpIHtcclxuICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBlZGl0b3I7XHJcbiAgICBpZiAodGhpcy5xbXNja0NvbnRlbnRJbnB1dCkge1xyXG4gICAgICBlZGl0b3Iuc2V0RGF0YSh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdEVkaXRvcihlZGl0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RWRpdG9yKGVkaXRvcikge1xyXG4gICAgY29uc3QgaW1hZ2VVcGxvYWRUeXBlcyA9IGVkaXRvci5jb25maWcuZ2V0KCdpbWFnZS51cGxvYWQudHlwZXMnKTtcclxuICAgIGNvbnN0IG1heEZpbGVTaXplTUIgPSB0aGlzLnFtc2NrRGF0YS5tYXhGaWxlU2l6ZU1CO1xyXG4gICAgY29uc3QgY29uZmlnOiBRbXNVcGxvYWRBZGFwdGVyQ29uZmlnID0geyBhcGlVcmw6IHRoaXMucW1zY2tEYXRhLmFwaVVybCwgTEFORzogdGhpcy5MQU5HLCBpbWFnZVVwbG9hZFR5cGVzLCBtYXhGaWxlU2l6ZU1CIH07XHJcbiAgICBlZGl0b3IucGx1Z2lucy5nZXQoXCJGaWxlUmVwb3NpdG9yeVwiKS5jcmVhdGVVcGxvYWRBZGFwdGVyID0gKGxvYWRlcikgPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFFtc1VwbG9hZEFkYXB0ZXIobG9hZGVyLCBjb25maWcpO1xyXG4gICAgfTtcclxuXHJcbiAgICBlZGl0b3IudWlcclxuICAgICAgLmdldEVkaXRhYmxlRWxlbWVudCgpXHJcbiAgICAgIC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShlZGl0b3IudWkudmlldy50b29sYmFyLmVsZW1lbnQsIGVkaXRvci51aS5nZXRFZGl0YWJsZUVsZW1lbnQoKSk7XHJcblxyXG4gICAgLy8gQXBwZWQgV29yZGNvdW50IHRvIENLZWRpdG9yXHJcbiAgICBlZGl0b3IucGx1Z2lucy5nZXQoJ1dvcmRDb3VudCcpLm9uKCd1cGRhdGUnLCAoZXZ0LCBzdGF0cykgPT4ge1xyXG4gICAgICAvLyBQcmludHMgdGhlIGN1cnJlbnQgY29udGVudCBzdGF0aXN0aWNzLlxyXG4gICAgICBjb25zdCB3b3Jkc0JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53b3JkY291bnQtY29udGVudCcpO1xyXG4gICAgICBpZiAoISF3b3Jkc0JveCkge1xyXG4gICAgICAgIHdvcmRzQm94LnRleHRDb250ZW50ID0gYCR7dGhpcy5MQU5HLlFNU0NLRURJVE9SLldPUkRTfTogJHtzdGF0cy53b3Jkc30gLyAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5DSEFSQUNURVJTfTogJHtzdGF0cy5jaGFyYWN0ZXJzfWA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIHRlbXBsYXRlIC0gTG9hZCB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyB0ZW1wbGF0ZUV2ZW50SGFuZGxpbmcoKSB7XHJcbiAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvclRlbXBsYXRlID0gbmV3IFFNU0NLRWRpdG9yVGVtcGxhdGUoKTtcclxuICAgIGRhdGEuaWQgPSAwO1xyXG4gICAgZGF0YS5jb250ZW50ID0gdGhpcy5xbXNja0NvbnRlbnRJbnB1dDtcclxuICAgIGRhdGEuZWRpdCA9IGZhbHNlO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yVGVtcGxhdGVDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzUyMHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vIFRET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdGVtcGxhdGUgLSBMb2FkIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgcHVibGljIGxvYWRUZW1wbGF0ZUV2ZW50SGFuZGxpbmcoKSB7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JMb2FkVGVtcGxhdGVDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzcwMHB4JyxcclxuICAgICAgZGF0YTogdGhpcy5xbXNja0NvbnRlbnRJbnB1dCxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19MT0FEX1RFTVBMQVRFX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuY2hvciAtIExpbmsgLSBJbWFnZSBtYXBwaW5nXHJcbiAgICovXHJcbiAgcHVibGljIGxpbmtFdmVudEhhbmRsaW5nKGxpbmspIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yTGluaygpO1xyXG4gICAgZGF0YSA9IGxpbms7XHJcbiAgICBkYXRhLmVkaXRvckNvbnRlbnQgPSB0aGlzLnFtc2NrQ29udGVudElucHV0O1xyXG4gICAgZGF0YS5tb2R1bGUgPSB0aGlzLnFtc2NrRGF0YS5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5xbXNja0RhdGEuZW50aXR5SWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICBoZWlnaHQ6ICc2NjBweCcsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTElOS19QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgdG9vbHRpcEV2ZW50SGFuZGxpbmcodmFsdWUpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yVG9vbHRpcCgpO1xyXG4gICAgZGF0YS50ZXh0ID0gdmFsdWUudGV4dDtcclxuICAgIGRhdGEuY29udGVudCA9IHZhbHVlLmNvbnRlbnQ7XHJcbiAgICBkYXRhLmNrRWRpdG9yID0gdGhpcy5xbXNja1BsdWdpbi5wbHVnaW5PYmplY3Q7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yVG9vbHRpcENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTU1cHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPT0xUSVBfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEltYWdlTWFwIG1hcHBpbmdcclxuICovXHJcbiAgcHVibGljIGltYWdlTWFwRXZlbnRIYW5kbGluZyh2YWx1ZSkge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JJbWFnZU1hcCgpO1xyXG4gICAgZGF0YS5uYW1lID0gdmFsdWUubmFtZTtcclxuICAgIGRhdGEuYXJlYXMgPSB2YWx1ZS5hcmVhcztcclxuICAgIGRhdGEuaW1hZ2VVcmwgPSB2YWx1ZS5pbWFnZVVybDtcclxuICAgIGRhdGEuaW1hZ2VXaWR0aCA9IHZhbHVlLmltYWdlV2lkdGg7XHJcbiAgICBkYXRhLmltYWdlSGVpZ2h0ID0gdmFsdWUuaW1hZ2VIZWlnaHQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkID0gdGhpcy5xbXNja0RhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0lNQUdFTUFQX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBCdXNpbmVzcyBQcm9jZXNzIE1vZGVsIGFuZCBOb3RhdGlvblxyXG4gICovXHJcbiAgcHVibGljIGJwbW5FdmVudEhhbmRsaW5nKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yQnBtbkRhdGEoKTtcclxuICAgIGRhdGEuaWQgPSBpZDtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5xbXNja0RhdGEubW9kdWxlO1xyXG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMucW1zY2tEYXRhLmVudGl0eUlkO1xyXG4gICAgZGF0YS5lZGl0b3JDb250ZW50ID0gdGhpcy5xbXNja0NvbnRlbnRJbnB1dDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckJwbW5Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc4OXZ3JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGhlaWdodDogJzcwMHB4JyxcclxuICAgICAgbWF4SGVpZ2h0OiAnMTAwdncnLFxyXG4gICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU5fUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKlxyXG4gICBBYm91dCBDS0VkaXRvclxyXG4gKi9cclxuICBwdWJsaWMgYWJvdXRDS0VkaXRvckV2ZW50SGFuZGxpbmcodmVyc2lvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JBYm91dENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgZGF0YTogdmVyc2lvbixcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgVG9vbGJhciB0b2dnbGVcclxuICAqL1xyXG4gIHB1YmxpYyB0b2dnbGVUb29sYmFyRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IHFtc2NrZWRpdG9yID0gd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxbXNja2VkaXRvcicpO1xyXG4gICAgY29uc3QgdG9nZ2xlQXR0cmlidXRlID0gJ2lzVG9nZ2xlVG9vbGJhcic7XHJcbiAgICBjb25zdCBja2VkaXRvclRhZyA9ICdja2VkaXRvcic7XHJcblxyXG4gICAgaWYgKHFtc2NrZWRpdG9yKSB7XHJcbiAgICAgIGNvbnN0IGlzVG9nZ2xlVG9vbGJhciA9IHFtc2NrZWRpdG9yLmdldEF0dHJpYnV0ZSh0b2dnbGVBdHRyaWJ1dGUpID09ICd0cnVlJztcclxuICAgICAgaWYgKGlzVG9nZ2xlVG9vbGJhcikge1xyXG4gICAgICAgIHRoaXMuY2tlZGl0b3JDb25maWcgPSBDS0VkaXRvckNvbW1vbkZ1bmN0aW9ucy5nZXRDS0VkaXRvckNvbmZpZ3VyYXRpb24odGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhcik7XHJcbiAgICAgICAgcW1zY2tlZGl0b3Iuc2V0QXR0cmlidXRlKHRvZ2dsZUF0dHJpYnV0ZSwgJ2ZhbHNlJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ja2VkaXRvckNvbmZpZyA9IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zLmdldENLRWRpdG9yQ29uZmlndXJhdGlvbih0aGlzLnFtc2NrRGF0YS50b2dnbGVUb29sYmFyKTtcclxuICAgICAgICBxbXNja2VkaXRvci5zZXRBdHRyaWJ1dGUodG9nZ2xlQXR0cmlidXRlLCAndHJ1ZScpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlZCA9IHRoaXMub25DaGFuZ2VkLmJpbmQodGhpcyk7XHJcbiAgICAgIGNvbnN0IG9uQmx1ciA9IHRoaXMub25CbHVyLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5lZGl0b3JJbnN0YW5jZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRvckluc3RhbmNlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLlxyXG4gICAgICAvL1RyYWNraW5nIHN0YXR1cyBhbmQgcHJvZ3Jlc3Mgb2YgdGhlIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUvaXNzdWVzLzczODNcclxuICAgICAgY29uc3Qgcm9vdCA9IHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNrZWRpdG9yVGFnKTtcclxuICAgICAgaWYgKCEhcm9vdCkge1xyXG4gICAgICAgIGxldCBlZGl0b3JFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICBpZiAocm9vdC5jaGlsZEVsZW1lbnRDb3VudCA+IDApIHtcclxuICAgICAgICAgIGVkaXRvckVsZW1lbnQgPSBBcnJheS5mcm9tKHJvb3QuY2hpbGRyZW4pLmZpbmQoaSA9PiBpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5ja1RhZ25hbWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGVkaXRvckVsZW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLmNrVGFnbmFtZSk7XHJcbiAgICAgICAgICBlZGl0b3JFbGVtZW50LnN0eWxlID0gJ2Rpc3BsYXk6IG5vbmU7JztcclxuICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZWRpdG9yRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNrRWRpdG9yLmNyZWF0ZShlZGl0b3JFbGVtZW50LCB0aGlzLmNrZWRpdG9yQ29uZmlnKS50aGVuKGVkaXRvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmluaXRFZGl0b3IoZWRpdG9yKTtcclxuICAgICAgICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBlZGl0b3I7XHJcblxyXG4gICAgICAgICAgLy9EZWxldGUgY2FjaGUgY29udGVudFxyXG4gICAgICAgICAgZWRpdG9yRWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuXHJcbiAgICAgICAgICAvL3NldHVwIGVkaXRvciBldmVudHNcclxuICAgICAgICAgIGNvbnN0IG1vZGVsRG9jdW1lbnQgPSBlZGl0b3IubW9kZWwuZG9jdW1lbnQ7XHJcbiAgICAgICAgICBjb25zdCB2aWV3RG9jdW1lbnQgPSBlZGl0b3IuZWRpdGluZy52aWV3LmRvY3VtZW50O1xyXG4gICAgICAgICAgbW9kZWxEb2N1bWVudC5vbignY2hhbmdlOmRhdGEnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlZCh7IGVkaXRvciB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHZpZXdEb2N1bWVudC5vbignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgb25CbHVyKHsgZWRpdG9yIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBGbG93Y2hhcnRcclxuICovXHJcbiAgcHVibGljIGZsb3djaGFydEV2ZW50SGFuZGxpbmcoaWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yRmxvd2NoYXJ0Q29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnODl2dycsXHJcbiAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxyXG4gICAgICBoZWlnaHQ6ICc3MjVweCcsXHJcbiAgICAgIG1heEhlaWdodDogJzEwMHZ3JyxcclxuICAgICAgZGF0YTogaWQsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlRfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnJvd3NlIFZpZGVvXHJcbiAgICovXHJcbiAgcHVibGljIGJyb3dzZVZpZGVvRXZlbnRIYW5kbGluZyh2YWx1ZSkge1xyXG4gICAgdGhpcy50cmVlU2VydmljZVxyXG4gICAgICAuZ2V0VXBsb2FkVmlkZW9MaXN0KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zdCB2aWRlb3MgPSByZXNwb25zZSB8fCBbXTtcclxuICAgICAgICBjb25zdCBjb25maWcgPSB7XHJcbiAgICAgICAgICBhbGxvd1NlbGVjdEZvbGRlcjogZmFsc2UsXHJcbiAgICAgICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXHJcbiAgICAgICAgICBzaG93Q2hlY2tCb3g6IHRydWUsXHJcbiAgICAgICAgICBhbGxvd011bHRpcGxlQ2hlY2s6IHZhbHVlLmFsbG93TXVsdGlwbGVGaWxlcyxcclxuICAgICAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiB0cnVlLFxyXG4gICAgICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLmRvY3VtZW50LFxyXG4gICAgICAgICAgb3Blbkljb246ICdmb2xkZXJfb3BlbicsXHJcbiAgICAgICAgICBvcGVuSWNvbkNvbG9yOiAnIzE5NTRBOScsXHJcbiAgICAgICAgICBjbG9zZUljb246ICdmb2xkZXJfZmlsbGVkJyxcclxuICAgICAgICAgIGNsb3NlSWNvbkNvbG9yOiAnIzRhY2FmZicsXHJcbiAgICAgICAgICBpdGVtSWNvbjogJ2luc2VydF9kcml2ZV9maWxlJyxcclxuICAgICAgICAgIGl0ZW1JY29uUGF0aDogJycsXHJcbiAgICAgICAgICBpdGVtSWNvbkJhc2U2NDogJycsXHJcbiAgICAgICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXHJcbiAgICAgICAgICBleHBhbmRBbGw6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IFBvcHVwRGF0YSA9IG5ldyBQb3B1cERhdGEoKTtcclxuICAgICAgICBkYXRhLm1vZHVsZUlkID0gMjtcclxuICAgICAgICBkYXRhLm1vZHVsZU5hbWUgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuU0VMRUNUX1ZJREVPX0ZST01fQVJDSElWRTtcclxuICAgICAgICBkYXRhLnRyZWVEYXRhMSA9IHZpZGVvcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJvb3RJZDogaXRlbS5yb290SWQsXHJcbiAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxyXG4gICAgICAgICAgICByb290TmFtZTogaXRlbS5yb290TmFtZSxcclxuICAgICAgICAgICAgc3ViTmFtZTogaXRlbS5zdWJOYW1lLFxyXG4gICAgICAgICAgICBjaGlsZElkOiBpdGVtLmNoaWxkSWQsXHJcbiAgICAgICAgICAgIGNoaWxkTmFtZTogaXRlbS5jaGlsZE5hbWUsXHJcbiAgICAgICAgICAgIHN0YXR1c0lkOiBpdGVtLnN0YXR1c0lkLFxyXG4gICAgICAgICAgICBkaXNwbGF5SWQ6IGl0ZW0uZGlzcGxheUlkLFxyXG4gICAgICAgICAgICBjb250ZW50VHlwZTogaXRlbS5jb250ZW50VHlwZSxcclxuICAgICAgICAgICAgdXJsOiBpdGVtLnVybFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBkYXRhLnRyZWVEYXRhMiA9IFtdO1xyXG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzEgPSBjb25maWc7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWxhdGVkUG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICAgIG1pbldpZHRoOiAnNDUwcHgnLFxyXG4gICAgICAgICAgbWF4V2lkdGg6ICc4MDBweCcsXHJcbiAgICAgICAgICBtaW5IZWlnaHQ6ICc2MjBweCcsXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgcGFuZWxDbGFzczogJ3Ftc2NrZWRpdG9yLWJyb3dzZS12aWRlby1wb3B1cCdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzZWFyY2hCb3ggPSB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnFtc2NrZWRpdG9yLWJyb3dzZS12aWRlby1wb3B1cCAjcW1zbGliX3JlbGF0ZWRfcG9wdXBfc2VhcmNoJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBpZiAoc2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgIHNlYXJjaEJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMCk7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZlxyXG4gICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaWRzID0gcmVzdWx0LnJlZHVjZSgocmVzdWx0LCBpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbaXRlbS5pZC50b1N0cmluZygpXSA9IGl0ZW0uaWQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgIH0sIHt9KTtcclxuICAgICAgICAgICAgICBjb25zdCB1cmxzID0gdmlkZW9zLmZpbHRlcihpID0+IGkuY2hpbGRJZCAmJiAhIWlkc1tpLmNoaWxkSWQudG9TdHJpbmcoKV0pLm1hcChpID0+IGkudXJsKTtcclxuICAgICAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlJPV1NFX1ZJREVPX1JFU1AsIHsgZGV0YWlsOiB7IHVybHM6IHVybHMgfSB9KTtcclxuICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|