qms-angular 1.1.39 → 1.1.41

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. package/bundles/qms-angular.umd.js +185 -69
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
  4. package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
  5. package/esm2015/lib/components/select-access-dialog/model/select-access-config.model.js +5 -1
  6. package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +56 -11
  7. package/esm2015/lib/components/select-department/model/select-department-popup-data.model.js +2 -1
  8. package/esm2015/lib/components/select-department/select-department.component.js +3 -3
  9. package/esm2015/lib/components/select-department-tree/model/select-department-tree.config.js +2 -1
  10. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +90 -44
  11. package/esm2015/lib/components/select-department-tree/service/select-department-tree-global.service.js +7 -1
  12. package/esm2015/lib/components/treeNew/tree.component.js +3 -3
  13. package/esm2015/lib/model/no.js +2 -2
  14. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +4 -2
  15. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +2 -2
  16. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +4 -4
  17. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +6 -4
  18. package/fesm2015/qms-angular.js +172 -65
  19. package/fesm2015/qms-angular.js.map +1 -1
  20. package/lib/common/models/qms-flat-node.model.d.ts +4 -0
  21. package/lib/common/models/qms-tree-node.model.d.ts +8 -0
  22. package/lib/components/select-access-dialog/model/select-access-config.model.d.ts +4 -0
  23. package/lib/components/select-access-dialog/select-access-dialog.component.d.ts +2 -0
  24. package/lib/components/select-department/model/select-department-popup-data.model.d.ts +1 -0
  25. package/lib/components/select-department-tree/model/select-department-tree.config.d.ts +1 -0
  26. package/lib/components/select-department-tree/select-department-tree.component.d.ts +4 -0
  27. package/package.json +1 -1
  28. package/qms-angular.metadata.json +1 -1
  29. package/src/assets/jointjs/scss/bpmn.scss +9 -0
  30. package/src/lib/components/select-department/select-department.component.scss +1 -0
  31. package/src/lib/components/select-department-tree/select-department-tree.component.scss +23 -0
@@ -234,7 +234,7 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
234
234
  selectOne: true
235
235
  };
236
236
  this.documentConfig = {
237
- allowSelectFolder: true,
237
+ allowSelectFolder: !isOnlyDocument,
238
238
  areaOfCurrentProcess: '',
239
239
  showCheckBox: false,
240
240
  moduleId: DataType.document,
@@ -651,4 +651,4 @@ QMSCKEditorLinkComponent.ctorParameters = () => [
651
651
  QMSCKEditorLinkComponent.propDecorators = {
652
652
  ckEditor: [{ type: Input }]
653
653
  };
654
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1saW5rL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEdBQ2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFakUsT0FBTyxtQkFBbUIsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdC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QW1CO2dCQUM3QixtL1ZBQWlEOzthQUVsRDs7O1lBL0RDLGlCQUFpQjtZQVVqQixTQUFTO1lBTUYsdUJBQXVCO1lBVXZCLHNCQUFzQjtZQUR0Qix3QkFBd0I7WUFPeEIsc0JBQXNCO1lBRnRCLHFDQUFxQztZQW5CNUMsWUFBWTtZQVlQLGVBQWUsdUJBMEdqQixNQUFNLFNBQUMsZUFBZTs7O3VCQTdEeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXHJcbmltcG9ydCB7XHJcbiAgTWF0RGlhbG9nLFxyXG4gIE1hdERpYWxvZ1JlZixcclxuICBNQVRfRElBTE9HX0RBVEEsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGlua0FuY2hvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLWFuY2hvci5lbnVtJztcclxuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvbGluay10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBQcm90b2NvbFR5cGUsIFByb3RvY29sVHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvcHJvdG9jb2wtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgVGFyZ2V0VHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvclBhcmFtdGVyIGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBhcmFtZXRlci5tb2RlbCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvckxpbmsgZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItdXJsLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1jb21tb24uc2VydmljZXNcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1saW5rLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5rQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL2RhdGEtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy90cmVlXCI7XHJcbmltcG9ydCB7IFFNU1NlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2UsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwQ29tcG9uZW50LCBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9zZWxlY3QtcHJvY2Vzcy1kb2N1bWVudFwiO1xyXG5pbXBvcnQgeyBNb2R1bGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL21vZHVsZS10eXBlLmVudW1cIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUcmVlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItdHJlZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCBndWlkSGVscGVyIGZyb20gXCIuLi8uLi9jb21tb24vaGVscGVyL2d1aWRIZWxwZXJcIjtcclxuaW1wb3J0IHsgRG9jdW1lbnROb2RlVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZW51bS9kb2N1bWVudC1ub2RlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IElSZWxhdGVkIH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvcmVsYXRlZC9tb2RlbC9yZWxhdGVkLWRhdGEubW9kZWxcIjtcclxuXHJcbmludGVyZmFjZSBJTGlua1R5cGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSVRhcmdldCB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJUHJvdG9jb2wge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSUFuY2hvciB7XHJcbiAgdmFsdWU6IG51bWJlcjtcclxuICB2aWV3VmFsdWU6IHN0cmluZztcclxuICBhbmNob3JWYWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJxbXMtY2tlZGl0b3ItbGlua1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vcW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckxpbmtDb21wb25lbnRcclxuICBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcclxuXHJcbiAgQElucHV0KCkgY2tFZGl0b3I6IGFueTtcclxuXHJcbiAgTEFORzogYW55O1xyXG4gIGxpbmtGb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgdGFyZ2V0TGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICBwcm90b2NvbExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxyXG4gICAgdXJsOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGFkdmlzb3J5VGl0bGU6IG5ldyBGb3JtQ29udHJvbCgpLFxyXG4gIH0pO1xyXG4gIGFuY2hvclRleHRGb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgYW5jaG9yVGV4dDogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgfSk7XHJcbiAgZW1haWxGb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgZW1haWxBZGRyZXNzOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGVtYWlsU3ViamVjdDogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICBlbWFpbEJvZHk6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gIH0pO1xyXG4gIGFuY2hvckRvY0Zvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBhbmNob3JUaXRsZTogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICBhbmNob3JCeU5hbWU6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gIH0pO1xyXG4gIGlzRXhwYW5kZWQgPSB0cnVlO1xyXG4gIGxpbmtUeXBlczogSUxpbmtUeXBlW10gPSBbXTtcclxuICB0YXJnZXRzOiBJVGFyZ2V0W10gPSBbXTtcclxuICBwcm90b2NvbHM6IElQcm90b2NvbFtdID0gW107XHJcbiAgYW5jaG9yRG9jdW1lbnRzOiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdID0gW107XHJcbiAgYW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGVkaXRvckFuY2hvcnM6IElBbmNob3JbXTtcclxuICBkb2N1bWVudEFuY2hvcnM6IElBbmNob3JbXTtcclxuICBlZGl0b3JDb250ZW50ID0gJyc7XHJcbiAgc2VsZWN0ZWRMaW5rVHlwZSA9IDA7XHJcbiAgc2VsZWN0ZWRUYXJnZXQgPSAwO1xyXG4gIHNlbGVjdGVkUHJvdG9jb2wgPSAwO1xyXG4gIHVybCA9IFwiXCI7XHJcbiAgYWR2aXNvcnlUaXRsZSA9IFwiXCI7XHJcbiAgZWRpdCA9IGZhbHNlO1xyXG4gIGFuY2hvclRleHQgPSBcIlwiO1xyXG4gIGVtYWlsQWRkcmVzcyA9IFwiXCI7XHJcbiAgZW1haWxTdWJqZWN0ID0gXCJcIjtcclxuICBlbWFpbEJvZHkgPSBcIlwiO1xyXG4gIGRvY3VtZW50SWQgPSAwO1xyXG4gIGFuY2hvclRpdGxlID0gXCJcIjtcclxuICBhbmNob3JCeU5hbWUgPSBcIlwiO1xyXG4gIExpbmtUeXBlID0gTGlua1R5cGU7XHJcbiAgcHJvY2Vzc0NvbmZpZzogVHJlZUNvbmZpZztcclxuICBkb2N1bWVudENvbmZpZzogVHJlZUNvbmZpZztcclxuICBkb2N1bWVudFR5cGVzID0gW1xyXG4gICAgRG9jdW1lbnROb2RlVHlwZS5Eb2N1bWVudCxcclxuICAgIERvY3VtZW50Tm9kZVR5cGUuRmlsZURvY3VtZW50LFxyXG4gICAgRG9jdW1lbnROb2RlVHlwZS5MaW5rRG9jdW1lbnQsXHJcbiAgICBEb2N1bWVudE5vZGVUeXBlLlNob3J0Y3V0RG9jdW1lbnRcclxuICBdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgbGlua1NlcnZpY2U6IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2U6IFFNU1NlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JMaW5rXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gZGF0YS50eXBlSWQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gZGF0YS50YXJnZXRJZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IGRhdGEucHJvdG9jb2xJZDtcclxuICAgIHRoaXMudXJsID0gZGF0YS51cmw7XHJcbiAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSBkYXRhLnRpdGxlO1xyXG4gICAgdGhpcy5lZGl0ID0gZGF0YS5lZGl0O1xyXG4gICAgdGhpcy5lZGl0b3JDb250ZW50ID0gZGF0YS5lZGl0b3JDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5pbml0TGlua1R5cGUoKTtcclxuICAgIHRoaXMuaW5pdFRhcmdldCgpO1xyXG4gICAgdGhpcy5pbml0UHJvdG9jb2woKTtcclxuICAgIHRoaXMuaW5pdEFuY2hvcigpO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5lZGl0KSB7XHJcbiAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSwgdGhpcy51cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZURpYWxvZygpIHtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xyXG4gIH1cclxuXHJcbiAgaW5pdExpbmtUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMubGlua1R5cGVzKSB7XHJcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xyXG4gICAgICAgIGlkOiBMaW5rVHlwZS51cmwsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfVVJMLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5saW5rVHlwZXMucHVzaCh7XHJcbiAgICAgICAgaWQ6IExpbmtUeXBlLmFuY2hvclRleHQsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0lOX1RFWFQsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuZW1haWwsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfRU1BSUwsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0RPQ1VNRU5ULFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcclxuICAgICAgICBpZDogVGFyZ2V0VHlwZS5uZXcsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnRvcG1vc3QsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9UT1BNT1NULFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnNhbWUsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9TQU1FLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnBhcmVudCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1BBUkVOVCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0UHJvdG9jb2woKSB7XHJcbiAgICBpZiAodGhpcy5wcm90b2NvbHMpIHtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5odHRwLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5odHRwcyxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfSFRUUFMsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmZ0cCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfRlRQLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5uZXdzLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9ORVcsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLm90aGVyLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9PVEhFUixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0QW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JzID0gW107XHJcbiAgICB0aGlzLmFuY2hvcnMgPSBbeyB2YWx1ZTogMCwgdmlld1ZhbHVlOiBcIlwiLCBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5CbGFuayB9XTtcclxuICB9XHJcblxyXG4gIHBhcnNlTGlua1VybCh0eXBlSWQ6IG51bWJlciwgdXJsOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHlwZUlkKSB7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yVGV4dDpcclxuICAgICAgICB0aGlzLmdldEVkaXRvckFuY2hvcigpO1xyXG4gICAgICAgIHRoaXMuYW5jaG9yVGV4dCA9IHVybC5zdWJzdHIoMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuZW1haWw6XHJcbiAgICAgICAgY29uc3QgcDEgPSB1cmwuaW5kZXhPZignbWFpbHRvOicpO1xyXG4gICAgICAgIGNvbnN0IHAyID0gdXJsLmluZGV4T2YoJz9zdWJqZWN0PScpO1xyXG4gICAgICAgIGNvbnN0IHAzID0gdXJsLmluZGV4T2YoJyZib2R5PScpO1xyXG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzID0gdXJsLnN1YnN0cihwMSArIDcsIHAyIC0gNyk7XHJcbiAgICAgICAgdGhpcy5lbWFpbFN1YmplY3QgPSB1cmwuc3Vic3RyKHAyICsgOSwgcDMgLSBwMiAtIDkpO1xyXG4gICAgICAgIHRoaXMuZW1haWxCb2R5ID0gdXJsLnN1YnN0cihwMyArIDYsIHVybC5sZW5ndGggLSBwMyAtIDYpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvckRvY3VtZW50OlxyXG4gICAgICAgIGNvbnN0IGZsYXNoSW5kZXggPSB1cmwubGFzdEluZGV4T2YoJy8nKTtcclxuICAgICAgICBjb25zdCBoYXNoSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xyXG4gICAgICAgIGNvbnN0IHNJZCA9IHVybC5zdWJzdHIoZmxhc2hJbmRleCArIDEsIGhhc2hJbmRleCAtIDEgLSBmbGFzaEluZGV4KTtcclxuICAgICAgICBjb25zdCBkb2N1bWVudElkID0gcGFyc2VJbnQoc0lkLCAxMCk7XHJcbiAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkKTtcclxuICAgICAgICB0aGlzLmFuY2hvckJ5TmFtZSA9IHVybC5zdWJzdHIoaGFzaEluZGV4ICsgMSwgdXJsLmxlbmd0aCAtIGhhc2hJbmRleCk7XHJcbiAgICAgICAgdGhpcy5hbmNob3JUaXRsZSA9IHRoaXMuZGF0YS50aXRsZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRMaW5rVHlwZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcclxuICAgICAgdGhpcy5nZXRFZGl0b3JBbmNob3IoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09PSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudCkge1xyXG4gICAgICBpZiAoIXRoaXMuZG9jdW1lbnRBbmNob3JzKSB7XHJcbiAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZUhhbmRib29rKGlzT25seURvY3VtZW50OiBib29sZWFuLCBpc0FuY2hvckRvY3VtZW50OiBib29sZWFuKSB7XHJcblxyXG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnID0ge1xyXG4gICAgICBhbGxvd1NlbGVjdEZvbGRlcjogdHJ1ZSxcclxuICAgICAgYXJlYU9mQ3VycmVudFByb2Nlc3M6ICcnLFxyXG4gICAgICBzaG93Q2hlY2tCb3g6IGZhbHNlLFxyXG4gICAgICBhbGxvd011bHRpcGxlQ2hlY2s6IGZhbHNlLFxyXG4gICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXHJcbiAgICAgIG1vZHVsZUlkOiBEYXRhVHlwZS5wcm9jZXNzLFxyXG4gICAgICBvcGVuSWNvbkNvbG9yOiAnIzE5NTRBOScsXHJcbiAgICAgIGNsb3NlSWNvbkNvbG9yOiAnI2E0YjBkZScsXHJcbiAgICAgIHNpbmdsZVNlbGVjdGVkTm9kZTogdHJ1ZSxcclxuICAgICAgb25seUZvbGRlcjogZmFsc2UsXHJcbiAgICAgIHNlbGVjdE9uZTogdHJ1ZVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmRvY3VtZW50Q29uZmlnID0ge1xyXG4gICAgICBhbGxvd1NlbGVjdEZvbGRlcjogdHJ1ZSxcclxuICAgICAgYXJlYU9mQ3VycmVudFByb2Nlc3M6ICcnLFxyXG4gICAgICBzaG93Q2hlY2tCb3g6IGZhbHNlLFxyXG4gICAgICBtb2R1bGVJZDogRGF0YVR5cGUuZG9jdW1lbnQsXHJcbiAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXHJcbiAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcclxuICAgICAgb3Blbkljb25Db2xvcjogJyMxOTU0QTknLFxyXG4gICAgICBjbG9zZUljb25Db2xvcjogJyM0YWNhZmYnLFxyXG4gICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXHJcbiAgICAgIG9ubHlGb2xkZXI6IGZhbHNlLFxyXG4gICAgICBzZWxlY3RPbmU6IHRydWVcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGF0YTogU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBEYXRhID0gbmV3IFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSgpO1xyXG4gICAgZGF0YS5tb2R1bGVJZCA9IE1vZHVsZVR5cGUuZG9jdW1lbnRQcm9jZXNzO1xyXG4gICAgZGF0YS5tb2R1bGVOYW1lID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SLkRPQ1VNRU5UX1BST0NFU1M7XHJcbiAgICBpZiAoIWlzT25seURvY3VtZW50KSB7XHJcbiAgICAgIGNvbnN0IHRyZWVQcm9jZXNzRGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0UHJvY2Vzc0FyZWFDb250ZW50cygpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBkYXRhLnRyZWVEYXRhMSA9IHRyZWVQcm9jZXNzRGF0YT8uYXJlYXMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGlkOiB4LmlkLFxyXG4gICAgICAgICAgbmFtZTogeC5uYW1lLFxyXG4gICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWQgPT09IGd1aWRIZWxwZXIuZW1wdHkgPyAnJyA6IHgucGFyZW50SWQsXHJcbiAgICAgICAgICBzdGF0dXNJZDogMCxcclxuICAgICAgICAgIHN0YXR1c05hbWU6ICcnLFxyXG4gICAgICAgICAgZGlzcGxheUlkOiAwLFxyXG4gICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pIHx8IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRyZWVEb2N1bWVudERhdGEgPSBhd2FpdCB0aGlzLnRyZWVTZXJ2aWNlLmdldEZvbGRlckNoaWxkcmVucygpLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIGRhdGEudHJlZURhdGEyID0gdHJlZURvY3VtZW50RGF0YT8ubWFwKCh4KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcclxuICAgICAgICBuYW1lOiB4Lm5hbWUudG9TdHJpbmcoKSxcclxuICAgICAgICBwYXJlbnRJZDogIXgucGFyZW50SGFuZGJvb2tJZCA/ICcnIDogeC5wYXJlbnRIYW5kYm9va0lkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgc3RhdHVzSWQ6IDAsXHJcbiAgICAgICAgc3RhdHVzTmFtZTogJycsXHJcbiAgICAgICAgZGlzcGxheUlkOiAwLFxyXG4gICAgICAgIGV4cGFuZGFibGU6IHgudHlwZSA+IERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudCxcclxuICAgICAgICBsZXZlbFR5cGU6IHgudHlwZVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBkYXRhLnRyZWVDb25maWcxID0gdGhpcy5wcm9jZXNzQ29uZmlnO1xyXG4gICAgZGF0YS50cmVlQ29uZmlnMiA9IHRoaXMuZG9jdW1lbnRDb25maWc7XHJcbiAgICBkYXRhLnNwbGl0VmlldyA9IGZhbHNlO1xyXG4gICAgZGF0YS5pc1NlbGVjdE9uZSA9IHRydWU7XHJcbiAgICBkYXRhLnRvb2x0aXBMb2NhdGlvblNlYXJjaFJlc3VsdCA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzc2OHB4JyxcclxuICAgICAgbWluSGVpZ2h0OiAnNjkwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ3JlbGF0ZWQtcHJvY2Vzc19fcG9wdXAnLCAnY3VzdG9tLW1hdC1kaWFsb2ctY29udGFpbmVyJ10sXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2VcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vblNlYXJjaC5zdWJzY3JpYmUoKGtleXdvcmQ6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIWtleXdvcmQgfHwga2V5d29yZC50cmltKCkgPT09ICcnKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGZvcmtKb2luKFt0aGlzLnRyZWVTZXJ2aWNlLnNlYXJjaFByb2Nlc3Moa2V5d29yZCksIHRoaXMudHJlZVNlcnZpY2Uuc2VhcmNoRG9jdW1lbnQoa2V5d29yZCldKVxyXG4gICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAgIC50aGVuKChbcHJvY2VzcywgZG9jdW1lbnRdOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChwcm9jZXNzICYmIGRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdFByb2Nlc3NTZWFyY2g6IElSZWxhdGVkW10gPSBwcm9jZXNzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpZDogeC5lbnRpdHlJZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogeC5wcm9jZXNzTnVtYmVyLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogeC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgaXRlbVR5cGU6IERhdGFUeXBlLnByb2Nlc3MsXHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHguc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5hcHByb3ZhbFN0YXR1cyxcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiB4LmxvY2F0aW9uLFxyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0RG9jdW1lbnRTZWFyY2g6IElSZWxhdGVkW10gPSBkb2N1bWVudC5kb2N1bWVudHMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHguaWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGl0ZW1OYW1lOiB4Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICBpdGVtVHlwZTogRGF0YVR5cGUuZG9jdW1lbnQsXHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IDAsXHJcbiAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiB4LmFwcHJvdmFsU3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IHgubG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bFNlYXJjaCA9IFsuLi5yZXN1bHRQcm9jZXNzU2VhcmNoLCAuLi5yZXN1bHREb2N1bWVudFNlYXJjaF07XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRTZWFyY2hSZWxhdGVkKHJlc3VsU2VhcmNoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkV4cGFuZFByb2Nlc3NBcmVhLnN1YnNjcmliZSgoYXJlYSkgPT4ge1xyXG4gICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFByb2Nlc3NBcmVhQ29udGVudHMoYXJlYS5pZCkudG9Qcm9taXNlKCkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIGNvbnN0IGFyZWFzID0gcmVzLmFyZWFzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkLFxyXG4gICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxyXG4gICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguc3RhdHVzTmFtZSxcclxuICAgICAgICAgICAgICBkaXNwbGF5SWQ6IDBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pIHx8IFtdO1xyXG5cclxuICAgICAgICAgIGNvbnN0IHByb2Nlc3NlcyA9IHJlcy5wcm9jZXNzZXMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgaWQ6IHguZW50aXR5SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICBuYW1lOiB4Lm5hbWUsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucHJvY2Vzc0FyZWFJZCxcclxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICBzdGF0dXNJZDogeC5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5hcHByb3ZhbFN0YXR1cyxcclxuICAgICAgICAgICAgICBkaXNwbGF5SWQ6IHgucHJvY2Vzc051bWJlclxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSkgfHwgW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0UHJvY2Vzc0FyZWFDaGlsZHJlbihbLi4uYXJlYXMsIC4uLnByb2Nlc3Nlc10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25FeHBhbmRGb2xkZXIuc3Vic2NyaWJlKChmb2xkZXIpID0+IHtcclxuICAgICAgdGhpcy50cmVlU2VydmljZVxyXG4gICAgICAgIC5nZXRGb2xkZXJDaGlsZHJlbnMoZm9sZGVyLmlkKVxyXG4gICAgICAgIC50b1Byb21pc2UoKS50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRzID0gcmVzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpZDogeC5pZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5nZXRQYXJlbnRJZCh4KSxcclxuICAgICAgICAgICAgICAgIHN0YXR1c0lkOiAwLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5hcHByb3ZhbFN0YXR1cyxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlJZDogeC5pZCxcclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSxcclxuICAgICAgICAgICAgICAgIGxldmVsVHlwZTogIXRoaXMuZG9jdW1lbnRUeXBlcy5pbmNsdWRlcyh4LnR5cGUpID8geC50eXBlIDogZm9sZGVyLmxldmVsVHlwZVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0Rm9sZGVyQ2hpbGRyZW4oY2hpbGRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdERhdGEgPSByZXN1bHRbMF07XHJcbiAgICAgICAgaWYgKCFpc0FuY2hvckRvY3VtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLnVybCA9IHRoaXMuZ2V0TGlua1VSTChyZXN1bHREYXRhKTtcclxuICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdERhdGEuaXRlbU5hbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGUub3RoZXI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRJZCA9IHJlc3VsdERhdGEuaWQ7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvclRpdGxlID0gYCR7cmVzdWx0RGF0YS5pdGVtTmFtZX0oJHtyZXN1bHREYXRhLmlkfSlgO1xyXG4gICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChyZXN1bHREYXRhLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFyZW50SWQoaXRlbSkge1xyXG4gICAgaWYgKCF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoaXRlbS50eXBlKSkge1xyXG4gICAgICByZXR1cm4gIWl0ZW0ucGFyZW50SGFuZGJvb2tJZCA/ICcnIDogaXRlbS5wYXJlbnRIYW5kYm9va0lkLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWl0ZW0ucGFyZW50Rm9sZGVySWQgPyAnJyA6IGl0ZW0ucGFyZW50Rm9sZGVySWQudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGdldExpbmtVUkwoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgdXJsID0gJyc7XHJcbiAgICBzd2l0Y2ggKGRhdGE/Lml0ZW1UeXBlKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZG9jdW1lbnQ6XHJcbiAgICAgICAgdXJsID0gYC9kb2N1bWVudC8ke2RhdGEuaWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIHVybCA9IGAvcHJvY2Vzcy1kZXRhaWwvJHtkYXRhLmRpc3BsYXlJZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XHJcbiAgICAgICAgdXJsID0gYC9hcmVhL2RldGFpbC8ke2RhdGEuaWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5mb2xkZXI6XHJcbiAgICAgICAgdXJsID0gYC9mb2xkZXIvJHtkYXRhLmlkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG4gIGF0dGFjaG1lbnQoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUGFyYW10ZXIoKTtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5kYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLmRhdGEuZW50aXR5SWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6IFwiNjUwcHhcIixcclxuICAgICAgaGVpZ2h0OiBcIjY1MHB4XCIsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy51cmwgPSByZXN1bHQudXJsO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUpIHtcclxuICAgICAgICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlLm90aGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0b3JBbmNob3IoKSB7XHJcbiAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZWRpdG9yQ29udGVudCkge1xyXG4gICAgICB0aGlzLmFuY2hvckRvY3VtZW50cy5wdXNoKHtcclxuICAgICAgICBpZDogMCxcclxuICAgICAgICBlbnRpdHlJZDogMCxcclxuICAgICAgICBkb2N1bWVudElkOiAwLFxyXG4gICAgICAgIGRvY3VtZW50VHlwZUlkOiAwLFxyXG4gICAgICAgIHJpY2hUZXh0OiB0aGlzLmVkaXRvckNvbnRlbnQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRBbmNob3JEb2N1bWVudCh0aGlzLmFuY2hvckRvY3VtZW50cyk7XHJcbiAgICB0aGlzLmVkaXRvckFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XHJcbiAgfVxyXG5cclxuICBnZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkOiBudW1iZXIpIHtcclxuICAgIHRoaXMubGlua1NlcnZpY2VcclxuICAgICAgLmdldEFuY2hvckRvY3VtZW50TGlzdChkb2N1bWVudElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IHJlcztcclxuICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XHJcbiAgICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRBbmNob3JEb2N1bWVudChhbmNob3JEb2N1bWVudDogUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnRbXSkge1xyXG4gICAgdGhpcy5pbml0QW5jaG9yKCk7XHJcbiAgICBsZXQgaWQgPSAzO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmRhdGEucW1zY2tDb250ZW50RmllbGRzICYmXHJcbiAgICAgIHRoaXMuZGF0YS5xbXNja0NvbnRlbnRGaWVsZHMubGVuZ3RoICYmXHJcbiAgICAgIHRoaXMuZGF0YS5xbXNja0lzR2V0QW5jaG9yTW9yZUNvbnRlbnQgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID09PSBMaW5rVHlwZS5hbmNob3JUZXh0XHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kYXRhLnFtc2NrQ29udGVudEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgdGhpcy5nZXRBbmNob3IoZmllbGQsIGlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvckRvY3VtZW50ICYmIGFuY2hvckRvY3VtZW50KSB7XHJcbiAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICBpZiAoZSkge1xyXG4gICAgICAgICAgdGhpcy5nZXRBbmNob3IoZSwgaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hbmNob3JzLnB1c2goe1xyXG4gICAgICB2YWx1ZTogMSxcclxuICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXHJcbiAgICAgIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkF0dGFjaG1lbnQsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuYW5jaG9ycy5wdXNoKHtcclxuICAgICAgdmFsdWU6IDIsXHJcbiAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9SRUxBVEVEX0RPQ1VNRU5ULFxyXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5SZWxhdGVkLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbmNob3IoZSwgaWQpIHtcclxuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcclxuICAgIGNvbnN0IGRvbUNvbnRlbnQgPSBkaXY7XHJcbiAgICBjb25zdCBhVGFncyA9IGRvbUNvbnRlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJhXCIpO1xyXG4gICAgaWYgKGFUYWdzKSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItZm9yLW9mXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYVRhZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcclxuICAgICAgICBpZiAodGFnLm5hbWUpIHtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hbmNob3JzLmZpbmRJbmRleCgoeCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChpbmRleCA8IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hbmNob3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHZhbHVlOiBpZCxcclxuICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxyXG4gICAgICAgICAgICAgIGFuY2hvclZhbHVlOiB0YWcubmFtZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlkICs9IDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlT2tCdXR0b24oKSB7XHJcbiAgICBsZXQgaXNEaXNhYmxlID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSkge1xyXG4gICAgICBjYXNlIExpbmtUeXBlLnVybDpcclxuICAgICAgICBpc0Rpc2FibGUgPSB0aGlzLmxpbmtGb3JtR3JvdXAuaW52YWxpZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JUZXh0OlxyXG4gICAgICAgIGlzRGlzYWJsZSA9IHRoaXMuYW5jaG9yVGV4dEZvcm1Hcm91cC5pbnZhbGlkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmVtYWlsOlxyXG4gICAgICAgIGlzRGlzYWJsZSA9IHRoaXMuZW1haWxGb3JtR3JvdXAuaW52YWxpZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudDpcclxuICAgICAgICBpc0Rpc2FibGUgPSB0aGlzLmFuY2hvckRvY0Zvcm1Hcm91cC5pbnZhbGlkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzRGlzYWJsZTtcclxuICB9XHJcblxyXG4gIHNldExpbmsoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XHJcbiAgICBjb25zdCBsaW5rID0gbmV3IFFNU0NLRWRpdG9yTGluaygpO1xyXG4gICAgbGluay50eXBlSWQgPSB0aGlzLnNlbGVjdGVkTGlua1R5cGU7XHJcbiAgICBsaW5rLnRhcmdldElkID0gdGhpcy5zZWxlY3RlZFRhcmdldDtcclxuICAgIGxpbmsucHJvdG9jb2xJZCA9IHRoaXMuc2VsZWN0ZWRQcm90b2NvbDtcclxuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZExpbmtUeXBlKSB7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUudXJsOlxyXG4gICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGluay50aXRsZSA9IGAke3RoaXMuZ2V0UHJvdG9jb2xOYW1lKCl9JHt0aGlzLmxpbmtGb3JtR3JvdXAudmFsdWUudXJsfWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxpbmsudGl0bGUgPSB0aGlzLmFkdmlzb3J5VGl0bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpbmsudXJsID0gYCR7dGhpcy5zZWxlY3RlZExpbmtUeXBlfSR7dGhpcy5zZWxlY3RlZFByb3RvY29sfSR7dGhpcy5nZXRQcm90b2NvbE5hbWUoKX0ke3RoaXMudXJsfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yVGV4dDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0kezB9IyR7dGhpcy5hbmNob3JUZXh0fWA7XHJcbiAgICAgICAgbGluay50aXRsZSA9IGAjJHt0aGlzLmFuY2hvclRleHR9YDtcclxuICAgICAgICBsaW5rLnRhcmdldElkID0gVGFyZ2V0VHlwZS50b3Btb3N0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmVtYWlsOlxyXG4gICAgICAgIGxpbmsudXJsID0gYCR7dGhpcy5zZWxlY3RlZExpbmtUeXBlfSR7MH1tYWlsdG86JHt0aGlzLmVtYWlsQWRkcmVzc30/c3ViamVjdD0ke3RoaXMuZW1haWxTdWJqZWN0fSZib2R5PSR7dGhpcy5lbWFpbEJvZHlcclxuICAgICAgICAgIH1gO1xyXG4gICAgICAgIGxpbmsudGl0bGUgPSB0aGlzLmVtYWlsQWRkcmVzcztcclxuICAgICAgICBsaW5rLnRhcmdldElkID0gVGFyZ2V0VHlwZS50b3Btb3N0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvckRvY3VtZW50OlxyXG4gICAgICAgIGxpbmsudXJsID0gYCR7dGhpcy5zZWxlY3RlZExpbmtUeXBlfSR7MH0vZG9jdW1lbnQvJHt0aGlzLmRvY3VtZW50SWR9IyR7dGhpcy5hbmNob3JCeU5hbWV9YDtcclxuICAgICAgICBsaW5rLnRpdGxlID0gdGhpcy5hbmNob3JUaXRsZTtcclxuICAgICAgICBsaW5rLnRhcmdldElkID0gVGFyZ2V0VHlwZS50b3Btb3N0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobGluayk7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XHJcbiAgfVxyXG5cclxuICBnZXRVcmxUb1NldFByb3RvY29sKCkge1xyXG4gICAgaWYgKCF0aGlzLnVybC5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbGlzdFByb3RvY29sTmFtZSA9IE9iamVjdC52YWx1ZXMoUHJvdG9jb2xUeXBlTmFtZSk7XHJcbiAgICBmb3IgKGxldCBpbmRleCBpbiBsaXN0UHJvdG9jb2xOYW1lKSB7XHJcbiAgICAgIGlmIChsaXN0UHJvdG9jb2xOYW1lW2luZGV4XS5sZW5ndGggJiYgdGhpcy51cmwuaW5kZXhPZihsaXN0UHJvdG9jb2xOYW1lW2luZGV4XS50b1N0cmluZygpKSA9PT0gMCkge1xyXG4gICAgICAgIHN3aXRjaCAobGlzdFByb3RvY29sTmFtZVtpbmRleF0pIHtcclxuICAgICAgICAgIGNhc2UgUHJvdG9jb2xUeXBlTmFtZS5odHRwOlxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2woUHJvdG9jb2xUeXBlLmh0dHAsIFByb3RvY29sVHlwZU5hbWUuaHR0cCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgUHJvdG9jb2xUeXBlTmFtZS5odHRwczpcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5odHRwcywgUHJvdG9jb2xUeXBlTmFtZS5odHRwcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgUHJvdG9jb2xUeXBlTmFtZS5mdHA6XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVXJsQW5kU2VsZWN0ZWRQcm90b2NvbChQcm90b2NvbFR5cGUuZnRwLCBQcm90b2NvbFR5cGVOYW1lLmZ0cCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgUHJvdG9jb2xUeXBlTmFtZS5uZXdzOlxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2woUHJvdG9jb2xUeXBlLm5ld3MsIFByb3RvY29sVHlwZU5hbWUubmV3cyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy51cmwuaW5kZXhPZignOi8vJykgIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZS5vdGhlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2wocHJvdG9jb2xUeXBlOiBudW1iZXIsIHByb3RvY29sTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb3RvY29sICE9PSBwcm90b2NvbFR5cGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gcHJvdG9jb2xUeXBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cmwgPSB0aGlzLnVybC5zbGljZShwcm90b2NvbE5hbWUubGVuZ3RoKTtcclxuICAgIHRoaXMubGlua0Zvcm1Hcm91cC5wYXRjaFZhbHVlKHsgdXJsOiB0aGlzLnVybCB9KTtcclxuICB9XHJcblxyXG4gIGdldFByb3RvY29sTmFtZSgpIHtcclxuICAgIHJldHVybiBQcm90b2NvbFR5cGVOYW1lW1Byb3RvY29sVHlwZVt0aGlzLnNlbGVjdGVkUHJvdG9jb2xdXTtcclxuICB9XHJcblxyXG4gIHNldExpbmtVcmxUeXBlKCRldmVudD86IEV2ZW50KSB7XHJcbiAgICBpZiAoJGV2ZW50KVxyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5saW5rRm9ybUdyb3VwLmludmFsaWQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnNldExpbmsoKTtcclxuICB9XHJcbn1cclxuIl19
654
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1saW5rL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEdBQ2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFakUsT0FBTyxtQkFBbUIsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdC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RSxtQkFBbUI7Z0JBQzdCLG0vVkFBaUQ7O2FBRWxEOzs7WUEvREMsaUJBQWlCO1lBVWpCLFNBQVM7WUFNRix1QkFBdUI7WUFVdkIsc0JBQXNCO1lBRHRCLHdCQUF3QjtZQU94QixzQkFBc0I7WUFGdEIscUNBQXFDO1lBbkI1QyxZQUFZO1lBWVAsZUFBZSx1QkEwR2pCLE1BQU0sU0FBQyxlQUFlOzs7dUJBN0R4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHtcclxuICBNYXREaWFsb2csXHJcbiAgTWF0RGlhbG9nUmVmLFxyXG4gIE1BVF9ESUFMT0dfREFUQSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2xpbmstYW5jaG9yLmVudW0nO1xyXG5pbXBvcnQgeyBMaW5rVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFByb3RvY29sVHlwZSwgUHJvdG9jb2xUeXBlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9wcm90b2NvbC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBUYXJnZXRUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWxpbmstYW5jaG9yLWRvY3VtZW50Lm1vZGVsJztcclxuaW1wb3J0IFFNU0NLRWRpdG9yUGFyYW10ZXIgZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcGFyYW1ldGVyLm1vZGVsJztcclxuaW1wb3J0IFFNU0NLRWRpdG9yTGluayBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci11cmwubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWNvbW1vbi5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XHJcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi9hdHRhY2htZW50cy9saW5rLWF0dGFjaG1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2VudW0vZGF0YS10eXBlLmVudW1cIjtcclxuaW1wb3J0IHsgVHJlZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3RyZWVcIjtcclxuaW1wb3J0IHsgUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZSwgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL3NlbGVjdC1wcm9jZXNzLWRvY3VtZW50XCI7XHJcbmltcG9ydCB7IE1vZHVsZVR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2VudW0vbW9kdWxlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci10cmVlLnNlcnZpY2VcIjtcclxuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSBcIi4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlclwiO1xyXG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL2RvY3VtZW50LW5vZGUtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSVJlbGF0ZWQgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9yZWxhdGVkL21vZGVsL3JlbGF0ZWQtZGF0YS5tb2RlbFwiO1xyXG5cclxuaW50ZXJmYWNlIElMaW5rVHlwZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJVGFyZ2V0IHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElQcm90b2NvbCB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJQW5jaG9yIHtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIHZpZXdWYWx1ZTogc3RyaW5nO1xyXG4gIGFuY2hvclZhbHVlOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInFtcy1ja2VkaXRvci1saW5rXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9xbXMtY2tlZGl0b3ItbGluay5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9xbXMtY2tlZGl0b3ItbGluay5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yTGlua0NvbXBvbmVudFxyXG4gIGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICBASW5wdXQoKSBja0VkaXRvcjogYW55O1xyXG5cclxuICBMQU5HOiBhbnk7XHJcbiAgbGlua0Zvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICB0YXJnZXRMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICAgIHByb3RvY29sTGlzdDogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICB1cmw6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgYWR2aXNvcnlUaXRsZTogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgfSk7XHJcbiAgYW5jaG9yVGV4dEZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBhbmNob3JUZXh0OiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICB9KTtcclxuICBlbWFpbEZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBlbWFpbEFkZHJlc3M6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgZW1haWxTdWJqZWN0OiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGVtYWlsQm9keTogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgfSk7XHJcbiAgYW5jaG9yRG9jRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIGFuY2hvclRpdGxlOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgIGFuY2hvckJ5TmFtZTogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgfSk7XHJcbiAgaXNFeHBhbmRlZCA9IHRydWU7XHJcbiAgbGlua1R5cGVzOiBJTGlua1R5cGVbXSA9IFtdO1xyXG4gIHRhcmdldHM6IElUYXJnZXRbXSA9IFtdO1xyXG4gIHByb3RvY29sczogSVByb3RvY29sW10gPSBbXTtcclxuICBhbmNob3JEb2N1bWVudHM6IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50W10gPSBbXTtcclxuICBhbmNob3JzOiBJQW5jaG9yW107XHJcbiAgZWRpdG9yQW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGRvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGVkaXRvckNvbnRlbnQgPSAnJztcclxuICBzZWxlY3RlZExpbmtUeXBlID0gMDtcclxuICBzZWxlY3RlZFRhcmdldCA9IDA7XHJcbiAgc2VsZWN0ZWRQcm90b2NvbCA9IDA7XHJcbiAgdXJsID0gXCJcIjtcclxuICBhZHZpc29yeVRpdGxlID0gXCJcIjtcclxuICBlZGl0ID0gZmFsc2U7XHJcbiAgYW5jaG9yVGV4dCA9IFwiXCI7XHJcbiAgZW1haWxBZGRyZXNzID0gXCJcIjtcclxuICBlbWFpbFN1YmplY3QgPSBcIlwiO1xyXG4gIGVtYWlsQm9keSA9IFwiXCI7XHJcbiAgZG9jdW1lbnRJZCA9IDA7XHJcbiAgYW5jaG9yVGl0bGUgPSBcIlwiO1xyXG4gIGFuY2hvckJ5TmFtZSA9IFwiXCI7XHJcbiAgTGlua1R5cGUgPSBMaW5rVHlwZTtcclxuICBwcm9jZXNzQ29uZmlnOiBUcmVlQ29uZmlnO1xyXG4gIGRvY3VtZW50Q29uZmlnOiBUcmVlQ29uZmlnO1xyXG4gIGRvY3VtZW50VHlwZXMgPSBbXHJcbiAgICBEb2N1bWVudE5vZGVUeXBlLkRvY3VtZW50LFxyXG4gICAgRG9jdW1lbnROb2RlVHlwZS5GaWxlRG9jdW1lbnQsXHJcbiAgICBEb2N1bWVudE5vZGVUeXBlLkxpbmtEb2N1bWVudCxcclxuICAgIERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudFxyXG4gIF07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmVlU2VydmljZTogUU1TQ0tFZGl0b3JUcmVlU2VydmljZSxcclxuICAgIHByaXZhdGUgc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZTogUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckxpbmtDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckxpbmtcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPSBkYXRhLnR5cGVJZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSBkYXRhLnRhcmdldElkO1xyXG4gICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gZGF0YS5wcm90b2NvbElkO1xyXG4gICAgdGhpcy51cmwgPSBkYXRhLnVybDtcclxuICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IGRhdGEudGl0bGU7XHJcbiAgICB0aGlzLmVkaXQgPSBkYXRhLmVkaXQ7XHJcbiAgICB0aGlzLmVkaXRvckNvbnRlbnQgPSBkYXRhLmVkaXRvckNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmluaXRMaW5rVHlwZSgpO1xyXG4gICAgdGhpcy5pbml0VGFyZ2V0KCk7XHJcbiAgICB0aGlzLmluaXRQcm90b2NvbCgpO1xyXG4gICAgdGhpcy5pbml0QW5jaG9yKCk7XHJcbiAgICBpZiAodGhpcy5kYXRhLmVkaXQpIHtcclxuICAgICAgdGhpcy5wYXJzZUxpbmtVcmwodGhpcy5zZWxlY3RlZExpbmtUeXBlLCB0aGlzLnVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobnVsbCk7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XHJcbiAgfVxyXG5cclxuICBpbml0TGlua1R5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5saW5rVHlwZXMpIHtcclxuICAgICAgdGhpcy5saW5rVHlwZXMucHVzaCh7XHJcbiAgICAgICAgaWQ6IExpbmtUeXBlLnVybCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19VUkwsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yVGV4dCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19BTkNIT1JfSU5fVEVYVCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xyXG4gICAgICAgIGlkOiBMaW5rVHlwZS5lbWFpbCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19FTUFJTCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xyXG4gICAgICAgIGlkOiBMaW5rVHlwZS5hbmNob3JEb2N1bWVudCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19BTkNIT1JfRE9DVU1FTlQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFRhcmdldCgpIHtcclxuICAgIGlmICh0aGlzLnRhcmdldHMpIHtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLm5ldyxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSVEdFVF9ORVcsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFRhcmdldFR5cGUudG9wbW9zdCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1RPUE1PU1QsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFRhcmdldFR5cGUuc2FtZSxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFRhcmdldFR5cGUucGFyZW50LFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5UQVJHRVRfUEFSRU5ULFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRQcm90b2NvbCgpIHtcclxuICAgIGlmICh0aGlzLnByb3RvY29scykge1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmh0dHAsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0hUVFAsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmh0dHBzLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQUyxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goe1xyXG4gICAgICAgIGlkOiBQcm90b2NvbFR5cGUuZnRwLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9GVFAsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLm5ld3MsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX05FVyxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goe1xyXG4gICAgICAgIGlkOiBQcm90b2NvbFR5cGUub3RoZXIsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX09USEVSLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRBbmNob3IoKSB7XHJcbiAgICB0aGlzLmFuY2hvcnMgPSBbXTtcclxuICAgIHRoaXMuYW5jaG9ycyA9IFt7IHZhbHVlOiAwLCB2aWV3VmFsdWU6IFwiXCIsIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkJsYW5rIH1dO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VMaW5rVXJsKHR5cGVJZDogbnVtYmVyLCB1cmw6IHN0cmluZykge1xyXG4gICAgc3dpdGNoICh0eXBlSWQpIHtcclxuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JUZXh0OlxyXG4gICAgICAgIHRoaXMuZ2V0RWRpdG9yQW5jaG9yKCk7XHJcbiAgICAgICAgdGhpcy5hbmNob3JUZXh0ID0gdXJsLnN1YnN0cigxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5lbWFpbDpcclxuICAgICAgICBjb25zdCBwMSA9IHVybC5pbmRleE9mKCdtYWlsdG86Jyk7XHJcbiAgICAgICAgY29uc3QgcDIgPSB1cmwuaW5kZXhPZignP3N1YmplY3Q9Jyk7XHJcbiAgICAgICAgY29uc3QgcDMgPSB1cmwuaW5kZXhPZignJmJvZHk9Jyk7XHJcbiAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgPSB1cmwuc3Vic3RyKHAxICsgNywgcDIgLSA3KTtcclxuICAgICAgICB0aGlzLmVtYWlsU3ViamVjdCA9IHVybC5zdWJzdHIocDIgKyA5LCBwMyAtIHAyIC0gOSk7XHJcbiAgICAgICAgdGhpcy5lbWFpbEJvZHkgPSB1cmwuc3Vic3RyKHAzICsgNiwgdXJsLmxlbmd0aCAtIHAzIC0gNik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQ6XHJcbiAgICAgICAgY29uc3QgZmxhc2hJbmRleCA9IHVybC5sYXN0SW5kZXhPZignLycpO1xyXG4gICAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XHJcbiAgICAgICAgY29uc3Qgc0lkID0gdXJsLnN1YnN0cihmbGFzaEluZGV4ICsgMSwgaGFzaEluZGV4IC0gMSAtIGZsYXNoSW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGRvY3VtZW50SWQgPSBwYXJzZUludChzSWQsIDEwKTtcclxuICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KGRvY3VtZW50SWQpO1xyXG4gICAgICAgIHRoaXMuYW5jaG9yQnlOYW1lID0gdXJsLnN1YnN0cihoYXNoSW5kZXggKyAxLCB1cmwubGVuZ3RoIC0gaGFzaEluZGV4KTtcclxuICAgICAgICB0aGlzLmFuY2hvclRpdGxlID0gdGhpcy5kYXRhLnRpdGxlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZExpbmtUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xyXG4gICAgICB0aGlzLmdldEVkaXRvckFuY2hvcigpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvckRvY3VtZW50KSB7XHJcbiAgICAgIGlmICghdGhpcy5kb2N1bWVudEFuY2hvcnMpIHtcclxuICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBlSGFuZGJvb2soaXNPbmx5RG9jdW1lbnQ6IGJvb2xlYW4sIGlzQW5jaG9yRG9jdW1lbnQ6IGJvb2xlYW4pIHtcclxuXHJcbiAgICB0aGlzLnByb2Nlc3NDb25maWcgPSB7XHJcbiAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiB0cnVlLFxyXG4gICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXHJcbiAgICAgIHNob3dDaGVja0JveDogZmFsc2UsXHJcbiAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXHJcbiAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcclxuICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLnByb2Nlc3MsXHJcbiAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcclxuICAgICAgY2xvc2VJY29uQ29sb3I6ICcjYTRiMGRlJyxcclxuICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxyXG4gICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcclxuICAgICAgc2VsZWN0T25lOiB0cnVlXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZG9jdW1lbnRDb25maWcgPSB7XHJcbiAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiAhaXNPbmx5RG9jdW1lbnQsXHJcbiAgICAgIGFyZWFPZkN1cnJlbnRQcm9jZXNzOiAnJyxcclxuICAgICAgc2hvd0NoZWNrQm94OiBmYWxzZSxcclxuICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLmRvY3VtZW50LFxyXG4gICAgICBhbGxvd011bHRpcGxlQ2hlY2s6IGZhbHNlLFxyXG4gICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXHJcbiAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcclxuICAgICAgY2xvc2VJY29uQ29sb3I6ICcjNGFjYWZmJyxcclxuICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxyXG4gICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcclxuICAgICAgc2VsZWN0T25lOiB0cnVlXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGRhdGE6IFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSA9IG5ldyBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEoKTtcclxuICAgIGRhdGEubW9kdWxlSWQgPSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzcztcclxuICAgIGRhdGEubW9kdWxlTmFtZSA9IHRoaXMuTEFORy5RTVNDS0VESVRPUi5ET0NVTUVOVF9QUk9DRVNTO1xyXG4gICAgaWYgKCFpc09ubHlEb2N1bWVudCkge1xyXG4gICAgICBjb25zdCB0cmVlUHJvY2Vzc0RhdGEgPSBhd2FpdCB0aGlzLnRyZWVTZXJ2aWNlLmdldFByb2Nlc3NBcmVhQ29udGVudHMoKS50b1Byb21pc2UoKTtcclxuICAgICAgZGF0YS50cmVlRGF0YTEgPSB0cmVlUHJvY2Vzc0RhdGE/LmFyZWFzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBpZDogeC5pZCxcclxuICAgICAgICAgIG5hbWU6IHgubmFtZSxcclxuICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkID09PSBndWlkSGVscGVyLmVtcHR5ID8gJycgOiB4LnBhcmVudElkLFxyXG4gICAgICAgICAgc3RhdHVzSWQ6IDAsXHJcbiAgICAgICAgICBzdGF0dXNOYW1lOiAnJyxcclxuICAgICAgICAgIGRpc3BsYXlJZDogMCxcclxuICAgICAgICAgIGV4cGFuZGFibGU6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICB9KSB8fCBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0cmVlRG9jdW1lbnREYXRhID0gYXdhaXQgdGhpcy50cmVlU2VydmljZS5nZXRGb2xkZXJDaGlsZHJlbnMoKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICBkYXRhLnRyZWVEYXRhMiA9IHRyZWVEb2N1bWVudERhdGE/Lm1hcCgoeCkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgbmFtZTogeC5uYW1lLnRvU3RyaW5nKCksXHJcbiAgICAgICAgcGFyZW50SWQ6ICF4LnBhcmVudEhhbmRib29rSWQgPyAnJyA6IHgucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpLFxyXG4gICAgICAgIHN0YXR1c0lkOiAwLFxyXG4gICAgICAgIHN0YXR1c05hbWU6ICcnLFxyXG4gICAgICAgIGRpc3BsYXlJZDogMCxcclxuICAgICAgICBleHBhbmRhYmxlOiB4LnR5cGUgPiBEb2N1bWVudE5vZGVUeXBlLlNob3J0Y3V0RG9jdW1lbnQsXHJcbiAgICAgICAgbGV2ZWxUeXBlOiB4LnR5cGVcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgZGF0YS50cmVlQ29uZmlnMSA9IHRoaXMucHJvY2Vzc0NvbmZpZztcclxuICAgIGRhdGEudHJlZUNvbmZpZzIgPSB0aGlzLmRvY3VtZW50Q29uZmlnO1xyXG4gICAgZGF0YS5zcGxpdFZpZXcgPSBmYWxzZTtcclxuICAgIGRhdGEuaXNTZWxlY3RPbmUgPSB0cnVlO1xyXG4gICAgZGF0YS50b29sdGlwTG9jYXRpb25TZWFyY2hSZXN1bHQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc3NjhweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzY5MHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgcGFuZWxDbGFzczogWydyZWxhdGVkLXByb2Nlc3NfX3BvcHVwJywgJ2N1c3RvbS1tYXQtZGlhbG9nLWNvbnRhaW5lciddLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25TZWFyY2guc3Vic2NyaWJlKChrZXl3b3JkOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCFrZXl3b3JkIHx8IGtleXdvcmQudHJpbSgpID09PSAnJylcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBmb3JrSm9pbihbdGhpcy50cmVlU2VydmljZS5zZWFyY2hQcm9jZXNzKGtleXdvcmQpLCB0aGlzLnRyZWVTZXJ2aWNlLnNlYXJjaERvY3VtZW50KGtleXdvcmQpXSlcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAudGhlbigoW3Byb2Nlc3MsIGRvY3VtZW50XTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocHJvY2VzcyAmJiBkb2N1bWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHRQcm9jZXNzU2VhcmNoOiBJUmVsYXRlZFtdID0gcHJvY2Vzcy5tYXAoKHgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHguZW50aXR5SWQsXHJcbiAgICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHgucHJvY2Vzc051bWJlci50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgaXRlbU5hbWU6IHgubmFtZSxcclxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiBEYXRhVHlwZS5wcm9jZXNzLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiB4LnN0YXR1cyxcclxuICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogeC5sb2NhdGlvbixcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdERvY3VtZW50U2VhcmNoOiBJUmVsYXRlZFtdID0gZG9jdW1lbnQuZG9jdW1lbnRzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpZDogeC5pZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiB4LmlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogeC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgaXRlbVR5cGU6IERhdGFUeXBlLmRvY3VtZW50LFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAwLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogeC5hcHByb3ZhbFN0YXR1cyxcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiB4LmxvY2F0aW9uLFxyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWxTZWFyY2ggPSBbLi4ucmVzdWx0UHJvY2Vzc1NlYXJjaCwgLi4ucmVzdWx0RG9jdW1lbnRTZWFyY2hdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0U2VhcmNoUmVsYXRlZChyZXN1bFNlYXJjaCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25FeHBhbmRQcm9jZXNzQXJlYS5zdWJzY3JpYmUoKGFyZWEpID0+IHtcclxuICAgICAgdGhpcy50cmVlU2VydmljZS5nZXRQcm9jZXNzQXJlYUNvbnRlbnRzKGFyZWEuaWQpLnRvUHJvbWlzZSgpLnRoZW4ocmVzID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBjb25zdCBhcmVhcyA9IHJlcy5hcmVhcy5tYXAoKHgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBpZDogeC5pZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIG5hbWU6IHgubmFtZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogeC5wYXJlbnRJZCxcclxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHN0YXR1c0lkOiB4LnN0YXR1cyxcclxuICAgICAgICAgICAgICBzdGF0dXNOYW1lOiB4LnN0YXR1c05hbWUsXHJcbiAgICAgICAgICAgICAgZGlzcGxheUlkOiAwXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KSB8fCBbXTtcclxuXHJcbiAgICAgICAgICBjb25zdCBwcm9jZXNzZXMgPSByZXMucHJvY2Vzc2VzLm1hcCgoeCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGlkOiB4LmVudGl0eUlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiB4LnByb2Nlc3NBcmVhSWQsXHJcbiAgICAgICAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxyXG4gICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXHJcbiAgICAgICAgICAgICAgZGlzcGxheUlkOiB4LnByb2Nlc3NOdW1iZXJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFByb2Nlc3NBcmVhQ2hpbGRyZW4oWy4uLmFyZWFzLCAuLi5wcm9jZXNzZXNdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uRXhwYW5kRm9sZGVyLnN1YnNjcmliZSgoZm9sZGVyKSA9PiB7XHJcbiAgICAgIHRoaXMudHJlZVNlcnZpY2VcclxuICAgICAgICAuZ2V0Rm9sZGVyQ2hpbGRyZW5zKGZvbGRlci5pZClcclxuICAgICAgICAudG9Qcm9taXNlKCkudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcyA9IHJlcy5tYXAoKHgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IHRoaXMuZ2V0UGFyZW50SWQoeCksXHJcbiAgICAgICAgICAgICAgICBzdGF0dXNJZDogMCxcclxuICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5SWQ6IHguaWQsXHJcbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiAhdGhpcy5kb2N1bWVudFR5cGVzLmluY2x1ZGVzKHgudHlwZSksXHJcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSA/IHgudHlwZSA6IGZvbGRlci5sZXZlbFR5cGVcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldEZvbGRlckNoaWxkcmVuKGNoaWxkcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHREYXRhID0gcmVzdWx0WzBdO1xyXG4gICAgICAgIGlmICghaXNBbmNob3JEb2N1bWVudCkge1xyXG4gICAgICAgICAgdGhpcy51cmwgPSB0aGlzLmdldExpbmtVUkwocmVzdWx0RGF0YSk7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuYWR2aXNvcnlUaXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSByZXN1bHREYXRhLml0ZW1OYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlLm90aGVyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50SWQgPSByZXN1bHREYXRhLmlkO1xyXG4gICAgICAgICAgdGhpcy5hbmNob3JUaXRsZSA9IGAke3Jlc3VsdERhdGEuaXRlbU5hbWV9KCR7cmVzdWx0RGF0YS5pZH0pYDtcclxuICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQocmVzdWx0RGF0YS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFBhcmVudElkKGl0ZW0pIHtcclxuICAgIGlmICghdGhpcy5kb2N1bWVudFR5cGVzLmluY2x1ZGVzKGl0ZW0udHlwZSkpIHtcclxuICAgICAgcmV0dXJuICFpdGVtLnBhcmVudEhhbmRib29rSWQgPyAnJyA6IGl0ZW0ucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICFpdGVtLnBhcmVudEZvbGRlcklkID8gJycgOiBpdGVtLnBhcmVudEZvbGRlcklkLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBnZXRMaW5rVVJMKGRhdGE6IGFueSkge1xyXG4gICAgbGV0IHVybCA9ICcnO1xyXG4gICAgc3dpdGNoIChkYXRhPy5pdGVtVHlwZSkge1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIHVybCA9IGAvZG9jdW1lbnQvJHtkYXRhLmlkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICB1cmwgPSBgL3Byb2Nlc3MtZGV0YWlsLyR7ZGF0YS5kaXNwbGF5SWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxyXG4gICAgICAgIHVybCA9IGAvYXJlYS9kZXRhaWwvJHtkYXRhLmlkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOlxyXG4gICAgICAgIHVybCA9IGAvZm9sZGVyLyR7ZGF0YS5pZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG5cclxuICBhdHRhY2htZW50KCkge1xyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclBhcmFtdGVyKCk7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMuZGF0YS5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5kYXRhLmVudGl0eUlkO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKExpbmtBdHRhY2htZW50Q29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjY1MHB4XCIsXHJcbiAgICAgIGhlaWdodDogXCI2NTBweFwiLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMudXJsID0gcmVzdWx0LnVybDtcclxuICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZS5vdGhlcjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdG9yQW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgIGlmICh0aGlzLmVkaXRvckNvbnRlbnQpIHtcclxuICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgZW50aXR5SWQ6IDAsXHJcbiAgICAgICAgZG9jdW1lbnRJZDogMCxcclxuICAgICAgICBkb2N1bWVudFR5cGVJZDogMCxcclxuICAgICAgICByaWNoVGV4dDogdGhpcy5lZGl0b3JDb250ZW50LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xyXG4gICAgdGhpcy5lZGl0b3JBbmNob3JzID0gdGhpcy5hbmNob3JzO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxpbmtTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZXRBbmNob3JEb2N1bWVudCh0aGlzLmFuY2hvckRvY3VtZW50cyk7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0QW5jaG9yRG9jdW1lbnQoYW5jaG9yRG9jdW1lbnQ6IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50W10pIHtcclxuICAgIHRoaXMuaW5pdEFuY2hvcigpO1xyXG4gICAgbGV0IGlkID0gMztcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5kYXRhLnFtc2NrQ29udGVudEZpZWxkcyAmJlxyXG4gICAgICB0aGlzLmRhdGEucW1zY2tDb250ZW50RmllbGRzLmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLmRhdGEucW1zY2tJc0dldEFuY2hvck1vcmVDb250ZW50ICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yVGV4dFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5xbXNja0NvbnRlbnRGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yKGZpZWxkLCBpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09PSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudCAmJiBhbmNob3JEb2N1bWVudCkge1xyXG4gICAgICBhbmNob3JEb2N1bWVudC5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGUpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yKGUsIGlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYW5jaG9ycy5wdXNoKHtcclxuICAgICAgdmFsdWU6IDEsXHJcbiAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9BVFRBQ0hNRU5ULFxyXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiAyLFxyXG4gICAgICB2aWV3VmFsdWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BTkNIT1JfUkVMQVRFRF9ET0NVTUVOVCxcclxuICAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yKGUsIGlkKSB7XHJcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgZGl2LmlubmVySFRNTCA9IGUucmljaFRleHQ7XHJcbiAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xyXG4gICAgY29uc3QgYVRhZ3MgPSBkb21Db250ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYVwiKTtcclxuICAgIGlmIChhVGFncykge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgdGFnID0gYVRhZ3NbaV07XHJcbiAgICAgICAgaWYgKHRhZy5uYW1lKSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYW5jaG9ycy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHguYW5jaG9yVmFsdWUgPT09IHRhZy5uYW1lO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICB2YWx1ZTogaWQsXHJcbiAgICAgICAgICAgICAgdmlld1ZhbHVlOiB0YWcubmFtZSxcclxuICAgICAgICAgICAgICBhbmNob3JWYWx1ZTogdGFnLm5hbWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZCArPSAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzYWJsZU9rQnV0dG9uKCkge1xyXG4gICAgbGV0IGlzRGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkTGlua1R5cGUpIHtcclxuICAgICAgY2FzZSBMaW5rVHlwZS51cmw6XHJcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5saW5rRm9ybUdyb3VwLmludmFsaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yVGV4dDpcclxuICAgICAgICBpc0Rpc2FibGUgPSB0aGlzLmFuY2hvclRleHRGb3JtR3JvdXAuaW52YWxpZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5lbWFpbDpcclxuICAgICAgICBpc0Rpc2FibGUgPSB0aGlzLmVtYWlsRm9ybUdyb3VwLmludmFsaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQ6XHJcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5hbmNob3JEb2NGb3JtR3JvdXAuaW52YWxpZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpc0Rpc2FibGU7XHJcbiAgfVxyXG5cclxuICBzZXRMaW5rKCkge1xyXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBRTVNDS0VkaXRvckxpbmsoKTtcclxuICAgIGxpbmsudHlwZUlkID0gdGhpcy5zZWxlY3RlZExpbmtUeXBlO1xyXG4gICAgbGluay50YXJnZXRJZCA9IHRoaXMuc2VsZWN0ZWRUYXJnZXQ7XHJcbiAgICBsaW5rLnByb3RvY29sSWQgPSB0aGlzLnNlbGVjdGVkUHJvdG9jb2w7XHJcbiAgICBzd2l0Y2ggKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSkge1xyXG4gICAgICBjYXNlIExpbmtUeXBlLnVybDpcclxuICAgICAgICBpZiAoIXRoaXMuYWR2aXNvcnlUaXRsZS5sZW5ndGgpIHtcclxuICAgICAgICAgIGxpbmsudGl0bGUgPSBgJHt0aGlzLmdldFByb3RvY29sTmFtZSgpfSR7dGhpcy5saW5rRm9ybUdyb3VwLnZhbHVlLnVybH1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsaW5rLnRpdGxlID0gdGhpcy5hZHZpc29yeVRpdGxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0ke3RoaXMuc2VsZWN0ZWRQcm90b2NvbH0ke3RoaXMuZ2V0UHJvdG9jb2xOYW1lKCl9JHt0aGlzLnVybH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvclRleHQ6XHJcbiAgICAgICAgbGluay51cmwgPSBgJHt0aGlzLnNlbGVjdGVkTGlua1R5cGV9JHswfSMke3RoaXMuYW5jaG9yVGV4dH1gO1xyXG4gICAgICAgIGxpbmsudGl0bGUgPSBgIyR7dGhpcy5hbmNob3JUZXh0fWA7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5lbWFpbDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0kezB9bWFpbHRvOiR7dGhpcy5lbWFpbEFkZHJlc3N9P3N1YmplY3Q9JHt0aGlzLmVtYWlsU3ViamVjdH0mYm9keT0ke3RoaXMuZW1haWxCb2R5XHJcbiAgICAgICAgICB9YDtcclxuICAgICAgICBsaW5rLnRpdGxlID0gdGhpcy5lbWFpbEFkZHJlc3M7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0kezB9L2RvY3VtZW50LyR7dGhpcy5kb2N1bWVudElkfSMke3RoaXMuYW5jaG9yQnlOYW1lfWA7XHJcbiAgICAgICAgbGluay50aXRsZSA9IHRoaXMuYW5jaG9yVGl0bGU7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGxpbmspO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXJsVG9TZXRQcm90b2NvbCgpIHtcclxuICAgIGlmICghdGhpcy51cmwubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGxpc3RQcm90b2NvbE5hbWUgPSBPYmplY3QudmFsdWVzKFByb3RvY29sVHlwZU5hbWUpO1xyXG4gICAgZm9yIChsZXQgaW5kZXggaW4gbGlzdFByb3RvY29sTmFtZSkge1xyXG4gICAgICBpZiAobGlzdFByb3RvY29sTmFtZVtpbmRleF0ubGVuZ3RoICYmIHRoaXMudXJsLmluZGV4T2YobGlzdFByb3RvY29sTmFtZVtpbmRleF0udG9TdHJpbmcoKSkgPT09IDApIHtcclxuICAgICAgICBzd2l0Y2ggKGxpc3RQcm90b2NvbE5hbWVbaW5kZXhdKSB7XHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuaHR0cDpcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5odHRwLCBQcm90b2NvbFR5cGVOYW1lLmh0dHApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuaHR0cHM6XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVXJsQW5kU2VsZWN0ZWRQcm90b2NvbChQcm90b2NvbFR5cGUuaHR0cHMsIFByb3RvY29sVHlwZU5hbWUuaHR0cHMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuZnRwOlxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2woUHJvdG9jb2xUeXBlLmZ0cCwgUHJvdG9jb2xUeXBlTmFtZS5mdHApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUubmV3czpcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5uZXdzLCBQcm90b2NvbFR5cGVOYW1lLm5ld3MpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudXJsLmluZGV4T2YoJzovLycpICE9PSAtMSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGUub3RoZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKHByb3RvY29sVHlwZTogbnVtYmVyLCBwcm90b2NvbE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm90b2NvbCAhPT0gcHJvdG9jb2xUeXBlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IHByb3RvY29sVHlwZTtcclxuICAgIH1cclxuICAgIHRoaXMudXJsID0gdGhpcy51cmwuc2xpY2UocHJvdG9jb2xOYW1lLmxlbmd0aCk7XHJcbiAgICB0aGlzLmxpbmtGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7IHVybDogdGhpcy51cmwgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm90b2NvbE5hbWUoKSB7XHJcbiAgICByZXR1cm4gUHJvdG9jb2xUeXBlTmFtZVtQcm90b2NvbFR5cGVbdGhpcy5zZWxlY3RlZFByb3RvY29sXV07XHJcbiAgfVxyXG5cclxuICBzZXRMaW5rVXJsVHlwZSgkZXZlbnQ/OiBFdmVudCkge1xyXG4gICAgaWYgKCRldmVudClcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMubGlua0Zvcm1Hcm91cC5pbnZhbGlkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5zZXRMaW5rKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==