@smartbit4all/ng-client 3.3.117 → 3.3.119

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.
Files changed (127) hide show
  1. package/esm2020/lib/session/api/api/session.service.mjs +1 -1
  2. package/esm2020/lib/session/api/encoder.mjs +1 -1
  3. package/esm2020/lib/session/api/model/accountInfo.mjs +1 -1
  4. package/esm2020/lib/session/api/model/apiError.mjs +1 -1
  5. package/esm2020/lib/session/api/model/authenticationProviderData.mjs +1 -1
  6. package/esm2020/lib/session/api/model/getAuthenticationProvidersResponse.mjs +1 -1
  7. package/esm2020/lib/session/api/model/models.mjs +1 -1
  8. package/esm2020/lib/session/api/model/refreshSessionRequest.mjs +1 -1
  9. package/esm2020/lib/session/api/model/session.mjs +1 -1
  10. package/esm2020/lib/session/api/model/sessionInfoData.mjs +1 -1
  11. package/esm2020/lib/session/api/model/userActivityLog.mjs +1 -1
  12. package/esm2020/lib/session/api/param.mjs +1 -1
  13. package/esm2020/lib/session/api/variables.mjs +1 -1
  14. package/esm2020/lib/smart-client/smart-component-api-client.mjs +1 -5
  15. package/esm2020/lib/smart-component-layout/api/api/api.mjs +1 -1
  16. package/esm2020/lib/smart-component-layout/api/api/default.service.mjs +1 -1
  17. package/esm2020/lib/smart-component-layout/api/api.module.mjs +1 -1
  18. package/esm2020/lib/smart-component-layout/api/configuration.mjs +1 -1
  19. package/esm2020/lib/smart-component-layout/api/encoder.mjs +1 -1
  20. package/esm2020/lib/smart-component-layout/api/index.mjs +1 -1
  21. package/esm2020/lib/smart-component-layout/api/model/componentType.mjs +1 -1
  22. package/esm2020/lib/smart-component-layout/api/model/componentWidgetType.mjs +1 -1
  23. package/esm2020/lib/smart-component-layout/api/model/layoutDirection.mjs +1 -1
  24. package/esm2020/lib/smart-component-layout/api/model/models.mjs +1 -1
  25. package/esm2020/lib/smart-component-layout/api/param.mjs +1 -1
  26. package/esm2020/lib/smart-component-layout/api/variables.mjs +1 -1
  27. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +1 -1
  28. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +1 -1
  29. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +1 -1
  30. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +1 -1
  31. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionData.mjs +1 -1
  32. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +1 -1
  33. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionField.mjs +1 -1
  34. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +1 -1
  35. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +1 -1
  36. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionList.mjs +1 -1
  37. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
  38. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +1 -1
  39. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +1 -1
  40. package/esm2020/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
  41. package/esm2020/lib/smart-filter-editor/api/configuration.mjs +1 -1
  42. package/esm2020/lib/smart-filter-editor/api/encoder.mjs +1 -1
  43. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +1 -1
  44. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
  45. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
  46. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +1 -1
  47. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
  48. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +1 -1
  49. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionData.mjs +1 -1
  50. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +1 -1
  51. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionField.mjs +1 -1
  52. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
  53. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
  54. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +1 -1
  55. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
  56. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
  57. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +1 -1
  58. package/esm2020/lib/smart-filter-editor/api/model/smartFilterType.mjs +1 -1
  59. package/esm2020/lib/smart-filter-editor/api/param.mjs +1 -1
  60. package/esm2020/lib/smart-filter-editor/api/variables.mjs +1 -1
  61. package/esm2020/lib/smart-form/api/model/smartMatrixModel.mjs +1 -1
  62. package/esm2020/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  63. package/esm2020/lib/smart-form/services/smartform.layout-definition.service.mjs +2 -3
  64. package/esm2020/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  65. package/esm2020/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  66. package/esm2020/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  67. package/esm2020/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  68. package/esm2020/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  69. package/esm2020/lib/smart-grid/api/grid-api/index.mjs +1 -1
  70. package/esm2020/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  71. package/esm2020/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  72. package/esm2020/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  73. package/esm2020/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  74. package/esm2020/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  75. package/esm2020/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  76. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  77. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  78. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  79. package/esm2020/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  80. package/esm2020/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  81. package/esm2020/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  82. package/esm2020/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  83. package/esm2020/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  84. package/esm2020/lib/smart-grid/api/grid-api/param.mjs +1 -1
  85. package/esm2020/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  86. package/esm2020/lib/smart-tree/tree-api/api/tree.service.mjs +1 -1
  87. package/esm2020/lib/smart-tree/tree-api/configuration.mjs +1 -1
  88. package/esm2020/lib/smart-tree/tree-api/encoder.mjs +1 -1
  89. package/esm2020/lib/smart-tree/tree-api/param.mjs +1 -1
  90. package/esm2020/lib/smart-tree/tree-api/variables.mjs +1 -1
  91. package/esm2020/lib/view-context/api/model/models.mjs +1 -1
  92. package/esm2020/lib/view-context/api/model/uiAction.mjs +1 -1
  93. package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +1 -1
  94. package/esm2020/lib/view-context/api/model/uploadedFile.mjs +1 -1
  95. package/esm2020/lib/view-context/api/model/valueSet.mjs +1 -1
  96. package/esm2020/lib/view-context/api/model/viewContextChange.mjs +1 -1
  97. package/esm2020/lib/view-context/api/model/viewEventHandler.mjs +1 -1
  98. package/esm2020/lib/view-context/smart-view-context.service.mjs +4 -1
  99. package/esm2020/lib/view-context/value-api/api/api.mjs +1 -1
  100. package/esm2020/lib/view-context/value-api/api/value.service.mjs +1 -1
  101. package/esm2020/lib/view-context/value-api/api.module.mjs +1 -1
  102. package/esm2020/lib/view-context/value-api/configuration.mjs +1 -1
  103. package/esm2020/lib/view-context/value-api/encoder.mjs +1 -1
  104. package/esm2020/lib/view-context/value-api/index.mjs +1 -1
  105. package/esm2020/lib/view-context/value-api/model/genericValue.mjs +1 -1
  106. package/esm2020/lib/view-context/value-api/model/models.mjs +1 -1
  107. package/esm2020/lib/view-context/value-api/model/value.mjs +1 -1
  108. package/esm2020/lib/view-context/value-api/model/valueSetDefinition.mjs +1 -1
  109. package/esm2020/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +1 -1
  110. package/esm2020/lib/view-context/value-api/model/valueSetOperand.mjs +1 -1
  111. package/esm2020/lib/view-context/value-api/param.mjs +1 -1
  112. package/esm2020/lib/view-context/value-api/variables.mjs +1 -1
  113. package/fesm2015/smartbit4all-ng-client.mjs +5 -6
  114. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  115. package/fesm2020/smartbit4all-ng-client.mjs +4 -6
  116. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  117. package/lib/smart-form/api/model/smartMatrixModel.d.ts +1 -0
  118. package/lib/view-context/smart-view-context.service.d.ts +1 -0
  119. package/package.json +1 -1
  120. package/smartbit4all-ng-client-3.3.119.tgz +0 -0
  121. package/src/lib/session/api/README.md +226 -226
  122. package/src/lib/smart-component-layout/api/README.md +226 -226
  123. package/src/lib/smart-filter-editor/api/README.md +226 -226
  124. package/src/lib/smart-grid/api/grid-api/README.md +226 -226
  125. package/src/lib/smart-tree/tree-api/README.md +226 -226
  126. package/src/lib/view-context/value-api/README.md +226 -226
  127. package/smartbit4all-ng-client-3.3.117.tgz +0 -0
@@ -300,10 +300,6 @@ export class SmartComponentApiClient {
300
300
  actionModel.push(action);
301
301
  });
302
302
  this.uiActionModels = globalUiActionModels;
303
- // toolbars.forEach((toolbar) => {
304
- // toolbar.uiActionModels = toolbarModels.get(toolbar.id!);
305
- // toolbar.setUp();
306
- // });
307
303
  Promise.all(toolbars.map((toolbar) => {
308
304
  toolbar.uiActionModels = toolbarModels.get(toolbar.id);
309
305
  return toolbar.setUp();
@@ -692,4 +688,4 @@ export class SmartComponentApiClient {
692
688
  this.model.constraints = changes[changeKey];
693
689
  }
694
690
  }
695
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQU1MLG1CQUFtQixHQUVwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUlMLGNBQWMsRUFHZCx1QkFBdUIsRUFHdkIseUJBQXlCLEVBR3pCLGVBQWUsR0FJaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BGLE9BQU8sRUFLTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUVMLDJCQUEyQixHQUM1QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTFFLE1BQU0sT0FBZ0IsdUJBQXVCO0lBd0czQyxZQUNZLE1BQWdCLEVBQ2hCLElBQXlDLEVBQ3pDLFFBQWlCLEVBQ2pCLGNBQXVCLEVBQ3ZCLE9BQW9CLEVBQ3BCLFFBQW9CO1FBTHBCLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBcUM7UUFDekMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixtQkFBYyxHQUFkLGNBQWMsQ0FBUztRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVk7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U0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLGdCQUFnQixHQUE4QixJQUFJLENBQUMsS0FBTSxDQUFDLGdCQUU3RCxDQUFDO1FBQ0YsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxPQUErQixFQUFFLFNBQWlCO1FBQzdFLElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxTQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxPQUErQixFQUFFLFNBQWlCO1FBQzNFLElBQUksQ0FBQyxLQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE9BQStCLEVBQUUsU0FBaUI7UUFDL0UsSUFBSSxDQUFDLEtBQU0sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFJlbmRlcmVyMixcclxuICBSZW5kZXJlclN0eWxlRmxhZ3MyLFxyXG4gIFZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi9zbWFydC10cmVlL3Byb2plY3RzJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnRNb2RlbCxcclxuICBDb21wb25lbnRNb2RlbENoYW5nZSxcclxuICBEYXRhQ2hhbmdlLFxyXG4gIERhdGFDaGFuZ2VLaW5kLFxyXG4gIEV4ZWN1dGVVaUFjdGlvbk9wdGlvbnMsXHJcbiAgU21hcnRUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gIFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlLFxyXG4gIFVpQWN0aW9uLFxyXG4gIFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLFxyXG4gIFVpQWN0aW9uTW9kZWwsXHJcbiAgVWlBY3Rpb25SZXF1ZXN0LFxyXG4gIFVpQWN0aW9uU2VydmljZSxcclxuICBVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2UsXHJcbiAgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50LFxyXG4gIFVzZVVpQWN0aW9uMixcclxufSBmcm9tICcuLi92aWV3LWNvbnRleHQvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydEF1dGhlbnRpY2F0aW9uU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vc21hcnQtYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0U3ViamVjdCB9IGZyb20gJy4uL3NtYXJ0LXN1YmplY3QvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBHcmlkT3B0aW9ucywgU21hcnRHcmlkLCBTbWFydEdyaWRDb21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1ncmlkL3Byb2plY3RzJztcclxuaW1wb3J0IHtcclxuICBTbWFydEZvcm0sXHJcbiAgU21hcnRGb3JtSW52YWxpZEZpZWxkcyxcclxuICBTbWFydGZvcm1Db21wb25lbnQsXHJcbiAgU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlLFxyXG4gIFZhbHVlQ2hhbmdlTW9kZSxcclxufSBmcm9tICcuLi9zbWFydC1mb3JtL3Byb2plY3RzJztcclxuaW1wb3J0IHtcclxuICBTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudCxcclxuICBTbWFydENvbXBvbmVudExheW91dFV0aWxpdHksXHJcbn0gZnJvbSAnLi4vc21hcnQtY29tcG9uZW50LWxheW91dC9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LWZpbHRlci1lZGl0b3IvcHJvamVjdCc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU21hcnRDb21wb25lbnRBcGlDbGllbnQ8VD4gaW1wbGVtZW50cyBVc2VVaUFjdGlvbjIge1xyXG4gIHByb3RlY3RlZCBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwcml2YXRlIGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PENvbXBvbmVudE1vZGVsQ2hhbmdlPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG5cclxuICBwcml2YXRlIF91dWlkPzogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZ2V0IHV1aWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl91dWlkO1xyXG4gIH1cclxuICBzZXQgdXVpZCh1dWlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl91dWlkID09PSB1dWlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBmaXJzdFV1aWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMudXVpZCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250ZXh0LnVuZm9sbG93KHRoaXMudXVpZCk7XHJcbiAgICAgIGZpcnN0VXVpZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdXVpZCA9IHV1aWQ7XHJcbiAgICBpZiAodXVpZCkge1xyXG4gICAgICB0aGlzLmdldFdpZGdldHMoKS5mb3JFYWNoKChyZWYsIGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChyZWYgaW5zdGFuY2VvZiBTbWFydEdyaWRDb21wb25lbnQpIHtcclxuICAgICAgICAgIHJlZi51dWlkID0gdXVpZDtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlZiBpbnN0YW5jZW9mIFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSkge1xyXG4gICAgICAgICAgcmVmLmNvbmZpZy51dWlkID0gdXVpZDtcclxuICAgICAgICB9IGVsc2UgaWYgKCFyZWYgJiYgIWZpcnN0VXVpZCkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgcmVmZXJlbmNlIGZvciAke2tleX0gaXMgdW5kZWZpbmVkIG9uIHV1aWQgY2hhbmdlLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghdGhpcy51dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWRTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMudmlld0NvbnRleHQudXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkXHJcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocGFnZU5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHBhZ2VOYW1lID09PSB0aGlzLnBhZ2VOYW1lISkge1xyXG4gICAgICAgICAgICAgIHRoaXMucnVuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdDb250ZXh0LmZvbGxvdyh0aGlzLl91dWlkISwgdGhpcy5kZXRlY3RDaGFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbW9kZWw6IENvbXBvbmVudE1vZGVsIHwgdW5kZWZpbmVkO1xyXG5cclxuICBnZXQgbW9kZWwoKTogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xyXG4gIH1cclxuICBzZXQgbW9kZWwobW9kZWw6IENvbXBvbmVudE1vZGVsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9tb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgIHRoaXMuaW5pdENvbXBvbmVudEJ5TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RhdGE/OiBUO1xyXG5cclxuICBnZXQgZGF0YSgpOiBUIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuICBzZXQgZGF0YShtb2RlbDogVCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fZGF0YSA9IG1vZGVsO1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlZC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdWlBY3Rpb25Nb2RlbHM6IFVpQWN0aW9uTW9kZWxbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgZGF0YUNoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgLy8gR3JpZFxyXG4gIHNtYXJ0R3JpZD86IFNtYXJ0R3JpZDtcclxuXHJcbiAgLy8gU2VydmljZXNcclxuICBwcm90ZWN0ZWQgdmlld0NvbnRleHQ6IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB1aUFjdGlvblNlcnZpY2U6IFVpQWN0aW9uU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlPzogU21hcnRUcmFuc2xhdGVTZXJ2aWNlO1xyXG5cclxuICAvLyBUcmVlXHJcbiAgcHJpdmF0ZSBfc21hcnRUcmVlU2VydmljZT86IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlO1xyXG5cclxuICBwdWJsaWMgZ2V0IHNtYXJ0VHJlZVNlcnZpY2UoKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2U7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc21hcnRUcmVlU2VydmljZShzbWFydFRyZWVTZXJ2aWNlOiBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBFcnJvcignVGhlIGRlZmF1bHQgdHJlZSBoYXMgYWxyZWFkeSBzZXQgdXAhJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zbWFydFRyZWVTZXJ2aWNlID0gc21hcnRUcmVlU2VydmljZTtcclxuICB9XHJcblxyXG4gIC8vIENvbnRhaW5lZCBXaWRnZXRzXHJcbiAgd2lkZ2V0czogTWFwPHN0cmluZywgU21hcnRHcmlkQ29tcG9uZW50IHwgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCB1bmRlZmluZWQ+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBmb3JtV2lkZ2V0czogTWFwPHN0cmluZywgU21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgdXNlUXVlcnlMaXN0czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZW5kTW9kZWxPbldpZGdldEFjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkYXRhQ2hhbmdlS2V5czogc3RyaW5nW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgZGF0YUNoYW5nZUFjdGlvbkhhbmRsZXJzID0gbmV3IE1hcDxTbWFydGZvcm1Db21wb25lbnQsIFN1YnNjcmlwdGlvbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgaW5qZWN0OiBJbmplY3RvcixcclxuICAgIHByb3RlY3RlZCBhdXRoOiBTbWFydEF1dGhlbnRpY2F0aW9uU2VydmljZUludGVyZmFjZSxcclxuICAgIHByb3RlY3RlZCBwYWdlTmFtZT86IHN0cmluZyxcclxuICAgIHByb3RlY3RlZCBfY29tcG9uZW50TmFtZT86IHN0cmluZyxcclxuICAgIHByb3RlY3RlZCBlbGVtZW50PzogRWxlbWVudFJlZixcclxuICAgIHByb3RlY3RlZCByZW5kZXJlcj86IFJlbmRlcmVyMlxyXG4gICkge1xyXG4gICAgLy8gY2hlY2sgYW5kIGNhbGN1bGF0ZSBwYWdlTmFtZVxyXG4gICAgaWYgKCF0aGlzLnBhZ2VOYW1lICYmICF0aGlzLl9jb21wb25lbnROYW1lKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGFnZU5hbWUgb3IgY29tcG9uZW50TmFtZSBtdXN0IGJlIHNwZWNpZmllZCEnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gaW5qZWN0LmdldChTbWFydFZpZXdDb250ZXh0U2VydmljZSk7XHJcbiAgICBpZiAodGhpcy5fY29tcG9uZW50TmFtZSkge1xyXG4gICAgICBsZXQgcGFnZU5hbWVGb3JDb21wb25lbnQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFBhZ2VOYW1lT2ZDb21wb25lbnQodGhpcy5fY29tcG9uZW50TmFtZSk7XHJcbiAgICAgIGlmICghdGhpcy5wYWdlTmFtZSkge1xyXG4gICAgICAgIHRoaXMucGFnZU5hbWUgPSBwYWdlTmFtZUZvckNvbXBvbmVudDtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBhZ2VOYW1lICE9PSBwYWdlTmFtZUZvckNvbXBvbmVudCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBwYWdlTmFtZSAoJHtwYWdlTmFtZX0pIGFuZCBjb21wb25lbnROYW1lICgke19jb21wb25lbnROYW1lfSkgZG9lc24ndCBtYXRjaCFgXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZnJvbSB0aGlzIHBvaW50IHdlIGhhdmUgdGhpcy5wYWdlTmFtZVxyXG4gICAgdGhpcy5kZXRlY3RDaGFuZ2Uuc3Vic2NyaWJlKChjaGFuZ2U6IENvbXBvbmVudE1vZGVsQ2hhbmdlKSA9PiB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlcyhjaGFuZ2UpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UgPSBpbmplY3QuZ2V0KFVpQWN0aW9uU2VydmljZSk7XHJcbiAgICB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UgPSBpbmplY3QuZ2V0KFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgX25nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ydW4oKTtcclxuICB9XHJcbiAgX25nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3Q29udGV4dC51bmZvbGxvdyh0aGlzLnV1aWQhKTtcclxuICAgIHRoaXMud2lkZ2V0cy5jbGVhcigpO1xyXG5cclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBfbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlUXVlcnlMaXN0cykge1xyXG4gICAgICBpZiAoIXRoaXMuZ2V0U21hcnRDb21wb25lbnRMYXlvdXRzUUwoKSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybignU21hcnRDb21wb25lbnRMYXlvdXRzUUwgbm90IGF2YWlsYWJsZSEnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhhbmRsZVF1ZXJ5TGlzdCh0aGlzLmdldFNtYXJ0Q29tcG9uZW50TGF5b3V0c1FMKCkhLCAoY29tcCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNvbXAuc21hcnRDb21wb25lbnRMYXlvdXQpIHtcclxuICAgICAgICAgICAgLy8gVE9ETyBtYXliZSB3ZSBzaG91bGQgc2V0IGNvbXAucGFyZW50LCBub3QgY29tcC5zbWFydENvbXBvbmVudExheW91dC5wYXJlbnRDb21wb25lbnQuLlxyXG4gICAgICAgICAgICBTbWFydENvbXBvbmVudExheW91dFV0aWxpdHkuc2V0UGFyZW50KGNvbXAuc21hcnRDb21wb25lbnRMYXlvdXQsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRBY3Rpb25zKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy51dWlkICYmIHRoaXMudXVpZCAhPT0gY29tcC51dWlkKSBjb21wLnV1aWQgPSB0aGlzLnV1aWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gZm9yIGhhbmRsaW5nIGVtYmVkZGVkIGZvcm1zXHJcbiAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUxpc3QodGhpcy5nZXRTbWFydENvbXBvbmVudExheW91dHNRTCgpISwgKGZvcm0pID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRGF0YUNoYW5nZVN1YnNjcmlwdGlvbnMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuZ2V0U21hcnRGb3Jtc1FMKCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ2dldFNtYXJ0Rm9ybXNRTCBub3QgYXZhaWxhYmxlIScpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlUXVlcnlMaXN0KHRoaXMuZ2V0U21hcnRGb3Jtc1FMKCkhLCAoZm9ybSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVEYXRhQ2hhbmdlU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5nZXRTbWFydEdyaWRzUUwoKSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybignU21hcnRHcmlkc1FMIG5vdCBhdmFpbGFibGUhJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUxpc3QodGhpcy5nZXRTbWFydEdyaWRzUUwoKSEsIChncmlkKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZ3JpZCkge1xyXG4gICAgICAgICAgICBpZiAoZ3JpZC5zbWFydEdyaWQpIHtcclxuICAgICAgICAgICAgICBncmlkLnNtYXJ0R3JpZC51aUFjdGlvblNlcnZpY2UgPSB0aGlzLnVpQWN0aW9uU2VydmljZTtcclxuICAgICAgICAgICAgICBncmlkLnNtYXJ0R3JpZC51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gICAgICAgICAgICAgIGdyaWQuc21hcnRHcmlkLnNlcnZpY2VUb1VzZSA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgZ3JpZC5zbWFydEdyaWQudmlld0NvbnRleHRTZXJ2aWNlID0gdGhpcy52aWV3Q29udGV4dDtcclxuICAgICAgICAgICAgICBncmlkLnNldHVwVG9vbGJhcigpO1xyXG4gICAgICAgICAgICAgIGlmIChncmlkLnRvb2xiYXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEFjdGlvbnMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMudXVpZCAmJiB0aGlzLnV1aWQgIT09IGdyaWQudXVpZCkgZ3JpZC51dWlkID0gdGhpcy51dWlkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaGFuZGxlUXVlcnlMaXN0U2ltcGxlPFQ+KHFsOiBRdWVyeUxpc3Q8VD4sIGhhbmRsZXI6ICgpID0+IHZvaWQpIHtcclxuICAgIGhhbmRsZXIoKTtcclxuICAgIHFsLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gaGFuZGxlcigpKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBoYW5kbGVRdWVyeUxpc3Q8VD4ocWw6IFF1ZXJ5TGlzdDxUPiwgaGFuZGxlcjogKGVsOiBUKSA9PiB2b2lkKSB7XHJcbiAgICBxbC5mb3JFYWNoKChlbCkgPT4gaGFuZGxlcihlbCkpO1xyXG4gICAgcWwuY2hhbmdlc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsaXN0KSA9PiAobGlzdCBhcyBRdWVyeUxpc3Q8VD4pLmZvckVhY2goKGVsKSA9PiBoYW5kbGVyKGVsKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFNtYXJ0Rm9ybXNRTCgpOiBRdWVyeUxpc3Q8U21hcnRmb3JtQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFNtYXJ0R3JpZHNRTCgpOiBRdWVyeUxpc3Q8U21hcnRHcmlkQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFNtYXJ0VHJlZXNRTCgpOiBRdWVyeUxpc3Q8U21hcnR0cmVlR2VuZXJpY1NlcnZpY2U+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0U21hcnRGaWx0ZXJTZXJ2aWNlc1FMKCk6IFF1ZXJ5TGlzdDxTbWFydEZpbHRlckVkaXRvclNlcnZpY2U+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0U21hcnRVaUFjdGlvblRvb2xiYXJzUUwoKTogUXVlcnlMaXN0PFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTbWFydENvbXBvbmVudExheW91dHNRTCgpOlxyXG4gICAgfCBRdWVyeUxpc3Q8U21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQ+XHJcbiAgICB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJvdGVjdGVkIGdldFdpZGdldHMoKTogTWFwPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgU21hcnRHcmlkQ29tcG9uZW50IHwgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCBTbWFydEZpbHRlckVkaXRvclNlcnZpY2UgfCB1bmRlZmluZWRcclxuICA+IHtcclxuICAgIGlmICh0aGlzLnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgbGV0IHdpZGdldHM6IE1hcDxcclxuICAgICAgICBzdHJpbmcsXHJcbiAgICAgICAgU21hcnRHcmlkQ29tcG9uZW50IHwgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCBTbWFydEZpbHRlckVkaXRvclNlcnZpY2UgfCB1bmRlZmluZWRcclxuICAgICAgPiA9IG5ldyBNYXAoKTtcclxuICAgICAgdGhpcy5nZXRBbGxTbWFydEdyaWRDb21wb25lbnRzKClcclxuICAgICAgICAuZmlsdGVyKChncmlkKSA9PiAoZ3JpZD8uc21hcnRHcmlkPy5ncmlkSWRlbnRpZmllciA/IHRydWUgOiBmYWxzZSkpXHJcbiAgICAgICAgLmZvckVhY2goKGdyaWQpID0+IHdpZGdldHMuc2V0KGdyaWQuc21hcnRHcmlkIS5ncmlkSWRlbnRpZmllciwgZ3JpZCkpO1xyXG4gICAgICB0aGlzLmdldEFsbFNtYXJ0VHJlZUNvbXBvbmVudHMoKVxyXG4gICAgICAgIC5maWx0ZXIoKHRyZWUpID0+ICh0cmVlPy5zbWFydFRyZWVNb2RlbD8uaWRlbnRpZmllciA/IHRydWUgOiBmYWxzZSkpXHJcbiAgICAgICAgLmZvckVhY2goKHRyZWUpID0+IHdpZGdldHMuc2V0KHRyZWUhLnNtYXJ0VHJlZU1vZGVsIS5pZGVudGlmaWVyISwgdHJlZSkpO1xyXG4gICAgICB0aGlzLmdldEFsbFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZXMoKVxyXG4gICAgICAgIC5maWx0ZXIoKGZpbHRlcikgPT4gKGZpbHRlci5jb25maWcuaWRlbnRpZmllciA/IHRydWUgOiBmYWxzZSkpXHJcbiAgICAgICAgLmZvckVhY2goKGZpbHRlcikgPT4gd2lkZ2V0cy5zZXQoZmlsdGVyLmNvbmZpZy5pZGVudGlmaWVyLCBmaWx0ZXIpKTtcclxuICAgICAgcmV0dXJuIHdpZGdldHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy53aWRnZXRzO1xyXG4gIH1cclxuXHJcbiAgaW5pdENvbXBvbmVudEJ5TW9kZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRTdHlsZSgpO1xyXG4gICAgdGhpcy5pbml0RGF0YSgpO1xyXG4gICAgdGhpcy5pbml0QWN0aW9ucygpO1xyXG5cclxuICAgIGlmICh0aGlzLnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgdGhpcy5nZXRBbGxTbWFydEZvcm1Db21wb25lbnRzKCk/LmZvckVhY2goKGZvcm0pID0+IHtcclxuICAgICAgICBpZiAoZm9ybS5zbWFydEZvcm0pIHtcclxuICAgICAgICAgIGZvcm0uc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsID0gdGhpcy5tb2RlbDtcclxuICAgICAgICAgIC8vIHVzZXMgZGF0YSwgdmFsdWVTZXRzLCBjb25zdHJhaW50c1xyXG4gICAgICAgICAgZm9ybS5jb25zdHJ1Y3RGb3JtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIFRPRE86IGxheW91dCwgd2lkZ2V0c1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGluaXRTdHlsZSgpIHtcclxuICAgIGlmICh0aGlzLm1vZGVsPy5zdHlsZSAmJiB0aGlzLmVsZW1lbnQgJiYgdGhpcy5yZW5kZXJlcikge1xyXG4gICAgICBsZXQgc3R5bGVEYXRhID0gdGhpcy5tb2RlbC5zdHlsZSE7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5lbGVtZW50IS5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAvLyBjc3Mgc3R5bGUgcHJvcGVydGllc1xyXG4gICAgICBpZiAoc3R5bGVEYXRhLnN0eWxlKSB7XHJcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoc3R5bGVEYXRhLnN0eWxlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIhLnNldFN0eWxlKGVsZW1lbnQsIGtleSwgdmFsdWUsIFJlbmRlcmVyU3R5bGVGbGFnczIuSW1wb3J0YW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBhZGQgY2xhc3Nlc1xyXG4gICAgICBpZiAoc3R5bGVEYXRhLmNsYXNzZXNUb0FkZCkge1xyXG4gICAgICAgIHN0eWxlRGF0YS5jbGFzc2VzVG9BZGQuZm9yRWFjaCgoY2wpID0+IHRoaXMucmVuZGVyZXIhLmFkZENsYXNzKGVsZW1lbnQsIGNsKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gcmVtb3ZlIGNsYXNzZXNcclxuICAgICAgaWYgKHN0eWxlRGF0YS5jbGFzc2VzVG9SZW1vdmUpIHtcclxuICAgICAgICBzdHlsZURhdGEuY2xhc3Nlc1RvUmVtb3ZlLmZvckVhY2goKGNsKSA9PiB0aGlzLnJlbmRlcmVyIS5yZW1vdmVDbGFzcyhlbGVtZW50LCBjbCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0QWxsU21hcnRGb3JtQ29tcG9uZW50cygpOiBTbWFydGZvcm1Db21wb25lbnRbXSB7XHJcbiAgICBsZXQgZm9ybXM6IFNtYXJ0Zm9ybUNvbXBvbmVudFtdID0gdGhpcy5nZXRTbWFydEZvcm1zUUwoKT8udG9BcnJheSgpID8/IFtdO1xyXG4gICAgdGhpcy5nZXRTbWFydENvbXBvbmVudExheW91dHNRTCgpPy5mb3JFYWNoKChjb21wKSA9PiB7XHJcbiAgICAgIGZvcm1zLnB1c2goLi4uU21hcnRDb21wb25lbnRMYXlvdXRVdGlsaXR5LmdldEZvcm1zKGNvbXApKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZvcm1zO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEFsbFNtYXJ0R3JpZENvbXBvbmVudHMoKTogU21hcnRHcmlkQ29tcG9uZW50W10ge1xyXG4gICAgbGV0IGdyaWRzOiBTbWFydEdyaWRDb21wb25lbnRbXSA9IHRoaXMuZ2V0U21hcnRHcmlkc1FMKCk/LnRvQXJyYXkoKSA/PyBbXTtcclxuICAgIHRoaXMuZ2V0U21hcnRDb21wb25lbnRMYXlvdXRzUUwoKT8uZm9yRWFjaCgoY29tcCkgPT4ge1xyXG4gICAgICBncmlkcy5wdXNoKC4uLlNtYXJ0Q29tcG9uZW50TGF5b3V0VXRpbGl0eS5nZXRHcmlkcyhjb21wKSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBncmlkcztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRBbGxTbWFydFRyZWVDb21wb25lbnRzKCk6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlW10ge1xyXG4gICAgbGV0IHRyZWVzOiBTbWFydHRyZWVHZW5lcmljU2VydmljZVtdID0gdGhpcy5nZXRTbWFydFRyZWVzUUwoKT8udG9BcnJheSgpID8/IFtdO1xyXG4gICAgdGhpcy5nZXRTbWFydENvbXBvbmVudExheW91dHNRTCgpPy5mb3JFYWNoKChjb21wKSA9PiB7XHJcbiAgICAgIHRyZWVzLnB1c2goLi4uU21hcnRDb21wb25lbnRMYXlvdXRVdGlsaXR5LmdldFRyZWVzKGNvbXApKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRyZWVzO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEFsbFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZXMoKTogU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlW10ge1xyXG4gICAgbGV0IGZpbHRlcnM6IFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZVtdID0gdGhpcy5nZXRTbWFydEZpbHRlclNlcnZpY2VzUUwoKT8udG9BcnJheSgpID8/IFtdO1xyXG4gICAgcmV0dXJuIGZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0QWxsU21hcnRVaUFjdGlvblRvb2xiYXJzKCk6IFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudFtdIHtcclxuICAgIGxldCB0b29sYmFyczogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50W10gPSB0aGlzLmdldFNtYXJ0VWlBY3Rpb25Ub29sYmFyc1FMKCk/LnRvQXJyYXkoKSA/PyBbXTtcclxuICAgIHRoaXMuZ2V0QWxsU21hcnRHcmlkQ29tcG9uZW50cygpPy5mb3JFYWNoKChncmlkKSA9PiB7XHJcbiAgICAgIGlmIChncmlkLnRvb2xiYXIpIHtcclxuICAgICAgICB0b29sYmFycy5wdXNoKGdyaWQudG9vbGJhcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRTbWFydENvbXBvbmVudExheW91dHNRTCgpPy5mb3JFYWNoKChjb21wKSA9PiB7XHJcbiAgICAgIHRvb2xiYXJzLnB1c2goLi4uU21hcnRDb21wb25lbnRMYXlvdXRVdGlsaXR5LmdldFRvb2xiYXJzKGNvbXApKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRBbGxTbWFydEZvcm1Db21wb25lbnRzKClcclxuICAgICAgPy5mbGF0TWFwKChmb3JtKSA9PiBmb3JtLmdldFRvb2xiYXJzKCkpXHJcbiAgICAgIC5maWx0ZXIoKHRvb2xiYXIpID0+IHRvb2xiYXIgIT09IHVuZGVmaW5lZCB8fCB0b29sYmFyICE9PSBudWxsKVxyXG4gICAgICAuZm9yRWFjaCgodG9vbGJhcikgPT4gdG9vbGJhcnMucHVzaCh0b29sYmFyIGFzIFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCkpO1xyXG5cclxuICAgIHJldHVybiB0b29sYmFycztcclxuICB9XHJcblxyXG4gIGluaXREYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZWw/LmRhdGEpIHtcclxuICAgICAgdGhpcy5kYXRhID0gdGhpcy5tb2RlbD8uZGF0YSBhcyBhbnk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0QWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vZGVsPy5hY3Rpb25zKSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbk1vZGVscyA9IHRoaXMubW9kZWw/LmFjdGlvbnMubWFwKCh1aUFjdGlvbjogVWlBY3Rpb24pID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLFxyXG4gICAgICAgICAgdWlBY3Rpb24sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCB0b29sYmFycyA9IHRoaXMuZ2V0QWxsU21hcnRVaUFjdGlvblRvb2xiYXJzKCkuZmlsdGVyKCh0b29sYmFyKSA9PiB0b29sYmFyLmlkKTtcclxuICAgICAgbGV0IHRvb2xiYXJNb2RlbHMgPSBuZXcgTWFwPHN0cmluZywgVWlBY3Rpb25Nb2RlbFtdPigpO1xyXG4gICAgICB0b29sYmFycy5mb3JFYWNoKCh0b29sYmFyKSA9PiB7XHJcbiAgICAgICAgdG9vbGJhck1vZGVscy5zZXQodG9vbGJhci5pZCEsIFtdKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBnbG9iYWxVaUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XHJcbiAgICAgIHVpQWN0aW9uTW9kZWxzLmZvckVhY2goKGFjdGlvbikgPT4ge1xyXG4gICAgICAgIGxldCBhY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbFtdIHwgdW5kZWZpbmVkID0gZ2xvYmFsVWlBY3Rpb25Nb2RlbHM7XHJcbiAgICAgICAgbGV0IHRvb2xiYXJJZCA9IGFjdGlvbi51aUFjdGlvbi50b29sYmFyO1xyXG4gICAgICAgIGlmICh0b29sYmFySWQgJiYgdG9vbGJhck1vZGVscy5oYXModG9vbGJhcklkKSkge1xyXG4gICAgICAgICAgYWN0aW9uTW9kZWwgPSB0b29sYmFyTW9kZWxzLmdldCh0b29sYmFySWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFjdGlvbk1vZGVsKSB7XHJcbiAgICAgICAgICBhY3Rpb25Nb2RlbCA9IGdsb2JhbFVpQWN0aW9uTW9kZWxzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhY3Rpb25Nb2RlbC5wdXNoKGFjdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnVpQWN0aW9uTW9kZWxzID0gZ2xvYmFsVWlBY3Rpb25Nb2RlbHM7XHJcblxyXG4gICAgICAvLyB0b29sYmFycy5mb3JFYWNoKCh0b29sYmFyKSA9PiB7XHJcbiAgICAgIC8vICAgdG9vbGJhci51aUFjdGlvbk1vZGVscyA9IHRvb2xiYXJNb2RlbHMuZ2V0KHRvb2xiYXIuaWQhKTtcclxuICAgICAgLy8gICB0b29sYmFyLnNldFVwKCk7XHJcbiAgICAgIC8vIH0pO1xyXG4gICAgICBQcm9taXNlLmFsbChcclxuICAgICAgICB0b29sYmFycy5tYXAoKHRvb2xiYXIpID0+IHtcclxuICAgICAgICAgIHRvb2xiYXIudWlBY3Rpb25Nb2RlbHMgPSB0b29sYmFyTW9kZWxzLmdldCh0b29sYmFyLmlkISk7XHJcbiAgICAgICAgICByZXR1cm4gdG9vbGJhci5zZXRVcCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAvLyBjb250aW51ZSBjb2RlIGhlcmUgaWYgbmVlZGVkXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdG9vbGJhciBzZXR1cDonLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBydW4oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdXRoLmJmZkFwaXNIYXZlQmVlblNldFVwKSB7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdXRoLmhlYWRlcnNVcGRhdGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lISk7XHJcbiAgICAvLyB0aGlzLm1vZGVsID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5sb2FkKHRoaXMudXVpZCk7XHJcbiAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmxvYWQyKHRoaXMudXVpZCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBleGVjdXRlVWlBY3Rpb24odWlBY3Rpb246IFVpQWN0aW9uLCBvcHRpb25zPzogRXhlY3V0ZVVpQWN0aW9uT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UudWlBY3Rpb25Nb2RlbCA9IHtcclxuICAgICAgc2VydmljZVRvVXNlOiB0aGlzLFxyXG4gICAgICB1aUFjdGlvbjogdWlBY3Rpb24sXHJcbiAgICB9O1xyXG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UuZXhlY3V0ZSh1aUFjdGlvbiwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhZGREYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcihrZXk6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmRhdGFDaGFuZ2VLZXlzLmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgdGhpcy5kYXRhQ2hhbmdlS2V5cy5wdXNoKGtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVEYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcihrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGlkeCA9IHRoaXMuZGF0YUNoYW5nZUtleXMuaW5kZXhPZihrZXkpO1xyXG4gICAgaWYgKGlkeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZGF0YUNoYW5nZUtleXMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZGF0YUNoYW5nZUFjdGlvbkhhbmRsZXIoZXZlbnQ6IFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSkge1xyXG4gICAgaWYgKHRoaXMuZGF0YUNoYW5nZUtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xyXG4gICAgICB0aGlzLmV4ZWN1dGVVaUFjdGlvbih7XHJcbiAgICAgICAgY29kZTogZXZlbnQua2V5LFxyXG4gICAgICAgIG1vZGVsOiB0cnVlLFxyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgaXRlbTogZXZlbnQudmFsdWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0YUNoYW5nZVN1YnNjcmlwdGlvbnMoKSB7XHJcbiAgICBpZiAodGhpcy51c2VRdWVyeUxpc3RzKSB7XHJcbiAgICAgIGxldCBmb3JtcyA9IHRoaXMuZ2V0QWxsU21hcnRGb3JtQ29tcG9uZW50cygpO1xyXG4gICAgICAvLyBhZGQgZWxlbWVudHMgdG8gZGF0YUNoYW5nZUtleXNcclxuICAgICAgZm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xyXG4gICAgICAgIGZvcm0uc21hcnRGb3JtPy53aWRnZXRzLmZvckVhY2goKHdpZGdldCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHdpZGdldC5rZXkpIHtcclxuICAgICAgICAgICAgaWYgKHdpZGdldC52YWx1ZUNoYW5nZU1vZGUgPT09IFZhbHVlQ2hhbmdlTW9kZS5JTU1FRElBVEVfQUNUSU9OKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGREYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcih3aWRnZXQua2V5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZURhdGFDaGFuZ2VBY3Rpb25IYW5kbGVyKHdpZGdldC5rZXkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBzdWJzY3JpYmUgdG8gbmV3IGZvcm1zXHJcbiAgICAgIGZvcm1zLmZvckVhY2goKGNvbXBvbmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5kYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcnMuaGFzKGNvbXBvbmVudCkpIHtcclxuICAgICAgICAgIGxldCBzdWJzID0gY29tcG9uZW50LnNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZVxyXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5kYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcihldmVudCkpO1xyXG4gICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcnMuc2V0KGNvbXBvbmVudCwgc3Vicyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIHVuc3Vic2NyaWJlIGZyb20gcmVtb3ZlZCBmb3Jtc1xyXG4gICAgICB0aGlzLmRhdGFDaGFuZ2VBY3Rpb25IYW5kbGVycy5mb3JFYWNoKChzdWJzLCBmb3JtKSA9PiB7XHJcbiAgICAgICAgaWYgKCFmb3Jtcy5maW5kKChjKSA9PiBjID09PSBmb3JtKSkge1xyXG4gICAgICAgICAgc3Vicy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcnMuZGVsZXRlKGZvcm0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRJbnZhbGlkRmllbGRzKCk6IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMge1xyXG4gICAgbGV0IGFnZ3JlZ2F0ZWRJbnZhbGlkRmllbGRzOiBTbWFydEZvcm1JbnZhbGlkRmllbGRzID0ge1xyXG4gICAgICBpbnZhbGlkRmllbGRLZXlzOiBbXSxcclxuICAgICAgaW52YWxpZEZpZWxkTmFtZXM6IFtdLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy51c2VRdWVyeUxpc3RzKSB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsU21hcnRGb3JtQ29tcG9uZW50cygpPy5mb3JFYWNoKChmb3JtKSA9PlxyXG4gICAgICAgIHRoaXMudmFsaWRhdGVGb3JtKGZvcm0sIGFnZ3JlZ2F0ZWRJbnZhbGlkRmllbGRzKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtV2lkZ2V0cz8uZm9yRWFjaCgoZm9ybSkgPT4gdGhpcy52YWxpZGF0ZUZvcm0oZm9ybSwgYWdncmVnYXRlZEludmFsaWRGaWVsZHMpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWdncmVnYXRlZEludmFsaWRGaWVsZHM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGVGb3JtKFxyXG4gICAgZm9ybTogU21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkLFxyXG4gICAgYWdncmVnYXRlZEludmFsaWRGaWVsZHM6IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHNcclxuICApIHtcclxuICAgIGxldCBpbnZhbGlkRmllbGRzT2ZGb3JtID0gZm9ybT8uZ2V0SW52YWxpZEZpZWxkcygpO1xyXG4gICAgaWYgKGludmFsaWRGaWVsZHNPZkZvcm0pIHtcclxuICAgICAgaW52YWxpZEZpZWxkc09mRm9ybS5pbnZhbGlkRmllbGRLZXlzLmZvckVhY2goKGtleSkgPT5cclxuICAgICAgICBhZ2dyZWdhdGVkSW52YWxpZEZpZWxkcy5pbnZhbGlkRmllbGRLZXlzLnB1c2goa2V5KVxyXG4gICAgICApO1xyXG4gICAgICBpbnZhbGlkRmllbGRzT2ZGb3JtLmludmFsaWRGaWVsZE5hbWVzLmZvckVhY2goKGtleSkgPT5cclxuICAgICAgICBhZ2dyZWdhdGVkSW52YWxpZEZpZWxkcy5pbnZhbGlkRmllbGROYW1lcy5wdXNoKGtleSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBVc2VVaUFjdGlvblxyXG4gIGdldEFkZGl0aW9uYWxQYXJhbXModWlBY3Rpb246IFVpQWN0aW9uKTogVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGZvclRleHRBcmVhOiAnJyxcclxuICAgICAgZm9yVGV4dEZpZWxkOiAnJyxcclxuICAgIH07XHJcbiAgfVxyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdEZvcm0odmFsaWRhdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3VibWl0Rm9ybXModmFsaWRhdGUpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcGVyZm9ybVVpQWN0aW9uUmVxdWVzdChcclxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgd2lkZ2V0SWQ/OiBzdHJpbmcsXHJcbiAgICBub2RlSWQ/OiBzdHJpbmdcclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ19maWxlcyddKSB7XHJcbiAgICAgIGNvbnN0IHBhcmFtID0gdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1sncGFyYW0nXTtcclxuICAgICAgY29uc3QgZmlsZXMgPSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydfZmlsZXMnXTtcclxuICAgICAgY29uc3QgaXNNdWx0aXBsZSA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ2lzTXVsdGlwbGUnXTtcclxuICAgICAgZGVsZXRlIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ3BhcmFtJ107XHJcbiAgICAgIGRlbGV0ZSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydfZmlsZXMnXTtcclxuICAgICAgZGVsZXRlIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ2lzTXVsdGlwbGUnXTtcclxuXHJcbiAgICAgIC8vIGF3YWl0IHRoaXMuc2VuZE1vZGVsVG9TZXJ2ZXIoKTtcclxuICAgICAgaWYgKCFpc011bHRpcGxlKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtVXBsb2FkQWN0aW9uKHRoaXMudXVpZCEsIHVpQWN0aW9uUmVxdWVzdCwgcGFyYW0sIGZpbGVzWzBdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1VcGxvYWRNdWx0aXBsZUFjdGlvbihcclxuICAgICAgICAgIHRoaXMudXVpZCEsXHJcbiAgICAgICAgICB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICAgICAgICBwYXJhbSxcclxuICAgICAgICAgIGZpbGVzXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh3aWRnZXRJZCAmJiBub2RlSWQpIHtcclxuICAgICAgLy8gYXdhaXQgdGhpcy5zZW5kTW9kZWxUb1NlcnZlcigpO1xyXG4gICAgICB0aGlzLmFkZE1vZGVsVG9XaWRnZXRBY3Rpb24odWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtV2lkZ2V0QWN0aW9uKHRoaXMudXVpZCEsIHdpZGdldElkLCBub2RlSWQsIHVpQWN0aW9uUmVxdWVzdCk7XHJcbiAgICB9IGVsc2UgaWYgKHdpZGdldElkKSB7XHJcbiAgICAgIC8vIGF3YWl0IHRoaXMuc2VuZE1vZGVsVG9TZXJ2ZXIoKTtcclxuICAgICAgdGhpcy5hZGRNb2RlbFRvV2lkZ2V0QWN0aW9uKHVpQWN0aW9uUmVxdWVzdCk7XHJcbiAgICAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQucGVyZm9ybVdpZGdldE1haW5BY3Rpb24odGhpcy51dWlkISwgd2lkZ2V0SWQsIHVpQWN0aW9uUmVxdWVzdCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1BY3Rpb24odGhpcy51dWlkISwgdWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhZGRNb2RlbFRvV2lkZ2V0QWN0aW9uKHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0KSB7XHJcbiAgICBpZiAodGhpcy5zZW5kTW9kZWxPbldpZGdldEFjdGlvbikge1xyXG4gICAgICB0aGlzLnN1Ym1pdEZvcm0oZmFsc2UpO1xyXG4gICAgICAvLyBtaW1pYyBDb21wb25lbnRNb2RlbFxyXG4gICAgICB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydjbGllbnRQYWdlTW9kZWwnXSA9IHsgZGF0YTogdGhpcy5nZXRNb2RlbCgpIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGFzeW5jIHNlbmRNb2RlbFRvU2VydmVyKCkge1xyXG4gIC8vICAgdGhpcy5zdWJtaXRGb3JtcyhmYWxzZSk7XHJcbiAgLy8gICBsZXQgZGF0YUNoYW5nZSA9IHtcclxuICAvLyAgICAga2luZDogRGF0YUNoYW5nZUtpbmQuV2lkZ2V0LFxyXG4gIC8vICAgICBzb3VyY2U6ICcnLFxyXG4gIC8vICAgICB2YWx1ZXM6IFtbJycsIHRoaXMuZ2V0TW9kZWwoKV1dLFxyXG4gIC8vICAgfTtcclxuICAvLyAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQuZGF0YUNoYW5nZWQodGhpcy51dWlkISwgZGF0YUNoYW5nZSk7XHJcbiAgLy8gfVxyXG5cclxuICBoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseShcclxuICAgIHVpQWN0aW9uOiBVaUFjdGlvbixcclxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XHJcbiAgKTogUHJvbWlzZTxVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2U+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcignaGFuZGxlU3BlY2lmaWNEZW1hbmRzQXN5bmNocm9ub3VzbHkgbWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8qKlxyXG4gICAqIFN1Ym1pdHMgYWxsIHRoZSByZWdpc3RlcmVkIGZvcm1zIGluIHRoZSBTbWFydENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdWJtaXRGb3Jtcyh2YWxpZGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlUXVlcnlMaXN0cykge1xyXG4gICAgICB0aGlzLmdldEFsbFNtYXJ0Rm9ybUNvbXBvbmVudHMoKT8uZm9yRWFjaCgoZm9ybSkgPT4ge1xyXG4gICAgICAgIGZvcm0/LnN1Ym1pdEZvcm0odmFsaWRhdGUpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybVdpZGdldHM/LmZvckVhY2goKGZvcm0pID0+IHtcclxuICAgICAgICBmb3JtPy5zdWJtaXRGb3JtKHZhbGlkYXRlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkR3JpZChcclxuICAgIHNtYXJ0R3JpZDogU21hcnRHcmlkLFxyXG4gICAgb3B0aW9uczogR3JpZE9wdGlvbnMsXHJcbiAgICB1c2VBc0RlZmF1bHRHcmlkPzogYm9vbGVhbixcclxuICAgIGNvbXBvbmVudFJlZmVyZW5jZT86IFNtYXJ0R3JpZENvbXBvbmVudFxyXG4gICk6IFNtYXJ0R3JpZCB7XHJcbiAgICBzbWFydEdyaWQub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICBzbWFydEdyaWQudWlBY3Rpb25TZXJ2aWNlID0gdGhpcy51aUFjdGlvblNlcnZpY2U7XHJcbiAgICBzbWFydEdyaWQudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICAgIHNtYXJ0R3JpZC5zZXJ2aWNlVG9Vc2UgPSB0aGlzO1xyXG4gICAgc21hcnRHcmlkLnZpZXdDb250ZXh0U2VydmljZSA9IHRoaXMudmlld0NvbnRleHQ7XHJcblxyXG4gICAgaWYgKCF0aGlzLnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgdGhpcy53aWRnZXRzLnNldChzbWFydEdyaWQuZ3JpZElkZW50aWZpZXIsIGNvbXBvbmVudFJlZmVyZW5jZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oYEFkZGVkIHNtYXJ0R3JpZCB3aGVuIHVzZVF1ZXJ5TGlzdHMgPT09IHRydWUgKCR7c21hcnRHcmlkLmdyaWRJZGVudGlmaWVyfSlgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodXNlQXNEZWZhdWx0R3JpZCkge1xyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCA9IHNtYXJ0R3JpZDtcclxuICAgICAgcmV0dXJuIHRoaXMuc21hcnRHcmlkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzbWFydEdyaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkRm9ybShcclxuICAgIHNtYXJ0Rm9ybUlkOiBzdHJpbmcsXHJcbiAgICBzbWFydEZvcm06IFNtYXJ0Rm9ybSxcclxuICAgIGNvbXBvbmVudFJlZmVyZW5jZT86IFNtYXJ0Zm9ybUNvbXBvbmVudFxyXG4gICk6IFNtYXJ0Rm9ybSB7XHJcbiAgICBpZiAoIXRoaXMudXNlUXVlcnlMaXN0cykge1xyXG4gICAgICB0aGlzLmZvcm1XaWRnZXRzLnNldChzbWFydEZvcm1JZCwgY29tcG9uZW50UmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihgQWRkZWQgc21hcnRGb3JtIHdoZW4gdXNlUXVlcnlMaXN0cyA9PT0gdHJ1ZSAoJHtzbWFydEZvcm1JZH0pYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgKHRoaXMuc2VuZERhdGFDaGFuZ2VzICYmIGNvbXBvbmVudFJlZmVyZW5jZSkge1xyXG4gICAgLy8gICBzbWFydEZvcm0udXNlT25WYWx1ZUNoYW5nZUV2ZW50ID0gdHJ1ZTtcclxuXHJcbiAgICAvLyAgIGNvbXBvbmVudFJlZmVyZW5jZS5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2VcclxuICAgIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgLy8gICAgIC5zdWJzY3JpYmUoKHZhbHVlQ2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpID0+IHtcclxuICAgIC8vICAgICAgIHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2VzKHZhbHVlQ2hhbmdlKTtcclxuICAgIC8vICAgICB9KTtcclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gc21hcnRGb3JtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFVwRGVmYXVsdFRyZWUodHJlZUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRUcmVlU2VydmljZSA9IHRoaXMuY3JlYXRlVHJlZVNlcnZpY2UodHJlZUlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVUcmVlU2VydmljZSh0cmVlSWQ6IHN0cmluZyk6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHtcclxuICAgIGNvbnN0IHRyZWVTZXJ2aWNlID0gbmV3IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlKHRoaXMuaW5qZWN0LCB0aGlzLnBhZ2VOYW1lISwgdHJlZUlkKTtcclxuICAgIGlmICghdGhpcy51c2VRdWVyeUxpc3RzKSB7XHJcbiAgICAgIHRoaXMud2lkZ2V0cy5zZXQodHJlZUlkLCB0cmVlU2VydmljZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oYEFkZGVkIHNtYXJ0VHJlZSB3aGVuIHVzZVF1ZXJ5TGlzdHMgPT09IHRydWUgKCR7dHJlZUlkfSlgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJlZVNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkRmlsZVVwbG9hZGVyKFxyXG4gICAgdWlBY3Rpb25Db2RlOiBzdHJpbmcsXHJcbiAgICBmaWxlRm9ybWF0cz86IHN0cmluZ1tdLFxyXG4gICAgbWF4U2l6ZU1iPzogbnVtYmVyLFxyXG4gICAgaXNNdWx0aXBsZT86IGJvb2xlYW5cclxuICApOiBTbWFydENvbXBvbmVudEZpbGVVcGxvYWRlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB1aUFjdGlvbkNvZGUsXHJcbiAgICAgIHNtYXJ0Q29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBmaWxlRm9ybWF0cyxcclxuICAgICAgaXNNdWx0aXBsZSxcclxuICAgICAgbWF4U2l6ZU1iLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gaGFuZGxlIGNoYW5nZXNcclxuICBwcml2YXRlIGhhbmRsZVZhbHVlQ2hhbmdlcyh2YWx1ZUNoYW5nZTogU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlKTogdm9pZCB7XHJcbiAgICBsZXQgZGF0YUNoYW5nZTogRGF0YUNoYW5nZTtcclxuICAgIGlmICh2YWx1ZUNoYW5nZS5rZXkuaW5jbHVkZXMoJy4nKSkge1xyXG4gICAgICBjb25zdCBzb3VyY2UgPSB2YWx1ZUNoYW5nZS5rZXkuc3BsaXQoJy4nKVswXTtcclxuICAgICAgY29uc3QgdmFsdWVLZXkgPSB2YWx1ZUNoYW5nZS5rZXkuc3BsaXQoJy4nKVsxXTtcclxuICAgICAgZGF0YUNoYW5nZSA9IHtcclxuICAgICAgICBraW5kOiB2YWx1ZUNoYW5nZS5raW5kID09PSAnYmFzaWMnID8gRGF0YUNoYW5nZUtpbmQuV0lER0VUIDogRGF0YUNoYW5nZUtpbmQuU0VMRUNUSU9OLFxyXG4gICAgICAgIHNvdXJjZSxcclxuICAgICAgICB2YWx1ZXM6IFtbdmFsdWVLZXksIHZhbHVlQ2hhbmdlLnZhbHVlXV0sXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkYXRhQ2hhbmdlID0ge1xyXG4gICAgICAgIGtpbmQ6IHZhbHVlQ2hhbmdlLmtpbmQgPT09ICdiYXNpYycgPyBEYXRhQ2hhbmdlS2luZC5XSURHRVQgOiBEYXRhQ2hhbmdlS2luZC5TRUxFQ1RJT04sXHJcbiAgICAgICAgc291cmNlOiB2YWx1ZUNoYW5nZS5rZXksXHJcbiAgICAgICAgdmFsdWVzOiBbW3ZhbHVlQ2hhbmdlLmtleSwgdmFsdWVDaGFuZ2UudmFsdWVdXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpZXdDb250ZXh0LmRhdGFDaGFuZ2VkKHRoaXMudXVpZCEsIGRhdGFDaGFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzKGNoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChjaGFuZ2UuY2hhbmdlZFdpZGdldHMpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZVdpZGdldHMoY2hhbmdlLmNoYW5nZWRXaWRnZXRzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGRhdGFDaGFuZ2VIYXNCZWVuTmV4dGVkID0gZmFsc2U7XHJcbiAgICAgIGlmIChjaGFuZ2UuY2hhbmdlcykge1xyXG4gICAgICAgIGNvbnN0IGNoYW5nZXMgPSBjaGFuZ2UuY2hhbmdlcztcclxuICAgICAgICBPYmplY3Qua2V5cyhjaGFuZ2VzKS5tYXAoKGNoYW5nZUtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ2RhdGEuJykpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVEYXRhQ2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleS5zdGFydHNXaXRoKCdsYXlvdXRzLicpICYmIHRoaXMubW9kZWw/LmxheW91dHMpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVMYXlvdXRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ2NvbXBvbmVudExheW91dHMuJykgJiYgdGhpcy5tb2RlbD8ubGF5b3V0cykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbXBvbmVudExheW91dENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgndmFsdWVTZXRzLicpICYmIHRoaXMubW9kZWw/LnZhbHVlU2V0cykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVZhbHVlU2V0Q2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleSA9PT0gJ2FjdGlvbnMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQWN0aW9uQ2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleSA9PT0gJ2NvbnN0cmFpbnRzJykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbnN0cmFpbnRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsID0gY2hhbmdlc1snJ10gYXMgQ29tcG9uZW50TW9kZWw7XHJcbiAgICAgICAgICAgIGRhdGFDaGFuZ2VIYXNCZWVuTmV4dGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFkYXRhQ2hhbmdlSGFzQmVlbk5leHRlZCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlZC5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgdGhpcy5tb2RlbCA9IGNoYW5nZS52YWx1ZSBhcyBDb21wb25lbnRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNoYW5nZS5jaGFuZ2VkV2lkZ2V0cyAmJiAhY2hhbmdlLmNoYW5nZXMgJiYgY2hhbmdlLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSBjaGFuZ2UudmFsdWUgYXMgQ29tcG9uZW50TW9kZWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNoYW5nZVdpZGdldHMoY2hhbmdlZFdpZGdldHM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBsZXQgd2lkZ2V0cyA9IHRoaXMuZ2V0V2lkZ2V0cygpO1xyXG4gICAgY2hhbmdlZFdpZGdldHMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgcmVmZXJlbmNlID0gd2lkZ2V0cy5nZXQoa2V5KTtcclxuXHJcbiAgICAgIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiBTbWFydEdyaWRDb21wb25lbnQpIHtcclxuICAgICAgICByZWZlcmVuY2UucmVmcmVzaCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlKSB7XHJcbiAgICAgICAgcmVmZXJlbmNlLmluaXRpYWxpemUoKTtcclxuICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiBTbWFydEZpbHRlckVkaXRvclNlcnZpY2UpIHtcclxuICAgICAgICByZWZlcmVuY2UubG9hZCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgcmVmZXJlbmNlIGZvciAke2tleX0gaXMgdW5kZWZpbmVkLmApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsdWVEZWVwbHkobW9kZWw6IGFueSwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgIGxldCBzcGxpdHRlZEtleXMgPSBrZXkuc3BsaXQoJy4nKTtcclxuXHJcbiAgICBsZXQgZGVlcE1vZGVsOiBhbnlbXSA9IFttb2RlbF07XHJcbiAgICBsZXQgdGVtcE1vZGVsOiBhbnk7XHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNwbGl0dGVkS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdGVtcE1vZGVsID0gZGVlcE1vZGVsW2luZGV4XTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnc3RyaW5nJyAmJlxyXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdib29sZWFuJyAmJlxyXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdudW1iZXInICYmXHJcbiAgICAgICAgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgZGVlcE1vZGVsLnB1c2godGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGluZGV4ID09PSBzcGxpdHRlZEtleXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGxldCBvbGRWYWx1ZSA9IHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXTtcclxuICAgICAgICAvLyBpZiAodmFsdWUgPT09ICcnICYmIChvbGRWYWx1ZSA9PT0gbnVsbCB8fCBvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB0aGVuIGRvbid0IGNoYW5nZSB2YWx1ZS5cclxuICAgICAgICBpZiAodmFsdWUgIT09ICcnIHx8IChvbGRWYWx1ZSAhPT0gbnVsbCAmJiBvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICAgICAgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZURhdGFDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VmFsdWVEZWVwbHkodGhpcy5tb2RlbCwgY2hhbmdlS2V5LCBjaGFuZ2VzW2NoYW5nZUtleV0pO1xyXG5cclxuICAgIGlmICh0aGlzLnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgdGhpcy5nZXRBbGxTbWFydEZvcm1Db21wb25lbnRzKCk/LmZvckVhY2goKGZvcm0pID0+IGZvcm0ucmVmcmVzaCgpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybVdpZGdldHMuZm9yRWFjaCgoZm9ybUNvbXBvbmVudDogU21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChmb3JtQ29tcG9uZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFByb3ZpZGVkIGZvcm0gcmVmZXJlbmNlIGZvciAke2tleX0gaXMgdW5kZWZpbmVkLmApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3JtQ29tcG9uZW50LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVMYXlvdXRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBsYXlvdXRLZXkgPSBjaGFuZ2VLZXkuc3BsaXQoJy4nKVsxXTtcclxuICAgIHRoaXMubW9kZWwhLmxheW91dHNbbGF5b3V0S2V5XSA9IGNoYW5nZXNbY2hhbmdlS2V5XTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ29tcG9uZW50TGF5b3V0Q2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgbGF5b3V0S2V5ID0gY2hhbmdlS2V5LnNwbGl0KCcuJylbMV07XHJcbiAgICBsZXQgY29tcG9uZW50TGF5b3V0czogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfSA9IHRoaXMubW9kZWwhLmNvbXBvbmVudExheW91dHMgYXMge1xyXG4gICAgICBba2V5OiBzdHJpbmddOiBPYmplY3Q7XHJcbiAgICB9O1xyXG4gICAgY29tcG9uZW50TGF5b3V0c1tsYXlvdXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZVNldENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IHZhbHVlU2V0S2V5ID0gY2hhbmdlS2V5LnNwbGl0KCcuJylbMV07XHJcbiAgICB0aGlzLm1vZGVsIS52YWx1ZVNldHMhW3ZhbHVlU2V0S2V5XSA9IGNoYW5nZXNbY2hhbmdlS2V5XTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQWN0aW9uQ2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGVsIS5hY3Rpb25zID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gICAgdGhpcy5pbml0QWN0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVDb25zdHJhaW50Q2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGVsIS5jb25zdHJhaW50cyA9IGNoYW5nZXNbY2hhbmdlS2V5XTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydENvbXBvbmVudEZpbGVVcGxvYWRlciB7XHJcbiAgdWlBY3Rpb25Db2RlOiBzdHJpbmc7XHJcbiAgbWF4U2l6ZU1iPzogbnVtYmVyO1xyXG4gIGZpbGVGb3JtYXRzPzogc3RyaW5nW107XHJcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XHJcbiAgc21hcnRDb21wb25lbnQ6IFNtYXJ0Q29tcG9uZW50QXBpQ2xpZW50PGFueT47XHJcbn1cclxuIl19
691
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQU1MLG1CQUFtQixHQUVwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUlMLGNBQWMsRUFHZCx1QkFBdUIsRUFHdkIseUJBQXlCLEVBR3pCLGVBQWUsR0FJaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BGLE9BQU8sRUFLTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUVMLDJCQUEyQixHQUM1QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTFFLE1BQU0sT0FBZ0IsdUJBQXVCO0lBd0czQyxZQUNZLE1BQWdCLEVBQ2hCLElBQXlDLEVBQ3pDLFFBQWlCLEVBQ2pCLGNBQXVCLEVBQ3ZCLE9BQW9CLEVBQ3BCLFFBQW9CO1FBTHBCLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBcUM7UUFDekMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixtQkFBYyxHQUFkLGNBQWMsQ0FBUztRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVk7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O1FBQ3hDLElBQUksZ0JBQWdCLEdBQThCLElBQUksQ0FBQyxLQUFNLENBQUMsZ0JBRTdELENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQStCLEVBQUUsU0FBaUI7UUFDN0UsSUFBSSxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBTSxDQUFDLFNBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE9BQStCLEVBQUUsU0FBaUI7UUFDM0UsSUFBSSxDQUFDLEtBQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU8sc0JBQXNCLENBQUMsT0FBK0IsRUFBRSxTQUFpQjtRQUMvRSxJQUFJLENBQUMsS0FBTSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdCxcclxuICBJbmplY3RvcixcclxuICBRdWVyeUxpc3QsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFJlbmRlcmVyU3R5bGVGbGFnczIsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTbWFydHRyZWVHZW5lcmljU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXRyZWUvcHJvamVjdHMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudE1vZGVsLFxyXG4gIENvbXBvbmVudE1vZGVsQ2hhbmdlLFxyXG4gIERhdGFDaGFuZ2UsXHJcbiAgRGF0YUNoYW5nZUtpbmQsXHJcbiAgRXhlY3V0ZVVpQWN0aW9uT3B0aW9ucyxcclxuICBTbWFydFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXHJcbiAgVWlBY3Rpb24sXHJcbiAgVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zLFxyXG4gIFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UsXHJcbiAgVWlBY3Rpb25Nb2RlbCxcclxuICBVaUFjdGlvblJlcXVlc3QsXHJcbiAgVWlBY3Rpb25TZXJ2aWNlLFxyXG4gIFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZSxcclxuICBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQsXHJcbiAgVXNlVWlBY3Rpb24yLFxyXG59IGZyb20gJy4uL3ZpZXctY29udGV4dC9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0QXV0aGVudGljYXRpb25TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi9zbWFydC1hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtc3ViamVjdC9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IEdyaWRPcHRpb25zLCBTbWFydEdyaWQsIFNtYXJ0R3JpZENvbXBvbmVudCB9IGZyb20gJy4uL3NtYXJ0LWdyaWQvcHJvamVjdHMnO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0Rm9ybSxcclxuICBTbWFydEZvcm1JbnZhbGlkRmllbGRzLFxyXG4gIFNtYXJ0Zm9ybUNvbXBvbmVudCxcclxuICBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UsXHJcbiAgVmFsdWVDaGFuZ2VNb2RlLFxyXG59IGZyb20gJy4uL3NtYXJ0LWZvcm0vcHJvamVjdHMnO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50LFxyXG4gIFNtYXJ0Q29tcG9uZW50TGF5b3V0VXRpbGl0eSxcclxufSBmcm9tICcuLi9zbWFydC1jb21wb25lbnQtbGF5b3V0L3Byb2plY3RzJztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtZmlsdGVyLWVkaXRvci9wcm9qZWN0JztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTbWFydENvbXBvbmVudEFwaUNsaWVudDxUPiBpbXBsZW1lbnRzIFVzZVVpQWN0aW9uMiB7XHJcbiAgcHJvdGVjdGVkIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHByaXZhdGUgZGV0ZWN0Q2hhbmdlOiBTbWFydFN1YmplY3Q8Q29tcG9uZW50TW9kZWxDaGFuZ2U+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XHJcblxyXG4gIHByaXZhdGUgX3V1aWQ/OiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgdXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBnZXQgdXVpZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3V1aWQ7XHJcbiAgfVxyXG4gIHNldCB1dWlkKHV1aWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX3V1aWQgPT09IHV1aWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpcnN0VXVpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBpZiAodGhpcy51dWlkKSB7XHJcbiAgICAgIHRoaXMudmlld0NvbnRleHQudW5mb2xsb3codGhpcy51dWlkKTtcclxuICAgICAgZmlyc3RVdWlkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLl91dWlkID0gdXVpZDtcclxuICAgIGlmICh1dWlkKSB7XHJcbiAgICAgIHRoaXMuZ2V0V2lkZ2V0cygpLmZvckVhY2goKHJlZiwga2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlZiBpbnN0YW5jZW9mIFNtYXJ0R3JpZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgcmVmLnV1aWQgPSB1dWlkO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVmIGluc3RhbmNlb2YgU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlKSB7XHJcbiAgICAgICAgICByZWYuY29uZmlnLnV1aWQgPSB1dWlkO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXJlZiAmJiAhZmlyc3RVdWlkKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBQcm92aWRlZCByZWZlcmVuY2UgZm9yICR7a2V5fSBpcyB1bmRlZmluZWQgb24gdXVpZCBjaGFuZ2UuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCF0aGlzLnV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZFN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMudXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkU3Vic2NyaXB0aW9uID0gdGhpcy52aWV3Q29udGV4dC51dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWRcclxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChwYWdlTmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocGFnZU5hbWUgPT09IHRoaXMucGFnZU5hbWUhKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ydW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmlld0NvbnRleHQuZm9sbG93KHRoaXMuX3V1aWQhLCB0aGlzLmRldGVjdENoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGdldCBtb2RlbCgpOiBDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9kZWw7XHJcbiAgfVxyXG4gIHNldCBtb2RlbChtb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YT86IFQ7XHJcblxyXG4gIGdldCBkYXRhKCk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG4gIHNldCBkYXRhKG1vZGVsOiBUIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gbW9kZWw7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XHJcblxyXG4gIHB1YmxpYyBkYXRhQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG5cclxuICAvLyBHcmlkXHJcbiAgc21hcnRHcmlkPzogU21hcnRHcmlkO1xyXG5cclxuICAvLyBTZXJ2aWNlc1xyXG4gIHByb3RlY3RlZCB2aWV3Q29udGV4dDogU21hcnRWaWV3Q29udGV4dFNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHVpQWN0aW9uU2VydmljZTogVWlBY3Rpb25TZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB1aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlOiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB0cmFuc2xhdGU/OiBTbWFydFRyYW5zbGF0ZVNlcnZpY2U7XHJcblxyXG4gIC8vIFRyZWVcclxuICBwcml2YXRlIF9zbWFydFRyZWVTZXJ2aWNlPzogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2U7XHJcblxyXG4gIHB1YmxpYyBnZXQgc21hcnRUcmVlU2VydmljZSgpOiBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc21hcnRUcmVlU2VydmljZTtcclxuICB9XHJcbiAgcHVibGljIHNldCBzbWFydFRyZWVTZXJ2aWNlKHNtYXJ0VHJlZVNlcnZpY2U6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fc21hcnRUcmVlU2VydmljZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdUaGUgZGVmYXVsdCB0cmVlIGhhcyBhbHJlYWR5IHNldCB1cCEnKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2UgPSBzbWFydFRyZWVTZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29udGFpbmVkIFdpZGdldHNcclxuICB3aWRnZXRzOiBNYXA8c3RyaW5nLCBTbWFydEdyaWRDb21wb25lbnQgfCBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IHVuZGVmaW5lZD4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGZvcm1XaWRnZXRzOiBNYXA8c3RyaW5nLCBTbWFydGZvcm1Db21wb25lbnQgfCB1bmRlZmluZWQ+ID0gbmV3IE1hcCgpO1xyXG5cclxuICB1c2VRdWVyeUxpc3RzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNlbmRNb2RlbE9uV2lkZ2V0QWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGRhdGFDaGFuZ2VLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBkYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcnMgPSBuZXcgTWFwPFNtYXJ0Zm9ybUNvbXBvbmVudCwgU3Vic2NyaXB0aW9uPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBpbmplY3Q6IEluamVjdG9yLFxyXG4gICAgcHJvdGVjdGVkIGF1dGg6IFNtYXJ0QXV0aGVudGljYXRpb25TZXJ2aWNlSW50ZXJmYWNlLFxyXG4gICAgcHJvdGVjdGVkIHBhZ2VOYW1lPzogc3RyaW5nLFxyXG4gICAgcHJvdGVjdGVkIF9jb21wb25lbnROYW1lPzogc3RyaW5nLFxyXG4gICAgcHJvdGVjdGVkIGVsZW1lbnQ/OiBFbGVtZW50UmVmLFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyPzogUmVuZGVyZXIyXHJcbiAgKSB7XHJcbiAgICAvLyBjaGVjayBhbmQgY2FsY3VsYXRlIHBhZ2VOYW1lXHJcbiAgICBpZiAoIXRoaXMucGFnZU5hbWUgJiYgIXRoaXMuX2NvbXBvbmVudE5hbWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwYWdlTmFtZSBvciBjb21wb25lbnROYW1lIG11c3QgYmUgc3BlY2lmaWVkIScpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld0NvbnRleHQgPSBpbmplY3QuZ2V0KFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlKTtcclxuICAgIGlmICh0aGlzLl9jb21wb25lbnROYW1lKSB7XHJcbiAgICAgIGxldCBwYWdlTmFtZUZvckNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRleHQuZ2V0UGFnZU5hbWVPZkNvbXBvbmVudCh0aGlzLl9jb21wb25lbnROYW1lKTtcclxuICAgICAgaWYgKCF0aGlzLnBhZ2VOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlTmFtZSA9IHBhZ2VOYW1lRm9yQ29tcG9uZW50O1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGFnZU5hbWUgIT09IHBhZ2VOYW1lRm9yQ29tcG9uZW50KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYHBhZ2VOYW1lICgke3BhZ2VOYW1lfSkgYW5kIGNvbXBvbmVudE5hbWUgKCR7X2NvbXBvbmVudE5hbWV9KSBkb2Vzbid0IG1hdGNoIWBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBmcm9tIHRoaXMgcG9pbnQgd2UgaGF2ZSB0aGlzLnBhZ2VOYW1lXHJcbiAgICB0aGlzLmRldGVjdENoYW5nZS5zdWJzY3JpYmUoKGNoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpID0+IHtcclxuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzKGNoYW5nZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZSA9IGluamVjdC5nZXQoVWlBY3Rpb25TZXJ2aWNlKTtcclxuICAgIHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSA9IGluamVjdC5nZXQoVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBfbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJ1bigpO1xyXG4gIH1cclxuICBfbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdDb250ZXh0LnVuZm9sbG93KHRoaXMudXVpZCEpO1xyXG4gICAgdGhpcy53aWRnZXRzLmNsZWFyKCk7XHJcblxyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIF9uZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy51c2VRdWVyeUxpc3RzKSB7XHJcbiAgICAgIGlmICghdGhpcy5nZXRTbWFydENvbXBvbmVudExheW91dHNRTCgpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdTbWFydENvbXBvbmVudExheW91dHNRTCBub3QgYXZhaWxhYmxlIScpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlUXVlcnlMaXN0KHRoaXMuZ2V0U21hcnRDb21wb25lbnRMYXlvdXRzUUwoKSEsIChjb21wKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29tcC5zbWFydENvbXBvbmVudExheW91dCkge1xyXG4gICAgICAgICAgICAvLyBUT0RPIG1heWJlIHdlIHNob3VsZCBzZXQgY29tcC5wYXJlbnQsIG5vdCBjb21wLnNtYXJ0Q29tcG9uZW50TGF5b3V0LnBhcmVudENvbXBvbmVudC4uXHJcbiAgICAgICAgICAgIFNtYXJ0Q29tcG9uZW50TGF5b3V0VXRpbGl0eS5zZXRQYXJlbnQoY29tcC5zbWFydENvbXBvbmVudExheW91dCwgdGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdEFjdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnV1aWQgJiYgdGhpcy51dWlkICE9PSBjb21wLnV1aWQpIGNvbXAudXVpZCA9IHRoaXMudXVpZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBmb3IgaGFuZGxpbmcgZW1iZWRkZWQgZm9ybXNcclxuICAgICAgICB0aGlzLmhhbmRsZVF1ZXJ5TGlzdCh0aGlzLmdldFNtYXJ0Q29tcG9uZW50TGF5b3V0c1FMKCkhLCAoZm9ybSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVEYXRhQ2hhbmdlU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5nZXRTbWFydEZvcm1zUUwoKSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybignZ2V0U21hcnRGb3Jtc1FMIG5vdCBhdmFpbGFibGUhJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUxpc3QodGhpcy5nZXRTbWFydEZvcm1zUUwoKSEsIChmb3JtKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZURhdGFDaGFuZ2VTdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmdldFNtYXJ0R3JpZHNRTCgpKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdTbWFydEdyaWRzUUwgbm90IGF2YWlsYWJsZSEnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhhbmRsZVF1ZXJ5TGlzdCh0aGlzLmdldFNtYXJ0R3JpZHNRTCgpISwgKGdyaWQpID0+IHtcclxuICAgICAgICAgIGlmIChncmlkKSB7XHJcbiAgICAgICAgICAgIGlmIChncmlkLnNtYXJ0R3JpZCkge1xyXG4gICAgICAgICAgICAgIGdyaWQuc21hcnRHcmlkLnVpQWN0aW9uU2VydmljZSA9IHRoaXMudWlBY3Rpb25TZXJ2aWNlO1xyXG4gICAgICAgICAgICAgIGdyaWQuc21hcnRHcmlkLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UgPSB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgZ3JpZC5zbWFydEdyaWQuc2VydmljZVRvVXNlID0gdGhpcztcclxuICAgICAgICAgICAgICBncmlkLnNtYXJ0R3JpZC52aWV3Q29udGV4dFNlcnZpY2UgPSB0aGlzLnZpZXdDb250ZXh0O1xyXG4gICAgICAgICAgICAgIGdyaWQuc2V0dXBUb29sYmFyKCk7XHJcbiAgICAgICAgICAgICAgaWYgKGdyaWQudG9vbGJhcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0QWN0aW9ucygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy51dWlkICYmIHRoaXMudXVpZCAhPT0gZ3JpZC51dWlkKSBncmlkLnV1aWQgPSB0aGlzLnV1aWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBoYW5kbGVRdWVyeUxpc3RTaW1wbGU8VD4ocWw6IFF1ZXJ5TGlzdDxUPiwgaGFuZGxlcjogKCkgPT4gdm9pZCkge1xyXG4gICAgaGFuZGxlcigpO1xyXG4gICAgcWwuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiBoYW5kbGVyKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGhhbmRsZVF1ZXJ5TGlzdDxUPihxbDogUXVlcnlMaXN0PFQ+LCBoYW5kbGVyOiAoZWw6IFQpID0+IHZvaWQpIHtcclxuICAgIHFsLmZvckVhY2goKGVsKSA9PiBoYW5kbGVyKGVsKSk7XHJcbiAgICBxbC5jaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxpc3QpID0+IChsaXN0IGFzIFF1ZXJ5TGlzdDxUPikuZm9yRWFjaCgoZWwpID0+IGhhbmRsZXIoZWwpKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0U21hcnRGb3Jtc1FMKCk6IFF1ZXJ5TGlzdDxTbWFydGZvcm1Db21wb25lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0U21hcnRHcmlkc1FMKCk6IFF1ZXJ5TGlzdDxTbWFydEdyaWRDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0U21hcnRUcmVlc1FMKCk6IFF1ZXJ5TGlzdDxTbWFydHRyZWVHZW5lcmljU2VydmljZT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTbWFydEZpbHRlclNlcnZpY2VzUUwoKTogUXVlcnlMaXN0PFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTbWFydFVpQWN0aW9uVG9vbGJhcnNRTCgpOiBRdWVyeUxpc3Q8VWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFNtYXJ0Q29tcG9uZW50TGF5b3V0c1FMKCk6XHJcbiAgICB8IFF1ZXJ5TGlzdDxTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudD5cclxuICAgIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcm90ZWN0ZWQgZ2V0V2lkZ2V0cygpOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICBTbWFydEdyaWRDb21wb25lbnQgfCBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSB8IHVuZGVmaW5lZFxyXG4gID4ge1xyXG4gICAgaWYgKHRoaXMudXNlUXVlcnlMaXN0cykge1xyXG4gICAgICBsZXQgd2lkZ2V0czogTWFwPFxyXG4gICAgICAgIHN0cmluZyxcclxuICAgICAgICBTbWFydEdyaWRDb21wb25lbnQgfCBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSB8IHVuZGVmaW5lZFxyXG4gICAgICA+ID0gbmV3IE1hcCgpO1xyXG4gICAgICB0aGlzLmdldEFsbFNtYXJ0R3JpZENvbXBvbmVudHMoKVxyXG4gICAgICAgIC5maWx0ZXIoKGdyaWQpID0+IChncmlkPy5zbWFydEdyaWQ/LmdyaWRJZGVudGlmaWVyID8gdHJ1ZSA6IGZhbHNlKSlcclxuICAgICAgICAuZm9yRWFjaCgoZ3JpZCkgPT4gd2lkZ2V0cy5zZXQoZ3JpZC5zbWFydEdyaWQhLmdyaWRJZGVudGlmaWVyLCBncmlkKSk7XHJcbiAgICAgIHRoaXMuZ2V0QWxsU21hcnRUcmVlQ29tcG9uZW50cygpXHJcbiAgICAgICAgLmZpbHRlcigodHJlZSkgPT4gKHRyZWU/LnNtYXJ0VHJlZU1vZGVsPy5pZGVudGlmaWVyID8gdHJ1ZSA6IGZhbHNlKSlcclxuICAgICAgICAuZm9yRWFjaCgodHJlZSkgPT4gd2lkZ2V0cy5zZXQodHJlZSEuc21hcnRUcmVlTW9kZWwhLmlkZW50aWZpZXIhLCB0cmVlKSk7XHJcbiAgICAgIHRoaXMuZ2V0QWxsU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlcygpXHJcbiAgICAgICAgLmZpbHRlcigoZmlsdGVyKSA9PiAoZmlsdGVyLmNvbmZpZy5pZGVudGlmaWVyID8gdHJ1ZSA6IGZhbHNlKSlcclxuICAgICAgICAuZm9yRWFjaCgoZmlsdGVyKSA9PiB3aWRnZXRzLnNldChmaWx0ZXIuY29uZmlnLmlkZW50aWZpZXIsIGZpbHRlcikpO1xyXG4gICAgICByZXR1cm4gd2lkZ2V0cztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLndpZGdldHM7XHJcbiAgfVxyXG5cclxuICBpbml0Q29tcG9uZW50QnlNb2RlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFN0eWxlKCk7XHJcbiAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICB0aGlzLmluaXRBY3Rpb25zKCk7XHJcblxyXG4gICAgaWYgKHRoaXMudXNlUXVlcnlMaXN0cykge1xyXG4gICAgICB0aGlzLmdldEFsbFNtYXJ0Rm9ybUNvbXBvbmVudHMoKT8uZm9yRWFjaCgoZm9ybSkgPT4ge1xyXG4gICAgICAgIGlmIChmb3JtLnNtYXJ0Rm9ybSkge1xyXG4gICAgICAgICAgZm9ybS5zbWFydEZvcm0uY29tcG9uZW50TW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgICAgICAgLy8gdXNlcyBkYXRhLCB2YWx1ZVNldHMsIGNvbnN0cmFpbnRzXHJcbiAgICAgICAgICBmb3JtLmNvbnN0cnVjdEZvcm0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gVE9ETzogbGF5b3V0LCB3aWRnZXRzXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaW5pdFN0eWxlKCkge1xyXG4gICAgaWYgKHRoaXMubW9kZWw/LnN0eWxlICYmIHRoaXMuZWxlbWVudCAmJiB0aGlzLnJlbmRlcmVyKSB7XHJcbiAgICAgIGxldCBzdHlsZURhdGEgPSB0aGlzLm1vZGVsLnN0eWxlITtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQhLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIC8vIGNzcyBzdHlsZSBwcm9wZXJ0aWVzXHJcbiAgICAgIGlmIChzdHlsZURhdGEuc3R5bGUpIHtcclxuICAgICAgICBPYmplY3QuZW50cmllcyhzdHlsZURhdGEuc3R5bGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlciEuc2V0U3R5bGUoZWxlbWVudCwga2V5LCB2YWx1ZSwgUmVuZGVyZXJTdHlsZUZsYWdzMi5JbXBvcnRhbnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGFkZCBjbGFzc2VzXHJcbiAgICAgIGlmIChzdHlsZURhdGEuY2xhc3Nlc1RvQWRkKSB7XHJcbiAgICAgICAgc3R5bGVEYXRhLmNsYXNzZXNUb0FkZC5mb3JFYWNoKChjbCkgPT4gdGhpcy5yZW5kZXJlciEuYWRkQ2xhc3MoZWxlbWVudCwgY2wpKTtcclxuICAgICAgfVxyXG4gICAgICAvLyByZW1vdmUgY2xhc3Nlc1xyXG4gICAgICBpZiAoc3R5bGVEYXRhLmNsYXNzZXNUb1JlbW92ZSkge1xyXG4gICAgICAgIHN0eWxlRGF0YS5jbGFzc2VzVG9SZW1vdmUuZm9yRWFjaCgoY2wpID0+IHRoaXMucmVuZGVyZXIhLnJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRBbGxTbWFydEZvcm1Db21wb25lbnRzKCk6IFNtYXJ0Zm9ybUNvbXBvbmVudFtdIHtcclxuICAgIGxldCBmb3JtczogU21hcnRmb3JtQ29tcG9uZW50W10gPSB0aGlzLmdldFNtYXJ0Rm9ybXNRTCgpPy50b0FycmF5KCkgPz8gW107XHJcbiAgICB0aGlzLmdldFNtYXJ0Q29tcG9uZW50TGF5b3V0c1FMKCk/LmZvckVhY2goKGNvbXApID0+IHtcclxuICAgICAgZm9ybXMucHVzaCguLi5TbWFydENvbXBvbmVudExheW91dFV0aWxpdHkuZ2V0Rm9ybXMoY29tcCkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZm9ybXM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0QWxsU21hcnRHcmlkQ29tcG9uZW50cygpOiBTbWFydEdyaWRDb21wb25lbnRbXSB7XHJcbiAgICBsZXQgZ3JpZHM6IFNtYXJ0R3JpZENvbXBvbmVudFtdID0gdGhpcy5nZXRTbWFydEdyaWRzUUwoKT8udG9BcnJheSgpID8/IFtdO1xyXG4gICAgdGhpcy5nZXRTbWFydENvbXBvbmVudExheW91dHNRTCgpPy5mb3JFYWNoKChjb21wKSA9PiB7XHJcbiAgICAgIGdyaWRzLnB1c2goLi4uU21hcnRDb21wb25lbnRMYXlvdXRVdGlsaXR5LmdldEdyaWRzKGNvbXApKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGdyaWRzO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEFsbFNtYXJ0VHJlZUNvbXBvbmVudHMoKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2VbXSB7XHJcbiAgICBsZXQgdHJlZXM6IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlW10gPSB0aGlzLmdldFNtYXJ0VHJlZXNRTCgpPy50b0FycmF5KCkgPz8gW107XHJcbiAgICB0aGlzLmdldFNtYXJ0Q29tcG9uZW50TGF5b3V0c1FMKCk/LmZvckVhY2goKGNvbXApID0+IHtcclxuICAgICAgdHJlZXMucHVzaCguLi5TbWFydENvbXBvbmVudExheW91dFV0aWxpdHkuZ2V0VHJlZXMoY29tcCkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdHJlZXM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0QWxsU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlcygpOiBTbWFydEZpbHRlckVkaXRvclNlcnZpY2VbXSB7XHJcbiAgICBsZXQgZmlsdGVyczogU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlW10gPSB0aGlzLmdldFNtYXJ0RmlsdGVyU2VydmljZXNRTCgpPy50b0FycmF5KCkgPz8gW107XHJcbiAgICByZXR1cm4gZmlsdGVycztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRBbGxTbWFydFVpQWN0aW9uVG9vbGJhcnMoKTogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50W10ge1xyXG4gICAgbGV0IHRvb2xiYXJzOiBVaUFjdGlvblRvb2xiYXJDb21wb25lbnRbXSA9IHRoaXMuZ2V0U21hcnRVaUFjdGlvblRvb2xiYXJzUUwoKT8udG9BcnJheSgpID8/IFtdO1xyXG4gICAgdGhpcy5nZXRBbGxTbWFydEdyaWRDb21wb25lbnRzKCk/LmZvckVhY2goKGdyaWQpID0+IHtcclxuICAgICAgaWYgKGdyaWQudG9vbGJhcikge1xyXG4gICAgICAgIHRvb2xiYXJzLnB1c2goZ3JpZC50b29sYmFyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldFNtYXJ0Q29tcG9uZW50TGF5b3V0c1FMKCk/LmZvckVhY2goKGNvbXApID0+IHtcclxuICAgICAgdG9vbGJhcnMucHVzaCguLi5TbWFydENvbXBvbmVudExheW91dFV0aWxpdHkuZ2V0VG9vbGJhcnMoY29tcCkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldEFsbFNtYXJ0Rm9ybUNvbXBvbmVudHMoKVxyXG4gICAgICA/LmZsYXRNYXAoKGZvcm0pID0+IGZvcm0uZ2V0VG9vbGJhcnMoKSlcclxuICAgICAgLmZpbHRlcigodG9vbGJhcikgPT4gdG9vbGJhciAhPT0gdW5kZWZpbmVkIHx8IHRvb2xiYXIgIT09IG51bGwpXHJcbiAgICAgIC5mb3JFYWNoKCh0b29sYmFyKSA9PiB0b29sYmFycy5wdXNoKHRvb2xiYXIgYXMgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50KSk7XHJcblxyXG4gICAgcmV0dXJuIHRvb2xiYXJzO1xyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tb2RlbD8uZGF0YSkge1xyXG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLm1vZGVsPy5kYXRhIGFzIGFueTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRBY3Rpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZWw/LmFjdGlvbnMpIHtcclxuICAgICAgbGV0IHVpQWN0aW9uTW9kZWxzID0gdGhpcy5tb2RlbD8uYWN0aW9ucy5tYXAoKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMsXHJcbiAgICAgICAgICB1aUFjdGlvbixcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgICAgbGV0IHRvb2xiYXJzID0gdGhpcy5nZXRBbGxTbWFydFVpQWN0aW9uVG9vbGJhcnMoKS5maWx0ZXIoKHRvb2xiYXIpID0+IHRvb2xiYXIuaWQpO1xyXG4gICAgICBsZXQgdG9vbGJhck1vZGVscyA9IG5ldyBNYXA8c3RyaW5nLCBVaUFjdGlvbk1vZGVsW10+KCk7XHJcbiAgICAgIHRvb2xiYXJzLmZvckVhY2goKHRvb2xiYXIpID0+IHtcclxuICAgICAgICB0b29sYmFyTW9kZWxzLnNldCh0b29sYmFyLmlkISwgW10pO1xyXG4gICAgICB9KTtcclxuICAgICAgbGV0IGdsb2JhbFVpQWN0aW9uTW9kZWxzOiBVaUFjdGlvbk1vZGVsW10gPSBbXTtcclxuICAgICAgdWlBY3Rpb25Nb2RlbHMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XHJcbiAgICAgICAgbGV0IGFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsW10gfCB1bmRlZmluZWQgPSBnbG9iYWxVaUFjdGlvbk1vZGVscztcclxuICAgICAgICBsZXQgdG9vbGJhcklkID0gYWN0aW9uLnVpQWN0aW9uLnRvb2xiYXI7XHJcbiAgICAgICAgaWYgKHRvb2xiYXJJZCAmJiB0b29sYmFyTW9kZWxzLmhhcyh0b29sYmFySWQpKSB7XHJcbiAgICAgICAgICBhY3Rpb25Nb2RlbCA9IHRvb2xiYXJNb2RlbHMuZ2V0KHRvb2xiYXJJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYWN0aW9uTW9kZWwpIHtcclxuICAgICAgICAgIGFjdGlvbk1vZGVsID0gZ2xvYmFsVWlBY3Rpb25Nb2RlbHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFjdGlvbk1vZGVsLnB1c2goYWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSBnbG9iYWxVaUFjdGlvbk1vZGVscztcclxuXHJcbiAgICAgIFByb21pc2UuYWxsKFxyXG4gICAgICAgIHRvb2xiYXJzLm1hcCgodG9vbGJhcikgPT4ge1xyXG4gICAgICAgICAgdG9vbGJhci51aUFjdGlvbk1vZGVscyA9IHRvb2xiYXJNb2RlbHMuZ2V0KHRvb2xiYXIuaWQhKTtcclxuICAgICAgICAgIHJldHVybiB0b29sYmFyLnNldFVwKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgIC8vIGNvbnRpbnVlIGNvZGUgaGVyZSBpZiBuZWVkZWRcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0b29sYmFyIHNldHVwOicsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ1bigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dGguYmZmQXBpc0hhdmVCZWVuU2V0VXApIHtcclxuICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmF1dGguaGVhZGVyc1VwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy51dWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUhKTtcclxuICAgIC8vIHRoaXMubW9kZWwgPSBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmxvYWQodGhpcy51dWlkKTtcclxuICAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQubG9hZDIodGhpcy51dWlkKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGV4ZWN1dGVVaUFjdGlvbih1aUFjdGlvbjogVWlBY3Rpb24sIG9wdGlvbnM/OiBFeGVjdXRlVWlBY3Rpb25PcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZS51aUFjdGlvbk1vZGVsID0ge1xyXG4gICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMsXHJcbiAgICAgIHVpQWN0aW9uOiB1aUFjdGlvbixcclxuICAgIH07XHJcbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZS5leGVjdXRlKHVpQWN0aW9uLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFkZERhdGFDaGFuZ2VBY3Rpb25IYW5kbGVyKGtleTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YUNoYW5nZUtleXMuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICB0aGlzLmRhdGFDaGFuZ2VLZXlzLnB1c2goa2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZURhdGFDaGFuZ2VBY3Rpb25IYW5kbGVyKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgaWR4ID0gdGhpcy5kYXRhQ2hhbmdlS2V5cy5pbmRleE9mKGtleSk7XHJcbiAgICBpZiAoaWR4ID49IDApIHtcclxuICAgICAgdGhpcy5kYXRhQ2hhbmdlS2V5cy5zcGxpY2UoaWR4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBkYXRhQ2hhbmdlQWN0aW9uSGFuZGxlcihldmVudDogU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhQ2hhbmdlS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XHJcbiAgICAgIHRoaXMuZXhlY3V0ZVVpQWN0aW9uKHtcclxuICAgICAgICBjb2RlOiBldmVudC5rZXksXHJcbiAgICAgICAgbW9kZWw6IHRydWUsXHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBpdGVtOiBldmVudC52YWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBoYW5kbGVEYXRhQ2hhbmdlU3Vic2NyaXB0aW9ucygpIHtcclxuICAgIGlmICh0aGlzLnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgbGV0IGZvcm1zID0gdGhpcy5nZXRBbGxTbWFydEZvcm1Db21wb25lbnRzKCk7XHJcbiAgICAgIC8vIGFkZCBlbGVtZW50cyB0byBkYXRhQ2hhbmdlS2V5c1xyXG4gICAgICBmb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiB7XHJcbiAgICAgICAgZm9ybS5zbWFydEZvcm0/LndpZGdldHMuZm9yRWFjaCgod2lkZ2V0KSA9PiB7XHJcbiAgICAgICAgICBpZiAod2lkZ2V0LmtleSkge1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0LnZhbHVlQ2hhbmdlTW9kZSA9PT0gVmFsdWVDaGFuZ2VNb2RlLklNTUVESUFURV9BQ1RJT04pIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZERhdGFDaGFuZ2VBY3Rpb25IYW5kbGVyKHdpZGdldC5rZXkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlRGF0YUNoYW5nZUFjdGlvbkhhbmRsZXIod2lkZ2V0LmtleSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIHN1YnNjcmliZSB0byBuZXcgZm9ybXNcclxuICAgICAgZm9ybXMuZm9yRWFjaCgoY29tcG9uZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFDaGFuZ2VBY3Rpb25IYW5kbGVycy5oYXMoY29tcG9uZW50KSkge1xyXG4gICAgICAgICAgbGV0IHN1YnMgPSBjb21wb25lbnQuc29waGlzdGljYXRlZFZhbHVlQ2hhbmdlXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLmRhdGFDaGFuZ2VBY3Rpb25IYW5kbGVyKGV2ZW50KSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2VBY3Rpb25IYW5kbGVycy5zZXQoY29tcG9uZW50LCBzdWJzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gdW5zdWJzY3JpYmUgZnJvbSByZW1vdmVkIGZvcm1zXHJcbiAgICAgIHRoaXMuZGF0YUNoYW5nZUFjdGlvbkhhbmRsZXJzLmZvckVhY2goKHN1YnMsIGZvcm0pID0+IHtcclxuICAgICAgICBpZiAoIWZvcm1zLmZpbmQoKGMpID0+IGMgPT09IGZvcm0pKSB7XHJcbiAgICAgICAgICBzdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2VBY3Rpb25IYW5kbGVycy5kZWxldGUoZm9ybSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEludmFsaWRGaWVsZHMoKTogU21hcnRGb3JtSW52YWxpZEZpZWxkcyB7XHJcbiAgICBsZXQgYWdncmVnYXRlZEludmFsaWRGaWVsZHM6IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMgPSB7XHJcbiAgICAgIGludmFsaWRGaWVsZEtleXM6IFtdLFxyXG4gICAgICBpbnZhbGlkRmllbGROYW1lczogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgdGhpcy5nZXRBbGxTbWFydEZvcm1Db21wb25lbnRzKCk/LmZvckVhY2goKGZvcm0pID0+XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZUZvcm0oZm9ybSwgYWdncmVnYXRlZEludmFsaWRGaWVsZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1XaWRnZXRzPy5mb3JFYWNoKChmb3JtKSA9PiB0aGlzLnZhbGlkYXRlRm9ybShmb3JtLCBhZ2dyZWdhdGVkSW52YWxpZEZpZWxkcykpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhZ2dyZWdhdGVkSW52YWxpZEZpZWxkcztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUZvcm0oXHJcbiAgICBmb3JtOiBTbWFydGZvcm1Db21wb25lbnQgfCB1bmRlZmluZWQsXHJcbiAgICBhZ2dyZWdhdGVkSW52YWxpZEZpZWxkczogU21hcnRGb3JtSW52YWxpZEZpZWxkc1xyXG4gICkge1xyXG4gICAgbGV0IGludmFsaWRGaWVsZHNPZkZvcm0gPSBmb3JtPy5nZXRJbnZhbGlkRmllbGRzKCk7XHJcbiAgICBpZiAoaW52YWxpZEZpZWxkc09mRm9ybSkge1xyXG4gICAgICBpbnZhbGlkRmllbGRzT2ZGb3JtLmludmFsaWRGaWVsZEtleXMuZm9yRWFjaCgoa2V5KSA9PlxyXG4gICAgICAgIGFnZ3JlZ2F0ZWRJbnZhbGlkRmllbGRzLmludmFsaWRGaWVsZEtleXMucHVzaChrZXkpXHJcbiAgICAgICk7XHJcbiAgICAgIGludmFsaWRGaWVsZHNPZkZvcm0uaW52YWxpZEZpZWxkTmFtZXMuZm9yRWFjaCgoa2V5KSA9PlxyXG4gICAgICAgIGFnZ3JlZ2F0ZWRJbnZhbGlkRmllbGRzLmludmFsaWRGaWVsZE5hbWVzLnB1c2goa2V5KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFVzZVVpQWN0aW9uXHJcbiAgZ2V0QWRkaXRpb25hbFBhcmFtcyh1aUFjdGlvbjogVWlBY3Rpb24pOiBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZm9yVGV4dEFyZWE6ICcnLFxyXG4gICAgICBmb3JUZXh0RmllbGQ6ICcnLFxyXG4gICAgfTtcclxuICB9XHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSh2YWxpZGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJtaXRGb3Jtcyh2YWxpZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBwZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QsXHJcbiAgICB3aWRnZXRJZD86IHN0cmluZyxcclxuICAgIG5vZGVJZD86IHN0cmluZ1xyXG4gICk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAodWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snX2ZpbGVzJ10pIHtcclxuICAgICAgY29uc3QgcGFyYW0gPSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydwYXJhbSddO1xyXG4gICAgICBjb25zdCBmaWxlcyA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ19maWxlcyddO1xyXG4gICAgICBjb25zdCBpc011bHRpcGxlID0gdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snaXNNdWx0aXBsZSddO1xyXG4gICAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1sncGFyYW0nXTtcclxuICAgICAgZGVsZXRlIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ19maWxlcyddO1xyXG4gICAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snaXNNdWx0aXBsZSddO1xyXG5cclxuICAgICAgLy8gYXdhaXQgdGhpcy5zZW5kTW9kZWxUb1NlcnZlcigpO1xyXG4gICAgICBpZiAoIWlzTXVsdGlwbGUpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1VcGxvYWRBY3Rpb24odGhpcy51dWlkISwgdWlBY3Rpb25SZXF1ZXN0LCBwYXJhbSwgZmlsZXNbMF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQucGVyZm9ybVVwbG9hZE11bHRpcGxlQWN0aW9uKFxyXG4gICAgICAgICAgdGhpcy51dWlkISxcclxuICAgICAgICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgICAgICAgIHBhcmFtLFxyXG4gICAgICAgICAgZmlsZXNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHdpZGdldElkICYmIG5vZGVJZCkge1xyXG4gICAgICAvLyBhd2FpdCB0aGlzLnNlbmRNb2RlbFRvU2VydmVyKCk7XHJcbiAgICAgIHRoaXMuYWRkTW9kZWxUb1dpZGdldEFjdGlvbih1aUFjdGlvblJlcXVlc3QpO1xyXG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1XaWRnZXRBY3Rpb24odGhpcy51dWlkISwgd2lkZ2V0SWQsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH0gZWxzZSBpZiAod2lkZ2V0SWQpIHtcclxuICAgICAgLy8gYXdhaXQgdGhpcy5zZW5kTW9kZWxUb1NlcnZlcigpO1xyXG4gICAgICB0aGlzLmFkZE1vZGVsVG9XaWRnZXRBY3Rpb24odWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbih0aGlzLnV1aWQhLCB3aWRnZXRJZCwgdWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQucGVyZm9ybUFjdGlvbih0aGlzLnV1aWQhLCB1aUFjdGlvblJlcXVlc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZE1vZGVsVG9XaWRnZXRBY3Rpb24odWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpIHtcclxuICAgIGlmICh0aGlzLnNlbmRNb2RlbE9uV2lkZ2V0QWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3VibWl0Rm9ybShmYWxzZSk7XHJcbiAgICAgIC8vIG1pbWljIENvbXBvbmVudE1vZGVsXHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ2NsaWVudFBhZ2VNb2RlbCddID0geyBkYXRhOiB0aGlzLmdldE1vZGVsKCkgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgYXN5bmMgc2VuZE1vZGVsVG9TZXJ2ZXIoKSB7XHJcbiAgLy8gICB0aGlzLnN1Ym1pdEZvcm1zKGZhbHNlKTtcclxuICAvLyAgIGxldCBkYXRhQ2hhbmdlID0ge1xyXG4gIC8vICAgICBraW5kOiBEYXRhQ2hhbmdlS2luZC5XaWRnZXQsXHJcbiAgLy8gICAgIHNvdXJjZTogJycsXHJcbiAgLy8gICAgIHZhbHVlczogW1snJywgdGhpcy5nZXRNb2RlbCgpXV0sXHJcbiAgLy8gICB9O1xyXG4gIC8vICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5kYXRhQ2hhbmdlZCh0aGlzLnV1aWQhLCBkYXRhQ2hhbmdlKTtcclxuICAvLyB9XHJcblxyXG4gIGhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZT4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseSBtZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLyoqXHJcbiAgICogU3VibWl0cyBhbGwgdGhlIHJlZ2lzdGVyZWQgZm9ybXMgaW4gdGhlIFNtYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHVibGljIHN1Ym1pdEZvcm1zKHZhbGlkYXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy51c2VRdWVyeUxpc3RzKSB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsU21hcnRGb3JtQ29tcG9uZW50cygpPy5mb3JFYWNoKChmb3JtKSA9PiB7XHJcbiAgICAgICAgZm9ybT8uc3VibWl0Rm9ybSh2YWxpZGF0ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtV2lkZ2V0cz8uZm9yRWFjaCgoZm9ybSkgPT4ge1xyXG4gICAgICAgIGZvcm0/LnN1Ym1pdEZvcm0odmFsaWRhdGUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRHcmlkKFxyXG4gICAgc21hcnRHcmlkOiBTbWFydEdyaWQsXHJcbiAgICBvcHRpb25zOiBHcmlkT3B0aW9ucyxcclxuICAgIHVzZUFzRGVmYXVsdEdyaWQ/OiBib29sZWFuLFxyXG4gICAgY29tcG9uZW50UmVmZXJlbmNlPzogU21hcnRHcmlkQ29tcG9uZW50XHJcbiAgKTogU21hcnRHcmlkIHtcclxuICAgIHNtYXJ0R3JpZC5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIHNtYXJ0R3JpZC51aUFjdGlvblNlcnZpY2UgPSB0aGlzLnVpQWN0aW9uU2VydmljZTtcclxuICAgIHNtYXJ0R3JpZC51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gICAgc21hcnRHcmlkLnNlcnZpY2VUb1VzZSA9IHRoaXM7XHJcbiAgICBzbWFydEdyaWQudmlld0NvbnRleHRTZXJ2aWNlID0gdGhpcy52aWV3Q29udGV4dDtcclxuXHJcbiAgICBpZiAoIXRoaXMudXNlUXVlcnlMaXN0cykge1xyXG4gICAgICB0aGlzLndpZGdldHMuc2V0KHNtYXJ0R3JpZC5ncmlkSWRlbnRpZmllciwgY29tcG9uZW50UmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihgQWRkZWQgc21hcnRHcmlkIHdoZW4gdXNlUXVlcnlMaXN0cyA9PT0gdHJ1ZSAoJHtzbWFydEdyaWQuZ3JpZElkZW50aWZpZXJ9KWApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1c2VBc0RlZmF1bHRHcmlkKSB7XHJcbiAgICAgIHRoaXMuc21hcnRHcmlkID0gc21hcnRHcmlkO1xyXG4gICAgICByZXR1cm4gdGhpcy5zbWFydEdyaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHNtYXJ0R3JpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRGb3JtKFxyXG4gICAgc21hcnRGb3JtSWQ6IHN0cmluZyxcclxuICAgIHNtYXJ0Rm9ybTogU21hcnRGb3JtLFxyXG4gICAgY29tcG9uZW50UmVmZXJlbmNlPzogU21hcnRmb3JtQ29tcG9uZW50XHJcbiAgKTogU21hcnRGb3JtIHtcclxuICAgIGlmICghdGhpcy51c2VRdWVyeUxpc3RzKSB7XHJcbiAgICAgIHRoaXMuZm9ybVdpZGdldHMuc2V0KHNtYXJ0Rm9ybUlkLCBjb21wb25lbnRSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKGBBZGRlZCBzbWFydEZvcm0gd2hlbiB1c2VRdWVyeUxpc3RzID09PSB0cnVlICgke3NtYXJ0Rm9ybUlkfSlgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5zZW5kRGF0YUNoYW5nZXMgJiYgY29tcG9uZW50UmVmZXJlbmNlKSB7XHJcbiAgICAvLyAgIHNtYXJ0Rm9ybS51c2VPblZhbHVlQ2hhbmdlRXZlbnQgPSB0cnVlO1xyXG5cclxuICAgIC8vICAgY29tcG9uZW50UmVmZXJlbmNlLnNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZVxyXG4gICAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAvLyAgICAgLnN1YnNjcmliZSgodmFsdWVDaGFuZ2U6IFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSkgPT4ge1xyXG4gICAgLy8gICAgICAgdGhpcy5oYW5kbGVWYWx1ZUNoYW5nZXModmFsdWVDaGFuZ2UpO1xyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHJldHVybiBzbWFydEZvcm07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VXBEZWZhdWx0VHJlZSh0cmVlSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zbWFydFRyZWVTZXJ2aWNlID0gdGhpcy5jcmVhdGVUcmVlU2VydmljZSh0cmVlSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZVRyZWVTZXJ2aWNlKHRyZWVJZDogc3RyaW5nKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2Uge1xyXG4gICAgY29uc3QgdHJlZVNlcnZpY2UgPSBuZXcgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UodGhpcy5pbmplY3QsIHRoaXMucGFnZU5hbWUhLCB0cmVlSWQpO1xyXG4gICAgaWYgKCF0aGlzLnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgdGhpcy53aWRnZXRzLnNldCh0cmVlSWQsIHRyZWVTZXJ2aWNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihgQWRkZWQgc21hcnRUcmVlIHdoZW4gdXNlUXVlcnlMaXN0cyA9PT0gdHJ1ZSAoJHt0cmVlSWR9KWApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmVlU2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRGaWxlVXBsb2FkZXIoXHJcbiAgICB1aUFjdGlvbkNvZGU6IHN0cmluZyxcclxuICAgIGZpbGVGb3JtYXRzPzogc3RyaW5nW10sXHJcbiAgICBtYXhTaXplTWI/OiBudW1iZXIsXHJcbiAgICBpc011bHRpcGxlPzogYm9vbGVhblxyXG4gICk6IFNtYXJ0Q29tcG9uZW50RmlsZVVwbG9hZGVyIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpQWN0aW9uQ29kZSxcclxuICAgICAgc21hcnRDb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGZpbGVGb3JtYXRzLFxyXG4gICAgICBpc011bHRpcGxlLFxyXG4gICAgICBtYXhTaXplTWIsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBoYW5kbGUgY2hhbmdlc1xyXG4gIHByaXZhdGUgaGFuZGxlVmFsdWVDaGFuZ2VzKHZhbHVlQ2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpOiB2b2lkIHtcclxuICAgIGxldCBkYXRhQ2hhbmdlOiBEYXRhQ2hhbmdlO1xyXG4gICAgaWYgKHZhbHVlQ2hhbmdlLmtleS5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHZhbHVlQ2hhbmdlLmtleS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICBjb25zdCB2YWx1ZUtleSA9IHZhbHVlQ2hhbmdlLmtleS5zcGxpdCgnLicpWzFdO1xyXG4gICAgICBkYXRhQ2hhbmdlID0ge1xyXG4gICAgICAgIGtpbmQ6IHZhbHVlQ2hhbmdlLmtpbmQgPT09ICdiYXNpYycgPyBEYXRhQ2hhbmdlS2luZC5XSURHRVQgOiBEYXRhQ2hhbmdlS2luZC5TRUxFQ1RJT04sXHJcbiAgICAgICAgc291cmNlLFxyXG4gICAgICAgIHZhbHVlczogW1t2YWx1ZUtleSwgdmFsdWVDaGFuZ2UudmFsdWVdXSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGFDaGFuZ2UgPSB7XHJcbiAgICAgICAga2luZDogdmFsdWVDaGFuZ2Uua2luZCA9PT0gJ2Jhc2ljJyA/IERhdGFDaGFuZ2VLaW5kLldJREdFVCA6IERhdGFDaGFuZ2VLaW5kLlNFTEVDVElPTixcclxuICAgICAgICBzb3VyY2U6IHZhbHVlQ2hhbmdlLmtleSxcclxuICAgICAgICB2YWx1ZXM6IFtbdmFsdWVDaGFuZ2Uua2V5LCB2YWx1ZUNoYW5nZS52YWx1ZV1dLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld0NvbnRleHQuZGF0YUNoYW5nZWQodGhpcy51dWlkISwgZGF0YUNoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNoYW5nZXMoY2hhbmdlOiBDb21wb25lbnRNb2RlbENoYW5nZSk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VkV2lkZ2V0cykge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlV2lkZ2V0cyhjaGFuZ2UuY2hhbmdlZFdpZGdldHMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZGF0YUNoYW5nZUhhc0JlZW5OZXh0ZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VzKSB7XHJcbiAgICAgICAgY29uc3QgY2hhbmdlcyA9IGNoYW5nZS5jaGFuZ2VzO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNoYW5nZXMpLm1hcCgoY2hhbmdlS2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZURhdGFDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ2xheW91dHMuJykgJiYgdGhpcy5tb2RlbD8ubGF5b3V0cykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnY29tcG9uZW50TGF5b3V0cy4nKSAmJiB0aGlzLm1vZGVsPy5sYXlvdXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50TGF5b3V0Q2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleS5zdGFydHNXaXRoKCd2YWx1ZVNldHMuJykgJiYgdGhpcy5tb2RlbD8udmFsdWVTZXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVTZXRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnYWN0aW9ucycpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnY29uc3RyYWludHMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29uc3RyYWludENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBjaGFuZ2VzWycnXSBhcyBDb21wb25lbnRNb2RlbDtcclxuICAgICAgICAgICAgZGF0YUNoYW5nZUhhc0JlZW5OZXh0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoIWRhdGFDaGFuZ2VIYXNCZWVuTmV4dGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB0aGlzLm1vZGVsID0gY2hhbmdlLnZhbHVlIGFzIENvbXBvbmVudE1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghY2hhbmdlLmNoYW5nZWRXaWRnZXRzICYmICFjaGFuZ2UuY2hhbmdlcyAmJiBjaGFuZ2UudmFsdWUpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IGNoYW5nZS52YWx1ZSBhcyBDb21wb25lbnRNb2RlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ2hhbmdlV2lkZ2V0cyhjaGFuZ2VkV2lkZ2V0czogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGxldCB3aWRnZXRzID0gdGhpcy5nZXRXaWRnZXRzKCk7XHJcbiAgICBjaGFuZ2VkV2lkZ2V0cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICBjb25zdCByZWZlcmVuY2UgPSB3aWRnZXRzLmdldChrZXkpO1xyXG5cclxuICAgICAgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFNtYXJ0R3JpZENvbXBvbmVudCkge1xyXG4gICAgICAgIHJlZmVyZW5jZS5yZWZyZXNoKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UpIHtcclxuICAgICAgICByZWZlcmVuY2UuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSkge1xyXG4gICAgICAgIHJlZmVyZW5jZS5sb2FkKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVmZXJlbmNlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGBQcm92aWRlZCByZWZlcmVuY2UgZm9yICR7a2V5fSBpcyB1bmRlZmluZWQuYCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZURlZXBseShtb2RlbDogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgbGV0IHNwbGl0dGVkS2V5cyA9IGtleS5zcGxpdCgnLicpO1xyXG5cclxuICAgIGxldCBkZWVwTW9kZWw6IGFueVtdID0gW21vZGVsXTtcclxuICAgIGxldCB0ZW1wTW9kZWw6IGFueTtcclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3BsaXR0ZWRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB0ZW1wTW9kZWwgPSBkZWVwTW9kZWxbaW5kZXhdO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdzdHJpbmcnICYmXHJcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ2Jvb2xlYW4nICYmXHJcbiAgICAgICAgdHlwZW9mIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSAhPT0gJ251bWJlcicgJiZcclxuICAgICAgICB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICBkZWVwTW9kZWwucHVzaCh0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaW5kZXggPT09IHNwbGl0dGVkS2V5cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgbGV0IG9sZFZhbHVlID0gdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dO1xyXG4gICAgICAgIC8vIGlmICh2YWx1ZSA9PT0gJycgJiYgKG9sZFZhbHVlID09PSBudWxsIHx8IG9sZFZhbHVlID09PSB1bmRlZmluZWQpIHRoZW4gZG9uJ3QgY2hhbmdlIHZhbHVlLlxyXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gJycgfHwgKG9sZFZhbHVlICE9PSBudWxsICYmIG9sZFZhbHVlICE9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgICB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRGF0YUNoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRWYWx1ZURlZXBseSh0aGlzLm1vZGVsLCBjaGFuZ2VLZXksIGNoYW5nZXNbY2hhbmdlS2V5XSk7XHJcblxyXG4gICAgaWYgKHRoaXMudXNlUXVlcnlMaXN0cykge1xyXG4gICAgICB0aGlzLmdldEFsbFNtYXJ0Rm9ybUNvbXBvbmVudHMoKT8uZm9yRWFjaCgoZm9ybSkgPT4gZm9ybS5yZWZyZXNoKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtV2lkZ2V0cy5mb3JFYWNoKChmb3JtQ29tcG9uZW50OiBTbWFydGZvcm1Db21wb25lbnQgfCB1bmRlZmluZWQsIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKGZvcm1Db21wb25lbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgZm9ybSByZWZlcmVuY2UgZm9yICR7a2V5fSBpcyB1bmRlZmluZWQuYCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvcm1Db21wb25lbnQucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGxheW91dEtleSA9IGNoYW5nZUtleS5zcGxpdCgnLicpWzFdO1xyXG4gICAgdGhpcy5tb2RlbCEubGF5b3V0c1tsYXlvdXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVDb21wb25lbnRMYXlvdXRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBsYXlvdXRLZXkgPSBjaGFuZ2VLZXkuc3BsaXQoJy4nKVsxXTtcclxuICAgIGxldCBjb21wb25lbnRMYXlvdXRzOiB7IFtrZXk6IHN0cmluZ106IE9iamVjdCB9ID0gdGhpcy5tb2RlbCEuY29tcG9uZW50TGF5b3V0cyBhcyB7XHJcbiAgICAgIFtrZXk6IHN0cmluZ106IE9iamVjdDtcclxuICAgIH07XHJcbiAgICBjb21wb25lbnRMYXlvdXRzW2xheW91dEtleV0gPSBjaGFuZ2VzW2NoYW5nZUtleV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVZhbHVlU2V0Q2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgdmFsdWVTZXRLZXkgPSBjaGFuZ2VLZXkuc3BsaXQoJy4nKVsxXTtcclxuICAgIHRoaXMubW9kZWwhLnZhbHVlU2V0cyFbdmFsdWVTZXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwhLmFjdGlvbnMgPSBjaGFuZ2VzW2NoYW5nZUtleV07XHJcbiAgICB0aGlzLmluaXRBY3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNvbnN0cmFpbnRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwhLmNvbnN0cmFpbnRzID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q29tcG9uZW50RmlsZVVwbG9hZGVyIHtcclxuICB1aUFjdGlvbkNvZGU6IHN0cmluZztcclxuICBtYXhTaXplTWI/OiBudW1iZXI7XHJcbiAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXTtcclxuICBpc011bHRpcGxlPzogYm9vbGVhbjtcclxuICBzbWFydENvbXBvbmVudDogU21hcnRDb21wb25lbnRBcGlDbGllbnQ8YW55PjtcclxufVxyXG4iXX0=
@@ -1,4 +1,4 @@
1
1
  export * from './default.service';
2
2
  import { DefaultService } from './default.service';
3
3
  export const APIS = [DefaultService];
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9hcGkvYXBpL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC5zZXJ2aWNlJztcbmltcG9ydCB7IERlZmF1bHRTZXJ2aWNlIH0gZnJvbSAnLi9kZWZhdWx0LnNlcnZpY2UnO1xuZXhwb3J0IGNvbnN0IEFQSVMgPSBbRGVmYXVsdFNlcnZpY2VdO1xuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9hcGkvYXBpL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVmYXVsdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGVmYXVsdFNlcnZpY2UgfSBmcm9tICcuL2RlZmF1bHQuc2VydmljZSc7XHJcbmV4cG9ydCBjb25zdCBBUElTID0gW0RlZmF1bHRTZXJ2aWNlXTtcclxuIl19
@@ -130,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
130
130
  }] }, { type: i2.Configuration, decorators: [{
131
131
  type: Optional
132
132
  }] }]; } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9hcGkvYXBpL2RlZmF1bHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFjLFdBQVcsRUFDc0IsV0FBVyxFQUN4RCxNQUFZLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUErQixZQUFZLENBQUM7QUFJL0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDOzs7O0FBT3JGLE1BQU0sT0FBTyxjQUFjO0lBT3ZCLFlBQXNCLFVBQXNCLEVBQWdDLFFBQXlCLEVBQWMsYUFBNEI7UUFBekgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxsQyxhQUFRLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsbUJBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUl2QyxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2hELFFBQVEsR0FBRyxRQUFRLENBQUMs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RSxNQUFNO2lCQUNuQjs7MEJBUWtELFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsU0FBUzs7MEJBQThCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm0gbGF5b3V0IGRlZmluaXRpb25cbiAqIENvbnRhaW5zIGZvcm0gbGF5b3V0IGRlZmluaXRpb24gb2JqZWN0cy5cbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG4vKiB0c2xpbnQ6ZGlzYWJsZTpuby11bnVzZWQtdmFyaWFibGUgbWVtYmVyLW9yZGVyaW5nICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSAgICAgICAgICAgICAgICAgICAgICBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLFxuICAgICAgICAgSHR0cFJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBQYXJhbWV0ZXJDb2RlYywgSHR0cENvbnRleHQgXG4gICAgICAgIH0gICAgICAgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ3VzdG9tSHR0cFBhcmFtZXRlckNvZGVjIH0gICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2VuY29kZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnO1xuXG5cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi92YXJpYWJsZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24nO1xuXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdFNlcnZpY2Uge1xuXG4gICAgcHJvdGVjdGVkIGJhc2VQYXRoID0gJ2h0dHA6Ly9sb2NhbGhvc3QnO1xuICAgIHB1YmxpYyBkZWZhdWx0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIHB1YmxpYyBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgICBwdWJsaWMgZW5jb2RlcjogSHR0cFBhcmFtZXRlckNvZGVjO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIEBPcHRpb25hbCgpQEluamVjdChCQVNFX1BBVEgpIGJhc2VQYXRoOiBzdHJpbmd8c3RyaW5nW10sIEBPcHRpb25hbCgpIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShiYXNlUGF0aCkgJiYgYmFzZVBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGJhc2VQYXRoID0gYmFzZVBhdGhbMF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgYmFzZVBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgYmFzZVBhdGggPSB0aGlzLmJhc2VQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRoID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmNvZGVyID0gdGhpcy5jb25maWd1cmF0aW9uLmVuY29kZXIgfHwgbmV3IEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYygpO1xuICAgIH1cblxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByaXZhdGUgYWRkVG9IdHRwUGFyYW1zKGh0dHBQYXJhbXM6IEh0dHBQYXJhbXMsIHZhbHVlOiBhbnksIGtleT86IHN0cmluZyk6IEh0dHBQYXJhbXMge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoaHR0cFBhcmFtcywgdmFsdWUsIGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGh0dHBQYXJhbXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoaHR0cFBhcmFtczogSHR0cFBhcmFtcywgdmFsdWU/OiBhbnksIGtleT86IHN0cmluZyk6IEh0dHBQYXJhbXMge1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGh0dHBQYXJhbXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAodmFsdWUgYXMgYW55W10pLmZvckVhY2goIGVsZW0gPT4gaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIGVsZW0sIGtleSkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuYXBwZW5kKGtleSwgKHZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKCkuc3Vic3RyKDAsIDEwKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcImtleSBtYXkgbm90IGJlIG51bGwgaWYgdmFsdWUgaXMgRGF0ZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5mb3JFYWNoKCBrID0+IGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtcywgdmFsdWVba10sIGtleSAhPSBudWxsID8gYCR7a2V5fS4ke2t9YCA6IGspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJrZXkgbWF5IG5vdCBiZSBudWxsIGlmIHZhbHVlIGlzIG5vdCBvYmplY3Qgb3IgYXJyYXlcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGh0dHBQYXJhbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGxhY2Vob2xkZXIgZm9yIGdlbmVyYXRpb25cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbm9wZVBvc3Qob2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiB1bmRlZmluZWQsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT47XG4gICAgcHVibGljIG5vcGVQb3N0KG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86IHVuZGVmaW5lZCwgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+O1xuICAgIHB1YmxpYyBub3BlUG9zdChvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG4gICAgcHVibGljIG5vcGVQb3N0KG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL25vcGVgO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PigncG9zdCcsIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxufVxuIl19
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9hcGkvYXBpL2RlZmF1bHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFjLFdBQVcsRUFDc0IsV0FBVyxFQUN4RCxNQUFZLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUErQixZQUFZLENBQUM7QUFJL0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDOzs7O0FBT3JGLE1BQU0sT0FBTyxjQUFjO0lBT3ZCLFlBQXNCLFVBQXNCLEVBQWdDLFFBQXlCLEVBQWMsYUFBNEI7UUFBekgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxsQyxhQUFRLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsbUJBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUl2QyxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2hELFFBQVEsR0FBRyxRQUFRLENBQUMs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RSxNQUFNO2lCQUNuQjs7MEJBUWtELFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsU0FBUzs7MEJBQThCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxyXG4gKiBDb250YWlucyBmb3JtIGxheW91dCBkZWZpbml0aW9uIG9iamVjdHMuXHJcbiAqXHJcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxyXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxyXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcclxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxyXG4gKi9cclxuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9ICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyxcclxuICAgICAgICAgSHR0cFJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBQYXJhbWV0ZXJDb2RlYywgSHR0cENvbnRleHQgXHJcbiAgICAgICAgfSAgICAgICBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9lbmNvZGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbi8vIEB0cy1pZ25vcmVcclxuaW1wb3J0IHsgQkFTRV9QQVRILCBDT0xMRUNUSU9OX0ZPUk1BVFMgfSAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL3ZhcmlhYmxlcyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdFNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCBiYXNlUGF0aCA9ICdodHRwOi8vbG9jYWxob3N0JztcclxuICAgIHB1YmxpYyBkZWZhdWx0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgcHVibGljIGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xyXG4gICAgcHVibGljIGVuY29kZXI6IEh0dHBQYXJhbWV0ZXJDb2RlYztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCwgQE9wdGlvbmFsKClASW5qZWN0KEJBU0VfUEFUSCkgYmFzZVBhdGg6IHN0cmluZ3xzdHJpbmdbXSwgQE9wdGlvbmFsKCkgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbikge1xyXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRoICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShiYXNlUGF0aCkgJiYgYmFzZVBhdGgubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYmFzZVBhdGggPSBiYXNlUGF0aFswXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBiYXNlUGF0aCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGJhc2VQYXRoID0gdGhpcy5iYXNlUGF0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGggPSBiYXNlUGF0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmNvZGVyID0gdGhpcy5jb25maWd1cmF0aW9uLmVuY29kZXIgfHwgbmV3IEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBwcml2YXRlIGFkZFRvSHR0cFBhcmFtcyhodHRwUGFyYW1zOiBIdHRwUGFyYW1zLCB2YWx1ZTogYW55LCBrZXk/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoaHR0cFBhcmFtcywgdmFsdWUsIGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXM6IEh0dHBQYXJhbXMsIHZhbHVlPzogYW55LCBrZXk/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAodmFsdWUgYXMgYW55W10pLmZvckVhY2goIGVsZW0gPT4gaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIGVsZW0sIGtleSkpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuYXBwZW5kKGtleSwgKHZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKCkuc3Vic3RyKDAsIDEwKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJrZXkgbWF5IG5vdCBiZSBudWxsIGlmIHZhbHVlIGlzIERhdGVcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaCggayA9PiBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtcywgdmFsdWVba10sIGtleSAhPSBudWxsID8gYCR7a2V5fS4ke2t9YCA6IGspKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwia2V5IG1heSBub3QgYmUgbnVsbCBpZiB2YWx1ZSBpcyBub3Qgb2JqZWN0IG9yIGFycmF5XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBsYWNlaG9sZGVyIGZvciBnZW5lcmF0aW9uXHJcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxyXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbm9wZVBvc3Qob2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiB1bmRlZmluZWQsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBwdWJsaWMgbm9wZVBvc3Qob2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj47XHJcbiAgICBwdWJsaWMgbm9wZVBvc3Qob2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86IHVuZGVmaW5lZCwgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xyXG4gICAgcHVibGljIG5vcGVQb3N0KG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XHJcblxyXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBsb2NhbFZhckh0dHBDb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcclxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoJ3RleHQnKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnanNvbic7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9ub3BlYDtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PigncG9zdCcsIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXHJcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
37
37
  }] }, { type: i1.HttpClient, decorators: [{
38
38
  type: Optional
39
39
  }] }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL2FwaS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVVoRCxNQUFNLE9BQU8sU0FBUztJQVFsQixZQUFxQyxZQUF1QixFQUNuQyxJQUFnQjtRQUNyQyxJQUFJLFlBQVksRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztTQUN2RjtRQUNELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRDtnQkFDL0UsMERBQTBELENBQUMsQ0FBQztTQUMvRDtJQUNMLENBQUM7SUFoQk0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBeUM7UUFDM0QsT0FBTztZQUNILFFBQVEsRUFBRSxTQUFTO1lBQ25CLFNBQVMsRUFBRSxDQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsQ0FBRTtTQUM5RSxDQUFDO0lBQ04sQ0FBQzs7c0dBTlEsU0FBUyxrQkFRaUMsU0FBUzt1R0FSbkQsU0FBUzt1R0FBVCxTQUFTLGFBRlQsRUFBRSxZQUhDLEVBQUU7MkZBS0wsU0FBUztrQkFOckIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQU8sRUFBRTtvQkFDaEIsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBTyxFQUFFO29CQUNoQixTQUFTLEVBQUUsRUFBRTtpQkFDZDswREFTc0QsU0FBUzswQkFBOUMsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgU2tpcFNlbGYsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogICAgICBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogICAgICBbXSxcbiAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBBcGlNb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWd1cmF0aW9uRmFjdG9yeTogKCkgPT4gQ29uZmlndXJhdGlvbik6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXBpTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogQXBpTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbIHsgcHJvdmlkZTogQ29uZmlndXJhdGlvbiwgdXNlRmFjdG9yeTogY29uZmlndXJhdGlvbkZhY3RvcnkgfSBdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHBhcmVudE1vZHVsZTogQXBpTW9kdWxlLFxuICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgICAgIGlmIChwYXJlbnRNb2R1bGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXBpTW9kdWxlIGlzIGFscmVhZHkgbG9hZGVkLiBJbXBvcnQgaW4geW91ciBiYXNlIEFwcE1vZHVsZSBvbmx5LicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaHR0cCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBpbXBvcnQgdGhlIEh0dHBDbGllbnRNb2R1bGUgaW4geW91ciBBcHBNb2R1bGUhIFxcbicgK1xuICAgICAgICAgICAgJ1NlZSBhbHNvIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzIwNTc1Jyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL2FwaS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVVoRCxNQUFNLE9BQU8sU0FBUztJQVFsQixZQUFxQyxZQUF1QixFQUNuQyxJQUFnQjtRQUNyQyxJQUFJLFlBQVksRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztTQUN2RjtRQUNELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRDtnQkFDL0UsMERBQTBELENBQUMsQ0FBQztTQUMvRDtJQUNMLENBQUM7SUFoQk0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBeUM7UUFDM0QsT0FBTztZQUNILFFBQVEsRUFBRSxTQUFTO1lBQ25CLFNBQVMsRUFBRSxDQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsQ0FBRTtTQUM5RSxDQUFDO0lBQ04sQ0FBQzs7c0dBTlEsU0FBUyxrQkFRaUMsU0FBUzt1R0FSbkQsU0FBUzt1R0FBVCxTQUFTLGFBRlQsRUFBRSxZQUhDLEVBQUU7MkZBS0wsU0FBUztrQkFOckIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQU8sRUFBRTtvQkFDaEIsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBTyxFQUFFO29CQUNoQixTQUFTLEVBQUUsRUFBRTtpQkFDZDswREFTc0QsU0FBUzswQkFBOUMsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgU2tpcFNlbGYsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogICAgICBbXSxcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGV4cG9ydHM6ICAgICAgW10sXHJcbiAgcHJvdmlkZXJzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBpTW9kdWxlIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChjb25maWd1cmF0aW9uRmFjdG9yeTogKCkgPT4gQ29uZmlndXJhdGlvbik6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXBpTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IEFwaU1vZHVsZSxcclxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbIHsgcHJvdmlkZTogQ29uZmlndXJhdGlvbiwgdXNlRmFjdG9yeTogY29uZmlndXJhdGlvbkZhY3RvcnkgfSBdXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvciggQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcGFyZW50TW9kdWxlOiBBcGlNb2R1bGUsXHJcbiAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgaHR0cDogSHR0cENsaWVudCkge1xyXG4gICAgICAgIGlmIChwYXJlbnRNb2R1bGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcGlNb2R1bGUgaXMgYWxyZWFkeSBsb2FkZWQuIEltcG9ydCBpbiB5b3VyIGJhc2UgQXBwTW9kdWxlIG9ubHkuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaHR0cCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBuZWVkIHRvIGltcG9ydCB0aGUgSHR0cENsaWVudE1vZHVsZSBpbiB5b3VyIEFwcE1vZHVsZSEgXFxuJyArXHJcbiAgICAgICAgICAgICdTZWUgYWxzbyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yMDU3NScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -88,4 +88,4 @@ export class Configuration {
88
88
  return encodeURIComponent(String(value));
89
89
  }
90
90
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0NBLE1BQU0sT0FBTyxhQUFhO0lBZ0N0QixZQUFZLDBCQUFtRCxFQUFFO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsdUJBQXVCLENBQUMsZUFBZSxDQUFDO1FBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDO1FBQy9DLElBQUksdUJBQXVCLENBQUMsV0FBVyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxDQUFDO1NBQzFEO2FBQ0k7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSx1QkFBdUIsQ0FBQyxXQUFXLEVBQUU7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUM7U0FDMUQ7YUFDSTtZQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVCQUF1QixDQUFFLFlBQXNCO1FBQ2xELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFFRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3BCLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtCQUFrQixDQUFDLE9BQWlCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3BCLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFVBQVUsQ0FBQyxJQUFZO1FBQzFCLE1BQU0sUUFBUSxHQUFXLElBQUksTUFBTSxDQUFDLCtEQUErRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFHLE9BQU8sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLDZCQUE2QixDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEdBQVc7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVU7WUFDOUIsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNULENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDaEIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQVk7UUFDbkMsbUVBQW1FO1FBQ25FLGtGQUFrRjtRQUNsRixrREFBa0Q7UUFDbEQsdURBQXVEO1FBQ3ZELHNFQUFzRTtRQUN0RSxFQUFFO1FBQ0YsMkZBQTJGO1FBRTNGLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxLQUFLLFlBQVksSUFBSTtZQUN6RSxDQUFDLENBQUUsS0FBSyxDQUFDLEtBQWMsQ0FBQyxXQUFXLEVBQUU7WUFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFbEIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1ldGVyQ29kZWMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBQYXJhbSB9IGZyb20gJy4vcGFyYW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzIHtcbiAgICAvKipcbiAgICAgKiAgQGRlcHJlY2F0ZWQgU2luY2UgNS4wLiBVc2UgY3JlZGVudGlhbHMgaW5zdGVhZFxuICAgICAqL1xuICAgIGFwaUtleXM/OiB7WyBrZXk6IHN0cmluZyBdOiBzdHJpbmd9O1xuICAgIHVzZXJuYW1lPzogc3RyaW5nO1xuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqICBAZGVwcmVjYXRlZCBTaW5jZSA1LjAuIFVzZSBjcmVkZW50aWFscyBpbnN0ZWFkXG4gICAgICovXG4gICAgYWNjZXNzVG9rZW4/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcbiAgICBiYXNlUGF0aD86IHN0cmluZztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRha2VzIGNhcmUgb2YgZW5jb2RpbmcgcXVlcnktIGFuZCBmb3JtLXBhcmFtZXRlcnMuXG4gICAgICovXG4gICAgZW5jb2Rlcj86IEh0dHBQYXJhbWV0ZXJDb2RlYztcbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBtZXRob2QgZm9yIGVuY29kaW5nIHBhdGggcGFyYW1ldGVycyBpbiB2YXJpb3VzXG4gICAgICogPGEgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjEuMC5tZCNzdHlsZS12YWx1ZXNcIj5zdHlsZXM8L2E+LlxuICAgICAqIDxwPlxuICAgICAqIFNlZSB7QGxpbmsgUkVBRE1FLm1kfSBmb3IgbW9yZSBkZXRhaWxzXG4gICAgICogPC9wPlxuICAgICAqL1xuICAgIGVuY29kZVBhcmFtPzogKHBhcmFtOiBQYXJhbSkgPT4gc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgaW4gdGhlIHNlY3VyaXR5U2NoZW1lcyBzZWN0aW9uIG9mIHRoZSBPcGVuQVBJXG4gICAgICogZG9jdW1lbnQuIFRoZXkgc2hvdWxkIG1hcCB0byB0aGUgdmFsdWUgdXNlZCBmb3IgYXV0aGVudGljYXRpb25cbiAgICAgKiBtaW51cyBhbnkgc3RhbmRhcmQgcHJlZml4ZXMgc3VjaCBhcyAnQmFzaWMnIG9yICdCZWFyZXInLlxuICAgICAqL1xuICAgIGNyZWRlbnRpYWxzPzoge1sga2V5OiBzdHJpbmcgXTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IHVuZGVmaW5lZCl9O1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbiB7XG4gICAgLyoqXG4gICAgICogIEBkZXByZWNhdGVkIFNpbmNlIDUuMC4gVXNlIGNyZWRlbnRpYWxzIGluc3RlYWRcbiAgICAgKi9cbiAgICBhcGlLZXlzPzoge1sga2V5OiBzdHJpbmcgXTogc3RyaW5nfTtcbiAgICB1c2VybmFtZT86IHN0cmluZztcbiAgICBwYXNzd29yZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAgQGRlcHJlY2F0ZWQgU2luY2UgNS4wLiBVc2UgY3JlZGVudGlhbHMgaW5zdGVhZFxuICAgICAqL1xuICAgIGFjY2Vzc1Rva2VuPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XG4gICAgYmFzZVBhdGg/OiBzdHJpbmc7XG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUYWtlcyBjYXJlIG9mIGVuY29kaW5nIHF1ZXJ5LSBhbmQgZm9ybS1wYXJhbWV0ZXJzLlxuICAgICAqL1xuICAgIGVuY29kZXI/OiBIdHRwUGFyYW1ldGVyQ29kZWM7XG4gICAgLyoqXG4gICAgICogRW5jb2Rpbmcgb2YgdmFyaW91cyBwYXRoIHBhcmFtZXRlclxuICAgICAqIDxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4xLjAubWQjc3R5bGUtdmFsdWVzXCI+c3R5bGVzPC9hPi5cbiAgICAgKiA8cD5cbiAgICAgKiBTZWUge0BsaW5rIFJFQURNRS5tZH0gZm9yIG1vcmUgZGV0YWlsc1xuICAgICAqIDwvcD5cbiAgICAgKi9cbiAgICBlbmNvZGVQYXJhbTogKHBhcmFtOiBQYXJhbSkgPT4gc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgaW4gdGhlIHNlY3VyaXR5U2NoZW1lcyBzZWN0aW9uIG9mIHRoZSBPcGVuQVBJXG4gICAgICogZG9jdW1lbnQuIFRoZXkgc2hvdWxkIG1hcCB0byB0aGUgdmFsdWUgdXNlZCBmb3IgYXV0aGVudGljYXRpb25cbiAgICAgKiBtaW51cyBhbnkgc3RhbmRhcmQgcHJlZml4ZXMgc3VjaCBhcyAnQmFzaWMnIG9yICdCZWFyZXInLlxuICAgICAqL1xuICAgIGNyZWRlbnRpYWxzOiB7WyBrZXk6IHN0cmluZyBdOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkKX07XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uUGFyYW1ldGVyczogQ29uZmlndXJhdGlvblBhcmFtZXRlcnMgPSB7fSkge1xuICAgICAgICB0aGlzLmFwaUtleXMgPSBjb25maWd1cmF0aW9uUGFyYW1ldGVycy5hcGlLZXlzO1xuICAgICAgICB0aGlzLnVzZXJuYW1lID0gY29uZmlndXJhdGlvblBhcmFtZXRlcnMudXNlcm5hbWU7XG4gICAgICAgIHRoaXMucGFzc3dvcmQgPSBjb25maWd1cmF0aW9uUGFyYW1ldGVycy5wYXNzd29yZDtcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzLmFjY2Vzc1Rva2VuO1xuICAgICAgICB0aGlzLmJhc2VQYXRoID0gY29uZmlndXJhdGlvblBhcmFtZXRlcnMuYmFzZVBhdGg7XG4gICAgICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID0gY29uZmlndXJhdGlvblBhcmFtZXRlcnMud2l0aENyZWRlbnRpYWxzO1xuICAgICAgICB0aGlzLmVuY29kZXIgPSBjb25maWd1cmF0aW9uUGFyYW1ldGVycy5lbmNvZGVyO1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvblBhcmFtZXRlcnMuZW5jb2RlUGFyYW0pIHtcbiAgICAgICAgICAgIHRoaXMuZW5jb2RlUGFyYW0gPSBjb25maWd1cmF0aW9uUGFyYW1ldGVycy5lbmNvZGVQYXJhbTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW5jb2RlUGFyYW0gPSBwYXJhbSA9PiB0aGlzLmRlZmF1bHRFbmNvZGVQYXJhbShwYXJhbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzLmNyZWRlbnRpYWxzKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWRlbnRpYWxzID0gY29uZmlndXJhdGlvblBhcmFtZXRlcnMuY3JlZGVudGlhbHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNyZWRlbnRpYWxzID0ge307XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgdGhlIGNvcnJlY3QgY29udGVudC10eXBlIHRvIHVzZSBmb3IgYSByZXF1ZXN0LlxuICAgICAqIFVzZXMge0BsaW5rIENvbmZpZ3VyYXRpb24jaXNKc29uTWltZX0gdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGNvbnRlbnQtdHlwZS5cbiAgICAgKiBJZiBubyBjb250ZW50IHR5cGUgaXMgZm91bmQgcmV0dXJuIHRoZSBmaXJzdCBmb3VuZCB0eXBlIGlmIHRoZSBjb250ZW50VHlwZXMgaXMgbm90IGVtcHR5XG4gICAgICogQHBhcmFtIGNvbnRlbnRUeXBlcyAtIHRoZSBhcnJheSBvZiBjb250ZW50IHR5cGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uXG4gICAgICogQHJldHVybnMgdGhlIHNlbGVjdGVkIGNvbnRlbnQtdHlwZSBvciA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IGlmIG5vIHNlbGVjdGlvbiBjb3VsZCBiZSBtYWRlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RIZWFkZXJDb250ZW50VHlwZSAoY29udGVudFR5cGVzOiBzdHJpbmdbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChjb250ZW50VHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRlbnRUeXBlcy5maW5kKCh4OiBzdHJpbmcpID0+IHRoaXMuaXNKc29uTWltZSh4KSk7XG4gICAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50VHlwZXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IHRoZSBjb3JyZWN0IGFjY2VwdCBjb250ZW50LXR5cGUgdG8gdXNlIGZvciBhIHJlcXVlc3QuXG4gICAgICogVXNlcyB7QGxpbmsgQ29uZmlndXJhdGlvbiNpc0pzb25NaW1lfSB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgYWNjZXB0IGNvbnRlbnQtdHlwZS5cbiAgICAgKiBJZiBubyBjb250ZW50IHR5cGUgaXMgZm91bmQgcmV0dXJuIHRoZSBmaXJzdCBmb3VuZCB0eXBlIGlmIHRoZSBjb250ZW50VHlwZXMgaXMgbm90IGVtcHR5XG4gICAgICogQHBhcmFtIGFjY2VwdHMgLSB0aGUgYXJyYXkgb2YgY29udGVudCB0eXBlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbi5cbiAgICAgKiBAcmV0dXJucyB0aGUgc2VsZWN0ZWQgY29udGVudC10eXBlIG9yIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gaWYgbm8gc2VsZWN0aW9uIGNvdWxkIGJlIG1hZGUuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEhlYWRlckFjY2VwdChhY2NlcHRzOiBzdHJpbmdbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChhY2NlcHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBhY2NlcHRzLmZpbmQoKHg6IHN0cmluZykgPT4gdGhpcy5pc0pzb25NaW1lKHgpKTtcbiAgICAgICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGFjY2VwdHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGdpdmVuIE1JTUUgaXMgYSBKU09OIE1JTUUuXG4gICAgICogSlNPTiBNSU1FIGV4YW1wbGVzOlxuICAgICAqICAgYXBwbGljYXRpb24vanNvblxuICAgICAqICAgYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEY4XG4gICAgICogICBBUFBMSUNBVElPTi9KU09OXG4gICAgICogICBhcHBsaWNhdGlvbi92bmQuY29tcGFueStqc29uXG4gICAgICogQHBhcmFtIG1pbWUgLSBNSU1FIChNdWx0aXB1cnBvc2UgSW50ZXJuZXQgTWFpbCBFeHRlbnNpb25zKVxuICAgICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgZ2l2ZW4gTUlNRSBpcyBKU09OLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGlzSnNvbk1pbWUobWltZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGpzb25NaW1lOiBSZWdFeHAgPSBuZXcgUmVnRXhwKCdeKGFwcGxpY2F0aW9uXFwvanNvbnxbXjsvIFxcdF0rXFwvW147LyBcXHRdK1srXWpzb24pWyBcXHRdKig7LiopPyQnLCAnaScpO1xuICAgICAgICByZXR1cm4gbWltZSAhPT0gbnVsbCAmJiAoanNvbk1pbWUudGVzdChtaW1lKSB8fCBtaW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhcHBsaWNhdGlvbi9qc29uLXBhdGNoK2pzb24nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9va3VwQ3JlZGVudGlhbChrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jcmVkZW50aWFsc1trZXldO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHZhbHVlKClcbiAgICAgICAgICAgIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWZhdWx0RW5jb2RlUGFyYW0ocGFyYW06IFBhcmFtKTogc3RyaW5nIHtcbiAgICAgICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBleGlzdHMgYXMgZmFsbGJhY2sgZm9yIG1pc3NpbmcgY29uZmlndXJhdGlvblxuICAgICAgICAvLyBhbmQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHRvIG9sZGVyIHR5cGVzY3JpcHQtYW5ndWxhciBnZW5lcmF0b3IgdmVyc2lvbnMuXG4gICAgICAgIC8vIEl0IG9ubHkgd29ya3MgZm9yIHRoZSAnc2ltcGxlJyBwYXJhbWV0ZXIgc3R5bGUuXG4gICAgICAgIC8vIERhdGUtaGFuZGxpbmcgb25seSB3b3JrcyBmb3IgdGhlICdkYXRlLXRpbWUnIGZvcm1hdC5cbiAgICAgICAgLy8gQWxsIG90aGVyIHN0eWxlcyBhbmQgRGF0ZS1mb3JtYXRzIGFyZSBwcm9iYWJseSBoYW5kbGVkIGluY29ycmVjdGx5LlxuICAgICAgICAvL1xuICAgICAgICAvLyBCdXQ6IGlmIHRoYXQncyBhbGwgeW91IG5lZWQgKGkuZS46IHRoZSBtb3N0IGNvbW1vbiB1c2UtY2FzZSk6IG5vIG5lZWQgZm9yIGN1c3RvbWl6YXRpb24hXG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbS5kYXRhRm9ybWF0ID09PSAnZGF0ZS10aW1lJyAmJiBwYXJhbS52YWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgID8gKHBhcmFtLnZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICAgIDogcGFyYW0udmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKTtcbiAgICB9XG59XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0NBLE1BQU0sT0FBTyxhQUFhO0lBZ0N0QixZQUFZLDBCQUFtRCxFQUFFO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsdUJBQXVCLENBQUMsZUFBZSxDQUFDO1FBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDO1FBQy9DLElBQUksdUJBQXVCLENBQUMsV0FBVyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxDQUFDO1NBQzFEO2FBQ0k7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSx1QkFBdUIsQ0FBQyxXQUFXLEVBQUU7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUM7U0FDMUQ7YUFDSTtZQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVCQUF1QixDQUFFLFlBQXNCO1FBQ2xELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFFRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3BCLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtCQUFrQixDQUFDLE9BQWlCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3BCLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFVBQVUsQ0FBQyxJQUFZO1FBQzFCLE1BQU0sUUFBUSxHQUFXLElBQUksTUFBTSxDQUFDLCtEQUErRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFHLE9BQU8sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLDZCQUE2QixDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEdBQVc7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVU7WUFDOUIsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNULENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDaEIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQVk7UUFDbkMsbUVBQW1FO1FBQ25FLGtGQUFrRjtRQUNsRixrREFBa0Q7UUFDbEQsdURBQXVEO1FBQ3ZELHNFQUFzRTtRQUN0RSxFQUFFO1FBQ0YsMkZBQTJGO1FBRTNGLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxLQUFLLFlBQVksSUFBSTtZQUN6RSxDQUFDLENBQUUsS0FBSyxDQUFDLEtBQWMsQ0FBQyxXQUFXLEVBQUU7WUFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFbEIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1ldGVyQ29kZWMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFBhcmFtIH0gZnJvbSAnLi9wYXJhbSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzIHtcclxuICAgIC8qKlxyXG4gICAgICogIEBkZXByZWNhdGVkIFNpbmNlIDUuMC4gVXNlIGNyZWRlbnRpYWxzIGluc3RlYWRcclxuICAgICAqL1xyXG4gICAgYXBpS2V5cz86IHtbIGtleTogc3RyaW5nIF06IHN0cmluZ307XHJcbiAgICB1c2VybmFtZT86IHN0cmluZztcclxuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiAgQGRlcHJlY2F0ZWQgU2luY2UgNS4wLiBVc2UgY3JlZGVudGlhbHMgaW5zdGVhZFxyXG4gICAgICovXHJcbiAgICBhY2Nlc3NUb2tlbj86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG4gICAgYmFzZVBhdGg/OiBzdHJpbmc7XHJcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUYWtlcyBjYXJlIG9mIGVuY29kaW5nIHF1ZXJ5LSBhbmQgZm9ybS1wYXJhbWV0ZXJzLlxyXG4gICAgICovXHJcbiAgICBlbmNvZGVyPzogSHR0cFBhcmFtZXRlckNvZGVjO1xyXG4gICAgLyoqXHJcbiAgICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBtZXRob2QgZm9yIGVuY29kaW5nIHBhdGggcGFyYW1ldGVycyBpbiB2YXJpb3VzXHJcbiAgICAgKiA8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kI3N0eWxlLXZhbHVlc1wiPnN0eWxlczwvYT4uXHJcbiAgICAgKiA8cD5cclxuICAgICAqIFNlZSB7QGxpbmsgUkVBRE1FLm1kfSBmb3IgbW9yZSBkZXRhaWxzXHJcbiAgICAgKiA8L3A+XHJcbiAgICAgKi9cclxuICAgIGVuY29kZVBhcmFtPzogKHBhcmFtOiBQYXJhbSkgPT4gc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIGluIHRoZSBzZWN1cml0eVNjaGVtZXMgc2VjdGlvbiBvZiB0aGUgT3BlbkFQSVxyXG4gICAgICogZG9jdW1lbnQuIFRoZXkgc2hvdWxkIG1hcCB0byB0aGUgdmFsdWUgdXNlZCBmb3IgYXV0aGVudGljYXRpb25cclxuICAgICAqIG1pbnVzIGFueSBzdGFuZGFyZCBwcmVmaXhlcyBzdWNoIGFzICdCYXNpYycgb3IgJ0JlYXJlcicuXHJcbiAgICAgKi9cclxuICAgIGNyZWRlbnRpYWxzPzoge1sga2V5OiBzdHJpbmcgXTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IHVuZGVmaW5lZCl9O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbiB7XHJcbiAgICAvKipcclxuICAgICAqICBAZGVwcmVjYXRlZCBTaW5jZSA1LjAuIFVzZSBjcmVkZW50aWFscyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIGFwaUtleXM/OiB7WyBrZXk6IHN0cmluZyBdOiBzdHJpbmd9O1xyXG4gICAgdXNlcm5hbWU/OiBzdHJpbmc7XHJcbiAgICBwYXNzd29yZD86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogIEBkZXByZWNhdGVkIFNpbmNlIDUuMC4gVXNlIGNyZWRlbnRpYWxzIGluc3RlYWRcclxuICAgICAqL1xyXG4gICAgYWNjZXNzVG9rZW4/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICAgIGJhc2VQYXRoPzogc3RyaW5nO1xyXG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogVGFrZXMgY2FyZSBvZiBlbmNvZGluZyBxdWVyeS0gYW5kIGZvcm0tcGFyYW1ldGVycy5cclxuICAgICAqL1xyXG4gICAgZW5jb2Rlcj86IEh0dHBQYXJhbWV0ZXJDb2RlYztcclxuICAgIC8qKlxyXG4gICAgICogRW5jb2Rpbmcgb2YgdmFyaW91cyBwYXRoIHBhcmFtZXRlclxyXG4gICAgICogPGEgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjEuMC5tZCNzdHlsZS12YWx1ZXNcIj5zdHlsZXM8L2E+LlxyXG4gICAgICogPHA+XHJcbiAgICAgKiBTZWUge0BsaW5rIFJFQURNRS5tZH0gZm9yIG1vcmUgZGV0YWlsc1xyXG4gICAgICogPC9wPlxyXG4gICAgICovXHJcbiAgICBlbmNvZGVQYXJhbTogKHBhcmFtOiBQYXJhbSkgPT4gc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIGluIHRoZSBzZWN1cml0eVNjaGVtZXMgc2VjdGlvbiBvZiB0aGUgT3BlbkFQSVxyXG4gICAgICogZG9jdW1lbnQuIFRoZXkgc2hvdWxkIG1hcCB0byB0aGUgdmFsdWUgdXNlZCBmb3IgYXV0aGVudGljYXRpb25cclxuICAgICAqIG1pbnVzIGFueSBzdGFuZGFyZCBwcmVmaXhlcyBzdWNoIGFzICdCYXNpYycgb3IgJ0JlYXJlcicuXHJcbiAgICAgKi9cclxuICAgIGNyZWRlbnRpYWxzOiB7WyBrZXk6IHN0cmluZyBdOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkKX07XHJcblxyXG4gICAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvblBhcmFtZXRlcnM6IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzID0ge30pIHtcclxuICAgICAgICB0aGlzLmFwaUtleXMgPSBjb25maWd1cmF0aW9uUGFyYW1ldGVycy5hcGlLZXlzO1xyXG4gICAgICAgIHRoaXMudXNlcm5hbWUgPSBjb25maWd1cmF0aW9uUGFyYW1ldGVycy51c2VybmFtZTtcclxuICAgICAgICB0aGlzLnBhc3N3b3JkID0gY29uZmlndXJhdGlvblBhcmFtZXRlcnMucGFzc3dvcmQ7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzLmFjY2Vzc1Rva2VuO1xyXG4gICAgICAgIHRoaXMuYmFzZVBhdGggPSBjb25maWd1cmF0aW9uUGFyYW1ldGVycy5iYXNlUGF0aDtcclxuICAgICAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9IGNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzLndpdGhDcmVkZW50aWFscztcclxuICAgICAgICB0aGlzLmVuY29kZXIgPSBjb25maWd1cmF0aW9uUGFyYW1ldGVycy5lbmNvZGVyO1xyXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uUGFyYW1ldGVycy5lbmNvZGVQYXJhbSkge1xyXG4gICAgICAgICAgICB0aGlzLmVuY29kZVBhcmFtID0gY29uZmlndXJhdGlvblBhcmFtZXRlcnMuZW5jb2RlUGFyYW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmVuY29kZVBhcmFtID0gcGFyYW0gPT4gdGhpcy5kZWZhdWx0RW5jb2RlUGFyYW0ocGFyYW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29uZmlndXJhdGlvblBhcmFtZXRlcnMuY3JlZGVudGlhbHMpIHtcclxuICAgICAgICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzLmNyZWRlbnRpYWxzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jcmVkZW50aWFscyA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbGVjdCB0aGUgY29ycmVjdCBjb250ZW50LXR5cGUgdG8gdXNlIGZvciBhIHJlcXVlc3QuXHJcbiAgICAgKiBVc2VzIHtAbGluayBDb25maWd1cmF0aW9uI2lzSnNvbk1pbWV9IHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBjb250ZW50LXR5cGUuXHJcbiAgICAgKiBJZiBubyBjb250ZW50IHR5cGUgaXMgZm91bmQgcmV0dXJuIHRoZSBmaXJzdCBmb3VuZCB0eXBlIGlmIHRoZSBjb250ZW50VHlwZXMgaXMgbm90IGVtcHR5XHJcbiAgICAgKiBAcGFyYW0gY29udGVudFR5cGVzIC0gdGhlIGFycmF5IG9mIGNvbnRlbnQgdHlwZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb25cclxuICAgICAqIEByZXR1cm5zIHRoZSBzZWxlY3RlZCBjb250ZW50LXR5cGUgb3IgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBpZiBubyBzZWxlY3Rpb24gY291bGQgYmUgbWFkZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdEhlYWRlckNvbnRlbnRUeXBlIChjb250ZW50VHlwZXM6IHN0cmluZ1tdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoY29udGVudFR5cGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRlbnRUeXBlcy5maW5kKCh4OiBzdHJpbmcpID0+IHRoaXMuaXNKc29uTWltZSh4KSk7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFR5cGVzWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHlwZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbGVjdCB0aGUgY29ycmVjdCBhY2NlcHQgY29udGVudC10eXBlIHRvIHVzZSBmb3IgYSByZXF1ZXN0LlxyXG4gICAgICogVXNlcyB7QGxpbmsgQ29uZmlndXJhdGlvbiNpc0pzb25NaW1lfSB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgYWNjZXB0IGNvbnRlbnQtdHlwZS5cclxuICAgICAqIElmIG5vIGNvbnRlbnQgdHlwZSBpcyBmb3VuZCByZXR1cm4gdGhlIGZpcnN0IGZvdW5kIHR5cGUgaWYgdGhlIGNvbnRlbnRUeXBlcyBpcyBub3QgZW1wdHlcclxuICAgICAqIEBwYXJhbSBhY2NlcHRzIC0gdGhlIGFycmF5IG9mIGNvbnRlbnQgdHlwZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJucyB0aGUgc2VsZWN0ZWQgY29udGVudC10eXBlIG9yIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gaWYgbm8gc2VsZWN0aW9uIGNvdWxkIGJlIG1hZGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZWxlY3RIZWFkZXJBY2NlcHQoYWNjZXB0czogc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmIChhY2NlcHRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdHlwZSA9IGFjY2VwdHMuZmluZCgoeDogc3RyaW5nKSA9PiB0aGlzLmlzSnNvbk1pbWUoeCkpO1xyXG4gICAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFjY2VwdHNbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgdGhlIGdpdmVuIE1JTUUgaXMgYSBKU09OIE1JTUUuXHJcbiAgICAgKiBKU09OIE1JTUUgZXhhbXBsZXM6XHJcbiAgICAgKiAgIGFwcGxpY2F0aW9uL2pzb25cclxuICAgICAqICAgYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEY4XHJcbiAgICAgKiAgIEFQUExJQ0FUSU9OL0pTT05cclxuICAgICAqICAgYXBwbGljYXRpb24vdm5kLmNvbXBhbnkranNvblxyXG4gICAgICogQHBhcmFtIG1pbWUgLSBNSU1FIChNdWx0aXB1cnBvc2UgSW50ZXJuZXQgTWFpbCBFeHRlbnNpb25zKVxyXG4gICAgICogQHJldHVybiBUcnVlIGlmIHRoZSBnaXZlbiBNSU1FIGlzIEpTT04sIGZhbHNlIG90aGVyd2lzZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzSnNvbk1pbWUobWltZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QganNvbk1pbWU6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ14oYXBwbGljYXRpb25cXC9qc29ufFteOy8gXFx0XStcXC9bXjsvIFxcdF0rWytdanNvbilbIFxcdF0qKDsuKik/JCcsICdpJyk7XHJcbiAgICAgICAgcmV0dXJuIG1pbWUgIT09IG51bGwgJiYgKGpzb25NaW1lLnRlc3QobWltZSkgfHwgbWltZS50b0xvd2VyQ2FzZSgpID09PSAnYXBwbGljYXRpb24vanNvbi1wYXRjaCtqc29uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvb2t1cENyZWRlbnRpYWwoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jcmVkZW50aWFsc1trZXldO1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcclxuICAgICAgICAgICAgPyB2YWx1ZSgpXHJcbiAgICAgICAgICAgIDogdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZWZhdWx0RW5jb2RlUGFyYW0ocGFyYW06IFBhcmFtKTogc3RyaW5nIHtcclxuICAgICAgICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIGV4aXN0cyBhcyBmYWxsYmFjayBmb3IgbWlzc2luZyBjb25maWd1cmF0aW9uXHJcbiAgICAgICAgLy8gYW5kIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB0byBvbGRlciB0eXBlc2NyaXB0LWFuZ3VsYXIgZ2VuZXJhdG9yIHZlcnNpb25zLlxyXG4gICAgICAgIC8vIEl0IG9ubHkgd29ya3MgZm9yIHRoZSAnc2ltcGxlJyBwYXJhbWV0ZXIgc3R5bGUuXHJcbiAgICAgICAgLy8gRGF0ZS1oYW5kbGluZyBvbmx5IHdvcmtzIGZvciB0aGUgJ2RhdGUtdGltZScgZm9ybWF0LlxyXG4gICAgICAgIC8vIEFsbCBvdGhlciBzdHlsZXMgYW5kIERhdGUtZm9ybWF0cyBhcmUgcHJvYmFibHkgaGFuZGxlZCBpbmNvcnJlY3RseS5cclxuICAgICAgICAvL1xyXG4gICAgICAgIC8vIEJ1dDogaWYgdGhhdCdzIGFsbCB5b3UgbmVlZCAoaS5lLjogdGhlIG1vc3QgY29tbW9uIHVzZS1jYXNlKTogbm8gbmVlZCBmb3IgY3VzdG9taXphdGlvbiFcclxuXHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbS5kYXRhRm9ybWF0ID09PSAnZGF0ZS10aW1lJyAmJiBwYXJhbS52YWx1ZSBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICAgICAgPyAocGFyYW0udmFsdWUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKVxyXG4gICAgICAgICAgICA6IHBhcmFtLnZhbHVlO1xyXG5cclxuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2YWx1ZSkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -16,4 +16,4 @@ export class CustomHttpParameterCodec {
16
16
  return decodeURIComponent(v);
17
17
  }
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL2VuY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUNqQyxTQUFTLENBQUMsQ0FBUztRQUNmLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFdBQVcsQ0FBQyxDQUFTO1FBQ2pCLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFNBQVMsQ0FBQyxDQUFTO1FBQ2YsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsV0FBVyxDQUFDLENBQVM7UUFDakIsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1ldGVyQ29kZWMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbi8qKlxuICogQ3VzdG9tIEh0dHBQYXJhbWV0ZXJDb2RlY1xuICogV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTgyNjFcbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYyBpbXBsZW1lbnRzIEh0dHBQYXJhbWV0ZXJDb2RlYyB7XG4gICAgZW5jb2RlS2V5KGs6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoayk7XG4gICAgfVxuICAgIGVuY29kZVZhbHVlKHY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodik7XG4gICAgfVxuICAgIGRlY29kZUtleShrOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGspO1xuICAgIH1cbiAgICBkZWNvZGVWYWx1ZSh2OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHYpO1xuICAgIH1cbn1cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL2VuY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUNqQyxTQUFTLENBQUMsQ0FBUztRQUNmLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFdBQVcsQ0FBQyxDQUFTO1FBQ2pCLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELFNBQVMsQ0FBQyxDQUFTO1FBQ2YsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsV0FBVyxDQUFDLENBQVM7UUFDakIsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1ldGVyQ29kZWMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG4vKipcclxuICogQ3VzdG9tIEh0dHBQYXJhbWV0ZXJDb2RlY1xyXG4gKiBXb3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xODI2MVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYyBpbXBsZW1lbnRzIEh0dHBQYXJhbWV0ZXJDb2RlYyB7XHJcbiAgICBlbmNvZGVLZXkoazogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGspO1xyXG4gICAgfVxyXG4gICAgZW5jb2RlVmFsdWUodjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHYpO1xyXG4gICAgfVxyXG4gICAgZGVjb2RlS2V5KGs6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChrKTtcclxuICAgIH1cclxuICAgIGRlY29kZVZhbHVlKHY6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -4,4 +4,4 @@ export * from './variables';
4
4
  export * from './configuration';
5
5
  export * from './api.module';
6
6
  export * from './param';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L2FwaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwaS9hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi92YXJpYWJsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWd1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BhcmFtJztcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L2FwaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwaS9hcGknO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVsL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmFyaWFibGVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25maWd1cmF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9hcGkubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9wYXJhbSc7XHJcbiJdfQ==
@@ -15,4 +15,4 @@ export var ComponentType;
15
15
  ComponentType["FORM"] = "form";
16
16
  ComponentType["WIDGET"] = "widget";
17
17
  })(ComponentType || (ComponentType = {}));
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50VHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL21vZGVsL2NvbXBvbmVudFR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUdILE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsd0NBQXVCLENBQUE7SUFDdkIsOEJBQWEsQ0FBQTtJQUNiLGtDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxuICogQ29udGFpbnMgZm9ybSBsYXlvdXQgZGVmaW5pdGlvbiBvYmplY3RzLlxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cblxuXG5leHBvcnQgZW51bSBDb21wb25lbnRUeXBlIHtcbiAgICBDT05UQUlORVIgPSAnY29udGFpbmVyJyxcbiAgICBGT1JNID0gJ2Zvcm0nLFxuICAgIFdJREdFVCA9ICd3aWRnZXQnXG59XG5cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50VHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL21vZGVsL2NvbXBvbmVudFR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUdILE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsd0NBQXVCLENBQUE7SUFDdkIsOEJBQWEsQ0FBQTtJQUNiLGtDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBGb3JtIGxheW91dCBkZWZpbml0aW9uXHJcbiAqIENvbnRhaW5zIGZvcm0gbGF5b3V0IGRlZmluaXRpb24gb2JqZWN0cy5cclxuICpcclxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXHJcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XHJcbiAqXHJcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXHJcbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxyXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXHJcbiAqL1xyXG5cclxuXHJcbmV4cG9ydCBlbnVtIENvbXBvbmVudFR5cGUge1xyXG4gICAgQ09OVEFJTkVSID0gJ2NvbnRhaW5lcicsXHJcbiAgICBGT1JNID0gJ2Zvcm0nLFxyXG4gICAgV0lER0VUID0gJ3dpZGdldCdcclxufVxyXG5cclxuIl19
@@ -16,4 +16,4 @@ export var ComponentWidgetType;
16
16
  ComponentWidgetType["TREE"] = "tree";
17
17
  ComponentWidgetType["TOOLBAR"] = "toolbar";
18
18
  })(ComponentWidgetType || (ComponentWidgetType = {}));
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50V2lkZ2V0VHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL21vZGVsL2NvbXBvbmVudFdpZGdldFR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUdILE1BQU0sQ0FBTixJQUFZLG1CQUtYO0FBTEQsV0FBWSxtQkFBbUI7SUFDM0Isb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLG9DQUFhLENBQUE7SUFDYiwwQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBTFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUs5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxuICogQ29udGFpbnMgZm9ybSBsYXlvdXQgZGVmaW5pdGlvbiBvYmplY3RzLlxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cblxuXG5leHBvcnQgZW51bSBDb21wb25lbnRXaWRnZXRUeXBlIHtcbiAgICBHUklEID0gJ2dyaWQnLFxuICAgIEZJTFRFUiA9ICdmaWx0ZXInLFxuICAgIFRSRUUgPSAndHJlZScsXG4gICAgVE9PTEJBUiA9ICd0b29sYmFyJ1xufVxuXG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50V2lkZ2V0VHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQvYXBpL21vZGVsL2NvbXBvbmVudFdpZGdldFR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUdILE1BQU0sQ0FBTixJQUFZLG1CQUtYO0FBTEQsV0FBWSxtQkFBbUI7SUFDM0Isb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLG9DQUFhLENBQUE7SUFDYiwwQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBTFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUs5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBGb3JtIGxheW91dCBkZWZpbml0aW9uXHJcbiAqIENvbnRhaW5zIGZvcm0gbGF5b3V0IGRlZmluaXRpb24gb2JqZWN0cy5cclxuICpcclxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXHJcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XHJcbiAqXHJcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXHJcbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxyXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXHJcbiAqL1xyXG5cclxuXHJcbmV4cG9ydCBlbnVtIENvbXBvbmVudFdpZGdldFR5cGUge1xyXG4gICAgR1JJRCA9ICdncmlkJyxcclxuICAgIEZJTFRFUiA9ICdmaWx0ZXInLFxyXG4gICAgVFJFRSA9ICd0cmVlJyxcclxuICAgIFRPT0xCQVIgPSAndG9vbGJhcidcclxufVxyXG5cclxuIl19
@@ -14,4 +14,4 @@ export var LayoutDirection;
14
14
  LayoutDirection["HORIZONTAL"] = "horizontal";
15
15
  LayoutDirection["VERTICAL"] = "vertical";
16
16
  })(LayoutDirection || (LayoutDirection = {}));
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0RGlyZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9hcGkvbW9kZWwvbGF5b3V0RGlyZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSCxNQUFNLENBQU4sSUFBWSxlQUdYO0FBSEQsV0FBWSxlQUFlO0lBQ3ZCLDRDQUF5QixDQUFBO0lBQ3pCLHdDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxuICogQ29udGFpbnMgZm9ybSBsYXlvdXQgZGVmaW5pdGlvbiBvYmplY3RzLlxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cblxuXG5leHBvcnQgZW51bSBMYXlvdXREaXJlY3Rpb24ge1xuICAgIEhPUklaT05UQUwgPSAnaG9yaXpvbnRhbCcsXG4gICAgVkVSVElDQUwgPSAndmVydGljYWwnXG59XG5cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0RGlyZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9hcGkvbW9kZWwvbGF5b3V0RGlyZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSCxNQUFNLENBQU4sSUFBWSxlQUdYO0FBSEQsV0FBWSxlQUFlO0lBQ3ZCLDRDQUF5QixDQUFBO0lBQ3pCLHdDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBGb3JtIGxheW91dCBkZWZpbml0aW9uXHJcbiAqIENvbnRhaW5zIGZvcm0gbGF5b3V0IGRlZmluaXRpb24gb2JqZWN0cy5cclxuICpcclxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXHJcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XHJcbiAqXHJcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXHJcbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxyXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXHJcbiAqL1xyXG5cclxuXHJcbmV4cG9ydCBlbnVtIExheW91dERpcmVjdGlvbiB7XHJcbiAgICBIT1JJWk9OVEFMID0gJ2hvcml6b250YWwnLFxyXG4gICAgVkVSVElDQUwgPSAndmVydGljYWwnXHJcbn1cclxuXHJcbiJdfQ==
@@ -3,4 +3,4 @@ export * from './componentWidgetType';
3
3
  export * from './layoutDirection';
4
4
  export * from './smartComponentLayoutDefinition';
5
5
  export * from './smartComponentWidgetDefinition';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9hcGkvbW9kZWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50VHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudFdpZGdldFR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXREaXJlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydENvbXBvbmVudExheW91dERlZmluaXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydENvbXBvbmVudFdpZGdldERlZmluaXRpb24nO1xuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9hcGkvbW9kZWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50VHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50V2lkZ2V0VHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGF5b3V0RGlyZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydENvbXBvbmVudExheW91dERlZmluaXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0Q29tcG9uZW50V2lkZ2V0RGVmaW5pdGlvbic7XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L2FwaS9wYXJhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGFuZGFyZCBwYXJhbWV0ZXIgc3R5bGVzIGRlZmluZWQgYnkgT3BlbkFQSSBzcGVjXG4gKi9cbmV4cG9ydCB0eXBlIFN0YW5kYXJkUGFyYW1TdHlsZSA9XG4gIHwgJ21hdHJpeCdcbiAgfCAnbGFiZWwnXG4gIHwgJ2Zvcm0nXG4gIHwgJ3NpbXBsZSdcbiAgfCAnc3BhY2VEZWxpbWl0ZWQnXG4gIHwgJ3BpcGVEZWxpbWl0ZWQnXG4gIHwgJ2RlZXBPYmplY3QnXG4gIDtcblxuLyoqXG4gKiBUaGUgT3BlbkFQSSBzdGFuZGFyZCB7QGxpbmsgU3RhbmRhcmRQYXJhbVN0eWxlfXMgbWF5IGJlIGV4dGVuZGVkIGJ5IGN1c3RvbSBzdHlsZXMgYnkgdGhlIHVzZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhcmFtU3R5bGUgPSBTdGFuZGFyZFBhcmFtU3R5bGUgfCBzdHJpbmc7XG5cbi8qKlxuICogU3RhbmRhcmQgcGFyYW1ldGVyIGxvY2F0aW9ucyBkZWZpbmVkIGJ5IE9wZW5BUEkgc3BlY1xuICovXG5leHBvcnQgdHlwZSBQYXJhbUxvY2F0aW9uID0gJ3F1ZXJ5JyB8ICdoZWFkZXInIHwgJ3BhdGgnIHwgJ2Nvb2tpZSc7XG5cbi8qKlxuICogU3RhbmRhcmQgdHlwZXMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPVwiaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2RhdGEtdHlwZXNcIj5PcGVuQVBJIFNwZWNpZmljYXRpb246IERhdGEgVHlwZXM8L2E+XG4gKi9cbmV4cG9ydCB0eXBlIFN0YW5kYXJkRGF0YVR5cGUgPVxuICB8IFwiaW50ZWdlclwiXG4gIHwgXCJudW1iZXJcIlxuICB8IFwiYm9vbGVhblwiXG4gIHwgXCJzdHJpbmdcIlxuICB8IFwib2JqZWN0XCJcbiAgfCBcImFycmF5XCJcbiAgO1xuXG4vKipcbiAqIFN0YW5kYXJkIHtAbGluayBEYXRhVHlwZX1zIHBsdXMgeW91ciBvd24gdHlwZXMvY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YVR5cGUgPSBTdGFuZGFyZERhdGFUeXBlIHwgc3RyaW5nO1xuXG4vKipcbiAqIFN0YW5kYXJkIGZvcm1hdHMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPVwiaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2RhdGEtdHlwZXNcIj5PcGVuQVBJIFNwZWNpZmljYXRpb246IERhdGEgVHlwZXM8L2E+XG4gKi9cbmV4cG9ydCB0eXBlIFN0YW5kYXJkRGF0YUZvcm1hdCA9XG4gIHwgXCJpbnQzMlwiXG4gIHwgXCJpbnQ2NFwiXG4gIHwgXCJmbG9hdFwiXG4gIHwgXCJkb3VibGVcIlxuICB8IFwiYnl0ZVwiXG4gIHwgXCJiaW5hcnlcIlxuICB8IFwiZGF0ZVwiXG4gIHwgXCJkYXRlLXRpbWVcIlxuICB8IFwicGFzc3dvcmRcIlxuICA7XG5cbmV4cG9ydCB0eXBlIERhdGFGb3JtYXQgPSBTdGFuZGFyZERhdGFGb3JtYXQgfCBzdHJpbmc7XG5cbi8qKlxuICogVGhlIHBhcmFtZXRlciB0byBlbmNvZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICBpbjogUGFyYW1Mb2NhdGlvbjtcbiAgc3R5bGU6IFBhcmFtU3R5bGUsXG4gIGV4cGxvZGU6IGJvb2xlYW47XG4gIGRhdGFUeXBlOiBEYXRhVHlwZTtcbiAgZGF0YUZvcm1hdDogRGF0YUZvcm1hdCB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L2FwaS9wYXJhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFN0YW5kYXJkIHBhcmFtZXRlciBzdHlsZXMgZGVmaW5lZCBieSBPcGVuQVBJIHNwZWNcclxuICovXHJcbmV4cG9ydCB0eXBlIFN0YW5kYXJkUGFyYW1TdHlsZSA9XHJcbiAgfCAnbWF0cml4J1xyXG4gIHwgJ2xhYmVsJ1xyXG4gIHwgJ2Zvcm0nXHJcbiAgfCAnc2ltcGxlJ1xyXG4gIHwgJ3NwYWNlRGVsaW1pdGVkJ1xyXG4gIHwgJ3BpcGVEZWxpbWl0ZWQnXHJcbiAgfCAnZGVlcE9iamVjdCdcclxuICA7XHJcblxyXG4vKipcclxuICogVGhlIE9wZW5BUEkgc3RhbmRhcmQge0BsaW5rIFN0YW5kYXJkUGFyYW1TdHlsZX1zIG1heSBiZSBleHRlbmRlZCBieSBjdXN0b20gc3R5bGVzIGJ5IHRoZSB1c2VyLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgUGFyYW1TdHlsZSA9IFN0YW5kYXJkUGFyYW1TdHlsZSB8IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBTdGFuZGFyZCBwYXJhbWV0ZXIgbG9jYXRpb25zIGRlZmluZWQgYnkgT3BlbkFQSSBzcGVjXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBQYXJhbUxvY2F0aW9uID0gJ3F1ZXJ5JyB8ICdoZWFkZXInIHwgJ3BhdGgnIHwgJ2Nvb2tpZSc7XHJcblxyXG4vKipcclxuICogU3RhbmRhcmQgdHlwZXMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPVwiaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2RhdGEtdHlwZXNcIj5PcGVuQVBJIFNwZWNpZmljYXRpb246IERhdGEgVHlwZXM8L2E+XHJcbiAqL1xyXG5leHBvcnQgdHlwZSBTdGFuZGFyZERhdGFUeXBlID1cclxuICB8IFwiaW50ZWdlclwiXHJcbiAgfCBcIm51bWJlclwiXHJcbiAgfCBcImJvb2xlYW5cIlxyXG4gIHwgXCJzdHJpbmdcIlxyXG4gIHwgXCJvYmplY3RcIlxyXG4gIHwgXCJhcnJheVwiXHJcbiAgO1xyXG5cclxuLyoqXHJcbiAqIFN0YW5kYXJkIHtAbGluayBEYXRhVHlwZX1zIHBsdXMgeW91ciBvd24gdHlwZXMvY2xhc3Nlcy5cclxuICovXHJcbmV4cG9ydCB0eXBlIERhdGFUeXBlID0gU3RhbmRhcmREYXRhVHlwZSB8IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBTdGFuZGFyZCBmb3JtYXRzIGFzIGRlZmluZWQgaW4gPGEgaHJlZj1cImh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNkYXRhLXR5cGVzXCI+T3BlbkFQSSBTcGVjaWZpY2F0aW9uOiBEYXRhIFR5cGVzPC9hPlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgU3RhbmRhcmREYXRhRm9ybWF0ID1cclxuICB8IFwiaW50MzJcIlxyXG4gIHwgXCJpbnQ2NFwiXHJcbiAgfCBcImZsb2F0XCJcclxuICB8IFwiZG91YmxlXCJcclxuICB8IFwiYnl0ZVwiXHJcbiAgfCBcImJpbmFyeVwiXHJcbiAgfCBcImRhdGVcIlxyXG4gIHwgXCJkYXRlLXRpbWVcIlxyXG4gIHwgXCJwYXNzd29yZFwiXHJcbiAgO1xyXG5cclxuZXhwb3J0IHR5cGUgRGF0YUZvcm1hdCA9IFN0YW5kYXJkRGF0YUZvcm1hdCB8IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBUaGUgcGFyYW1ldGVyIHRvIGVuY29kZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW0ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB2YWx1ZTogdW5rbm93bjtcclxuICBpbjogUGFyYW1Mb2NhdGlvbjtcclxuICBzdHlsZTogUGFyYW1TdHlsZSxcclxuICBleHBsb2RlOiBib29sZWFuO1xyXG4gIGRhdGFUeXBlOiBEYXRhVHlwZTtcclxuICBkYXRhRm9ybWF0OiBEYXRhRm9ybWF0IHwgdW5kZWZpbmVkO1xyXG59XHJcbiJdfQ==