@sapui5/sap.fe.core 1.141.2 → 1.142.1

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 (207) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +4 -1
  3. package/src/sap/fe/core/ActionRuntime.js +48 -23
  4. package/src/sap/fe/core/ActionRuntime.ts +61 -35
  5. package/src/sap/fe/core/AppComponent.js +76 -6
  6. package/src/sap/fe/core/AppComponent.ts +94 -8
  7. package/src/sap/fe/core/AppStateHandler.js +9 -8
  8. package/src/sap/fe/core/AppStateHandler.ts +13 -9
  9. package/src/sap/fe/core/BaseController.js +8 -5
  10. package/src/sap/fe/core/BaseController.ts +6 -1
  11. package/src/sap/fe/core/CommonUtils.js +4 -123
  12. package/src/sap/fe/core/CommonUtils.ts +3 -172
  13. package/src/sap/fe/core/ExtensionAPI.js +3 -10
  14. package/src/sap/fe/core/ExtensionAPI.ts +2 -14
  15. package/src/sap/fe/core/PageController.js +64 -43
  16. package/src/sap/fe/core/PageController.ts +62 -47
  17. package/src/sap/fe/core/TemplateComponent.js +20 -1
  18. package/src/sap/fe/core/TemplateComponent.ts +24 -2
  19. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +37 -24
  20. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +47 -31
  21. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +4 -0
  23. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +4 -1
  24. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -0
  25. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +4 -1
  26. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -0
  27. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +7 -5
  28. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +22 -2
  29. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +82 -39
  30. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +91 -54
  31. package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -3
  32. package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -3
  33. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +9 -7
  34. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +17 -5
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +37 -18
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +49 -17
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +30 -15
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +32 -14
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +9 -10
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +8 -9
  41. package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
  42. package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
  43. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -2
  44. package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -1
  45. package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Recommendations.ts +2 -2
  47. package/src/sap/fe/core/controllerextensions/Routing.js +9 -5
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +7 -7
  49. package/src/sap/fe/core/controllerextensions/Share.js +5 -5
  50. package/src/sap/fe/core/controllerextensions/Share.ts +4 -4
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +17 -2
  53. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +2 -2
  54. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +1 -1
  55. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +3 -3
  56. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +3 -2
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +33 -11
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +45 -14
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +37 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +41 -8
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -4
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +6 -1
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +7 -7
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +6 -5
  65. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
  66. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
  69. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +10 -6
  70. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -5
  71. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +11 -9
  72. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +22 -9
  73. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +9 -4
  74. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +10 -4
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +31 -2
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +34 -1
  77. package/src/sap/fe/core/converters/ManifestSettings.js +7 -1
  78. package/src/sap/fe/core/converters/ManifestSettings.ts +37 -0
  79. package/src/sap/fe/core/converters/ManifestWrapper.js +29 -9
  80. package/src/sap/fe/core/converters/ManifestWrapper.ts +29 -11
  81. package/src/sap/fe/core/converters/annotations/DataField.js +46 -19
  82. package/src/sap/fe/core/converters/annotations/DataField.ts +93 -19
  83. package/src/sap/fe/core/converters/common/AnnotationConverter.js +88 -35
  84. package/src/sap/fe/core/converters/controls/Common/Action.js +57 -20
  85. package/src/sap/fe/core/converters/controls/Common/Action.ts +71 -21
  86. package/src/sap/fe/core/converters/controls/Common/Chart.js +13 -3
  87. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -4
  88. package/src/sap/fe/core/converters/controls/Common/Form.js +18 -3
  89. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -1
  90. package/src/sap/fe/core/converters/controls/Common/Table.js +89 -57
  91. package/src/sap/fe/core/converters/controls/Common/Table.ts +110 -56
  92. package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.js +243 -0
  93. package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.ts +309 -0
  94. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +142 -58
  95. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +172 -78
  96. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +12 -18
  97. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +13 -27
  98. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -16
  99. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +6 -17
  100. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +16 -5
  101. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +16 -5
  102. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -2
  103. package/src/sap/fe/core/converters/helpers/Aggregation.ts +11 -1
  104. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +27 -3
  105. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +28 -1
  106. package/src/sap/fe/core/converters/helpers/ID.js +3 -1
  107. package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
  108. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -2
  109. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
  110. package/src/sap/fe/core/converters/templates/ListReportConverter.js +11 -3
  111. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -4
  112. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +19 -8
  113. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -7
  114. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
  115. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
  116. package/src/sap/fe/core/formatters/FPMFormatter.js +2 -2
  117. package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
  118. package/src/sap/fe/core/fpm/Component.js +8 -1
  119. package/src/sap/fe/core/fpm/Component.ts +8 -0
  120. package/src/sap/fe/core/fpm/manifest.json +1 -1
  121. package/src/sap/fe/core/helpers/AppStartupHelper.js +79 -25
  122. package/src/sap/fe/core/helpers/AppStartupHelper.ts +91 -32
  123. package/src/sap/fe/core/helpers/ManifestHelper.js +6 -3
  124. package/src/sap/fe/core/helpers/ManifestHelper.ts +3 -0
  125. package/src/sap/fe/core/helpers/MetaModelFunction.js +12 -3
  126. package/src/sap/fe/core/helpers/MetaModelFunction.ts +11 -3
  127. package/src/sap/fe/core/helpers/ModelHelper.js +48 -9
  128. package/src/sap/fe/core/helpers/ModelHelper.ts +55 -10
  129. package/src/sap/fe/core/helpers/TypeGuards.js +12 -2
  130. package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
  131. package/src/sap/fe/core/helpers/WebSocket.js +6 -7
  132. package/src/sap/fe/core/helpers/WebSocket.ts +10 -6
  133. package/src/sap/fe/core/library.js +30 -3
  134. package/src/sap/fe/core/library.ts +28 -1
  135. package/src/sap/fe/core/messagebundle.properties +8 -1
  136. package/src/sap/fe/core/messagebundle_ar.properties +7 -0
  137. package/src/sap/fe/core/messagebundle_bg.properties +10 -3
  138. package/src/sap/fe/core/messagebundle_ca.properties +7 -0
  139. package/src/sap/fe/core/messagebundle_cnr.properties +7 -0
  140. package/src/sap/fe/core/messagebundle_cs.properties +7 -0
  141. package/src/sap/fe/core/messagebundle_cy.properties +8 -1
  142. package/src/sap/fe/core/messagebundle_da.properties +7 -0
  143. package/src/sap/fe/core/messagebundle_de.properties +7 -0
  144. package/src/sap/fe/core/messagebundle_el.properties +7 -0
  145. package/src/sap/fe/core/messagebundle_en.properties +8 -1
  146. package/src/sap/fe/core/messagebundle_en_GB.properties +7 -0
  147. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +5 -0
  148. package/src/sap/fe/core/messagebundle_es.properties +8 -1
  149. package/src/sap/fe/core/messagebundle_es_MX.properties +7 -0
  150. package/src/sap/fe/core/messagebundle_et.properties +7 -0
  151. package/src/sap/fe/core/messagebundle_fi.properties +7 -0
  152. package/src/sap/fe/core/messagebundle_fr.properties +16 -9
  153. package/src/sap/fe/core/messagebundle_fr_CA.properties +7 -0
  154. package/src/sap/fe/core/messagebundle_hi.properties +8 -1
  155. package/src/sap/fe/core/messagebundle_hr.properties +7 -0
  156. package/src/sap/fe/core/messagebundle_hu.properties +7 -0
  157. package/src/sap/fe/core/messagebundle_id.properties +7 -0
  158. package/src/sap/fe/core/messagebundle_it.properties +7 -0
  159. package/src/sap/fe/core/messagebundle_iw.properties +7 -0
  160. package/src/sap/fe/core/messagebundle_ja.properties +8 -1
  161. package/src/sap/fe/core/messagebundle_kk.properties +7 -0
  162. package/src/sap/fe/core/messagebundle_ko.properties +7 -0
  163. package/src/sap/fe/core/messagebundle_lt.properties +7 -0
  164. package/src/sap/fe/core/messagebundle_lv.properties +7 -0
  165. package/src/sap/fe/core/messagebundle_mk.properties +7 -0
  166. package/src/sap/fe/core/messagebundle_ms.properties +7 -0
  167. package/src/sap/fe/core/messagebundle_nl.properties +7 -0
  168. package/src/sap/fe/core/messagebundle_no.properties +7 -0
  169. package/src/sap/fe/core/messagebundle_pl.properties +7 -0
  170. package/src/sap/fe/core/messagebundle_pt.properties +7 -0
  171. package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -0
  172. package/src/sap/fe/core/messagebundle_ro.properties +7 -0
  173. package/src/sap/fe/core/messagebundle_ru.properties +7 -0
  174. package/src/sap/fe/core/messagebundle_sh.properties +7 -0
  175. package/src/sap/fe/core/messagebundle_sk.properties +7 -0
  176. package/src/sap/fe/core/messagebundle_sl.properties +7 -0
  177. package/src/sap/fe/core/messagebundle_sr.properties +7 -0
  178. package/src/sap/fe/core/messagebundle_sv.properties +7 -0
  179. package/src/sap/fe/core/messagebundle_th.properties +7 -0
  180. package/src/sap/fe/core/messagebundle_tr.properties +7 -0
  181. package/src/sap/fe/core/messagebundle_uk.properties +7 -0
  182. package/src/sap/fe/core/messagebundle_vi.properties +7 -0
  183. package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -1
  184. package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -0
  185. package/src/sap/fe/core/rootView/Fcl.controller.js +21 -7
  186. package/src/sap/fe/core/rootView/Fcl.controller.ts +28 -6
  187. package/src/sap/fe/core/rootView/RootViewBaseController.js +96 -88
  188. package/src/sap/fe/core/rootView/RootViewBaseController.ts +106 -96
  189. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +14 -10
  190. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -10
  191. package/src/sap/fe/core/services/RoutingServiceFactory.js +16 -7
  192. package/src/sap/fe/core/services/RoutingServiceFactory.ts +23 -10
  193. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +9 -7
  194. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -8
  195. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +62 -6
  196. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +74 -11
  197. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +33 -15
  198. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +31 -11
  199. package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
  200. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
  201. package/src/sap/fe/core/templating/UIFormatters.js +17 -2
  202. package/src/sap/fe/core/templating/UIFormatters.ts +25 -1
  203. package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.js +10 -0
  204. package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.ts +369 -0
  205. package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.js +9 -0
  206. package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.ts +49 -0
  207. package/ui5.yaml +2 -0
@@ -133,6 +133,7 @@ sap.ui.define(["sap/fe/core/UIProvider", "./actionHelper"], function (UIProvider
133
133
  }
134
134
  }, this.parameters.parameterValues, this.parameters.entitySetName, this.parameters.messageHandler);
135
135
  await this.parameterDialog.createDialog();
136
+ this.resetParameterDialogState(); // Ensure clean state for new dialog
136
137
  this.parameterDialog.openDialog();
137
138
  }
138
139
  return this.parameterDialog.waitForParametersValues();
@@ -210,4 +211,4 @@ sap.ui.define(["sap/fe/core/UIProvider", "./actionHelper"], function (UIProvider
210
211
  _exports = OperationParameters;
211
212
  return _exports;
212
213
  }, false);
213
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPcGVyYXRpb25QYXJhbWV0ZXJzIiwiYXBwQ29tcG9uZW50IiwibW9kZWwiLCJjb252ZXJ0ZWRBY3Rpb24iLCJza2lwUGFyYW1ldGVyc0RpYWxvZyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJEaWFsb2ciLCJ1bmRlZmluZWQiLCJwYXJhbWV0ZXJzVmFsdWVzIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJhY3Rpb25QYXJhbWV0ZXJzIiwiYWN0aW9uSGVscGVyIiwiZ2V0QWN0aW9uUGFyYW1ldGVycyIsImlzUGFyYW1ldGVyRGlhbG9nTmVlZGVkIiwibGVuZ3RoIiwibmFtZSIsImZpbHRlciIsImFjdGlvblBhcmFtZXRlciIsImV2ZXJ5IiwicGFyYW1ldGVyIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhpZGRlbiIsInZhbHVlT2YiLCJzZXRTdGFydHVwUGFyYW1ldGVycyIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiY29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJpc1BhcmFtZXRlckRpYWxvZyIsImlzUGFyYW1ldGVyRGlhbG9nT3BlbmVkIiwiaXNPcGVuIiwicmVzZXRQYXJhbWV0ZXJEaWFsb2dTdGF0ZSIsInJlc2V0U3RhdGUiLCJjbG9zZVBhcmFtZXRlckRpYWxvZyIsImNsb3NlRGlhbG9nIiwiZ2V0T3BlcmF0aW9uUGFyYW1ldGVycyIsImlzTWFuZGF0b3J5VmFsdWVzUHJvdmlkZWQiLCJnZXRDb3JlVUlGYWN0b3J5IiwibmV3T3BlcmF0aW9uUGFyYW1ldGVyRGlhbG9nIiwiY29udGV4dHMiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJpc0NyZWF0ZUFjdGlvbiIsImxhYmVsIiwidmlldyIsImV2ZW50cyIsIm9uUGFyYW1ldGVyRGlhbG9nT3BlbmVkIiwib25QYXJhbWV0ZXJEaWFsb2dDbG9zZWQiLCJwYXJhbWV0ZXJWYWx1ZXMiLCJlbnRpdHlTZXROYW1lIiwibWVzc2FnZUhhbmRsZXIiLCJjcmVhdGVEaWFsb2ciLCJvcGVuRGlhbG9nIiwid2FpdEZvclBhcmFtZXRlcnNWYWx1ZXMiLCJpIiwiZmluZCIsImVsZW1lbnQiLCJ2YWx1ZSIsImNvbnZlcnRWYWx1ZSIsIlBhcmFtZXRlckRlZmF1bHRWYWx1ZSIsImhpZGRlbkFubm90YXRpb25TZXRPbkFsbEFjdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRDb250cm9sIiwiQ29tbW9uIiwiRmllbGRDb250cm9sIiwiaXNNYW5kYXRvcnkiLCJ0b1N0cmluZyIsInBhcmFtZXRlclZhbHVlIiwiVHlwZU1hcCIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwicGFyYW1ldGVyVHlwZSIsImdldEJhc2VUeXBlIiwidHlwZSIsInR5cGVJbnN0YW5jZSIsImdldERhdGFUeXBlSW5zdGFuY2UiLCJwYXJzZVZhbHVlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJPcGVyYXRpb25QYXJhbWV0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uIGFzIEVkbUFjdGlvbiwgQWN0aW9uUGFyYW1ldGVyIGFzIEVkbUFjdGlvblBhcmFtZXRlciwgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBnZXRDb3JlVUlGYWN0b3J5LCB0eXBlIFN0YW5kYXJkT3BlcmF0aW9uUGFyYW1ldGVyRGlhbG9nIH0gZnJvbSBcInNhcC9mZS9jb3JlL1VJUHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIE11bHRpVmFsdWVGaWVsZEl0ZW0gZnJvbSBcInNhcC91aS9tZGMvZmllbGQvTXVsdGlWYWx1ZUZpZWxkSXRlbVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFN0YXJ0dXBQYXJhbWV0ZXJzIH0gZnJvbSBcIi4uLy4uLy4uL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZUhhbmRsZXIgZnJvbSBcIi4uLy4uL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgYWN0aW9uSGVscGVyIGZyb20gXCIuL2FjdGlvbkhlbHBlclwiO1xuXG50eXBlIEJhc2VUeXBlUGFyYW1ldGVyID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3BlcmF0aW9uUGFyYW1ldGVycyB7XG5cdHByaXZhdGUgcmVhZG9ubHkgaXNQYXJhbWV0ZXJEaWFsb2dOZWVkZWQ6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhY3Rpb25QYXJhbWV0ZXJzOiBFZG1BY3Rpb25QYXJhbWV0ZXJbXTtcblxuXHRwcml2YXRlIHBhcmFtZXRlckRpYWxvZzogU3RhbmRhcmRPcGVyYXRpb25QYXJhbWV0ZXJEaWFsb2cgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSBwYXJhbWV0ZXJzVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPiA9IHt9O1xuXG5cdHByaXZhdGUgc3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzID0ge307XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgT3BlcmF0aW9uUGFyYW1ldGVycy5cblx0ICogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIHBhcmFtZXRlcnMgb2YgYW4gT0RhdGEgYWN0aW9uLCBpbmNsdWRpbmdcblx0ICogbWFuYWdpbmcgdGhlIHBhcmFtZXRlciBkaWFsb2csIHJldHJpZXZpbmcgcGFyYW1ldGVyIHZhbHVlcywgYW5kIGNoZWNraW5nIGlmIHRoZSBkaWFsb2cgaXMgbmVlZGVkLlxuXHQgKiBJdCBjaGVja3MgaWYgdGhlIGFjdGlvbiBoYXMgcGFyYW1ldGVycyBhbmQgd2hldGhlciBhIGRpYWxvZyBpcyBuZWVkZWQgYmFzZWQgb24gdGhlIGFjdGlvbidzIHBhcmFtZXRlcnMuXG5cdCAqIElmIHRoZSBhY3Rpb24gaGFzIHBhcmFtZXRlcnMsIGl0IHdpbGwgY3JlYXRlIGEgZGlhbG9nIHRvIGNvbGxlY3QgdGhlIHBhcmFtZXRlciB2YWx1ZXMuXG5cdCAqIElmIHRoZSBkaWFsb2cgaXMgbm90IG5lZWRlZCAoZS5nLiwgbm8gcGFyYW1ldGVycyBvciBhbGwgcGFyYW1ldGVycyBhcmUgaGlkZGVuKSwgaXQgd2lsbCByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBhcHBsaWNhdGlvbiBjb21wb25lbnRcblx0ICogQHBhcmFtIG1vZGVsIFRoZSBPRGF0YSBtb2RlbFxuXHQgKiBAcGFyYW0gY29udmVydGVkQWN0aW9uIFRoZSBvcGVyYXRpb25cblx0ICogQHBhcmFtIHNraXBQYXJhbWV0ZXJzRGlhbG9nIElmIHRydWUsIHRoZSBwYXJhbWV0ZXIgZGlhbG9nIHdpbGwgYmUgc2tpcHBlZCBpZiBhbGwgbWFuZGF0b3J5IHZhbHVlcyBhcmUgcHJvdmlkZWQuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgb3BlcmF0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmVudGl0eVNldE5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSBzZXRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMuY29udGV4dHMgVGhlIGNvbnRleHRzIGZvciB0aGUgYWN0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbiBUaGUgZnVuY3Rpb24gdG8gZ2V0IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgcGFyYW1ldGVyc1xuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5pc0NyZWF0ZUFjdGlvbiBJbmRpY2F0ZXMgaWYgdGhlIGFjdGlvbiBpcyBhIGNyZWF0ZSBhY3Rpb25cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMubGFiZWwgVGhlIGxhYmVsIGZvciB0aGUgYWN0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcyBUaGUgdmFsdWVzIGZvciB0aGUgcGFyYW1ldGVyc1xuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy52aWV3IFRoZSB2aWV3IHdoZXJlIHRoZSBhY3Rpb24gaXMgZXhlY3V0ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMubWVzc2FnZUhhbmRsZXIgVGhlIG1lc3NhZ2UgaGFuZGxlciBmb3IgdGhlIGFjdGlvblxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5ldmVudHMgVGhlIGV2ZW50cyBmb3IgdGhlIHBhcmFtZXRlciBkaWFsb2dcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMuZXZlbnRzLm9uUGFyYW1ldGVyRGlhbG9nT3BlbmVkIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHBhcmFtZXRlciBkaWFsb2cgaXMgb3BlbmVkXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmV2ZW50cy5vblBhcmFtZXRlckRpYWxvZ0Nsb3NlZCBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwYXJhbWV0ZXIgZGlhbG9nIGlzIGNsb3NlZFxuXHQgKi9cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0XHRwcml2YXRlIHJlYWRvbmx5IG1vZGVsOiBPRGF0YU1vZGVsLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVkQWN0aW9uOiBFZG1BY3Rpb24sXG5cdFx0cHJpdmF0ZSByZWFkb25seSBza2lwUGFyYW1ldGVyc0RpYWxvZzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlcnM6IHtcblx0XHRcdGNvbnRleHRzOiBDb250ZXh0W107XG5cdFx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24/OiBzdHJpbmc7XG5cdFx0XHRpc0NyZWF0ZUFjdGlvbj86IGJvb2xlYW47XG5cdFx0XHRsYWJlbD86IHN0cmluZztcblx0XHRcdHBhcmFtZXRlclZhbHVlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBNdWx0aVZhbHVlRmllbGRJdGVtW10+W107XG5cdFx0XHRlbnRpdHlTZXROYW1lPzogc3RyaW5nO1xuXHRcdFx0dmlldz86IEZFVmlldztcblx0XHRcdG1lc3NhZ2VIYW5kbGVyOiBNZXNzYWdlSGFuZGxlcjtcblx0XHRcdGV2ZW50cz86IHtcblx0XHRcdFx0b25QYXJhbWV0ZXJEaWFsb2dPcGVuZWQ/OiAoKSA9PiB2b2lkO1xuXHRcdFx0XHRvblBhcmFtZXRlckRpYWxvZ0Nsb3NlZD86ICgpID0+IHZvaWQ7XG5cdFx0XHR9O1xuXHRcdH1cblx0KSB7XG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIGFjdGlvbiBoYXMgcGFyYW1ldGVycyBhbmQgd291bGQgbmVlZCBhIHBhcmFtZXRlciBkaWFsb2dcblx0XHQvLyBUaGUgcGFyYW1ldGVyIFJlc3VsdElzQWN0aXZlRW50aXR5IGlzIGFsd2F5cyBoaWRkZW4gaW4gdGhlIGRpYWxvZyEgSGVuY2UgaWZcblx0XHQvLyB0aGlzIGlzIHRoZSBvbmx5IHBhcmFtZXRlciwgdGhpcyBpcyB0cmVhdGVkIGFzIG5vIHBhcmFtZXRlciBoZXJlIGJlY2F1c2UgdGhlXG5cdFx0Ly8gZGlhbG9nIHdvdWxkIGJlIGVtcHR5IVxuXHRcdHRoaXMuYWN0aW9uUGFyYW1ldGVycyA9IGFjdGlvbkhlbHBlci5nZXRBY3Rpb25QYXJhbWV0ZXJzKHRoaXMuY29udmVydGVkQWN0aW9uKTtcblx0XHR0aGlzLmlzUGFyYW1ldGVyRGlhbG9nTmVlZGVkID1cblx0XHRcdHRoaXMuYWN0aW9uUGFyYW1ldGVycy5sZW5ndGggPiAwICYmXG5cdFx0XHQhKHRoaXMuYWN0aW9uUGFyYW1ldGVycy5sZW5ndGggPT09IDEgJiYgdGhpcy5hY3Rpb25QYXJhbWV0ZXJzWzBdLm5hbWUgPT09IFwiUmVzdWx0SXNBY3RpdmVFbnRpdHlcIik7XG5cblx0XHR0aGlzLnNraXBQYXJhbWV0ZXJzRGlhbG9nID1cblx0XHRcdCh0aGlzLmFjdGlvblBhcmFtZXRlcnMubGVuZ3RoICYmXG5cdFx0XHR0aGlzLmFjdGlvblBhcmFtZXRlcnNcblx0XHRcdFx0LmZpbHRlcigoYWN0aW9uUGFyYW1ldGVyKSA9PiBhY3Rpb25QYXJhbWV0ZXIubmFtZSAhPT0gXCJSZXN1bHRJc0FjdGl2ZUVudGl0eVwiKVxuXHRcdFx0XHQuZXZlcnkoKHBhcmFtZXRlcikgPT4gcGFyYW1ldGVyLmFubm90YXRpb25zLlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZSlcblx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdDogdGhpcy5za2lwUGFyYW1ldGVyc0RpYWxvZykgPz8gZmFsc2U7XG5cblx0XHR0aGlzLnNldFN0YXJ0dXBQYXJhbWV0ZXJzKCk7XG5cdH1cblxuXHQvKipcblx0ICogIFNldHMgdGhlIHBhcmFtZXRlcnMgcHJvdmlkZWQgb24gdGhlIHN0YXJ0dXAuXG5cdCAqL1xuXHRwcml2YXRlIHNldFN0YXJ0dXBQYXJhbWV0ZXJzKCk6IHZvaWQge1xuXHRcdC8vIERldGVybWluZSBzdGFydHVwIHBhcmFtZXRlcnMgaWYgcHJvdmlkZWRcblx0XHRjb25zdCBjb21wb25lbnREYXRhID0gdGhpcy5hcHBDb21wb25lbnQuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdHRoaXMuc3RhcnR1cFBhcmFtZXRlcnMgPSBjb21wb25lbnREYXRhPy5zdGFydHVwUGFyYW1ldGVycyA/PyB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiAgSXMgdGhlIHBhcmFtZXRlciBkaWFsb2cgaW5zdGFuY2VkLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBwYXJhbWV0ZXIgZGlhbG9nIGlzIGluc3RhbmNlZCwgb3RoZXJ3aXNlIGZhbHNlXG5cdCAqL1xuXHRwdWJsaWMgaXNQYXJhbWV0ZXJEaWFsb2coKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5wYXJhbWV0ZXJEaWFsb2c7XG5cdH1cblxuXHQvKipcblx0ICogIElzIHRoZSBwYXJhbWV0ZXIgZGlhbG9nIG9wZW5lZC5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcGFyYW1ldGVyIGRpYWxvZyBpcyBvcGVuZWQsIG90aGVyd2lzZSBmYWxzZVxuXHQgKi9cblx0cHVibGljIGlzUGFyYW1ldGVyRGlhbG9nT3BlbmVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnBhcmFtZXRlckRpYWxvZz8uaXNPcGVuKCkgPz8gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgcGFyYW1ldGVyIGRpYWxvZy5cblx0ICovXG5cdHB1YmxpYyByZXNldFBhcmFtZXRlckRpYWxvZ1N0YXRlKCk6IHZvaWQge1xuXHRcdHRoaXMucGFyYW1ldGVyRGlhbG9nPy5yZXNldFN0YXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xvc2VzIHRoZSBzdGF0ZSBvZiB0aGUgcGFyYW1ldGVyIGRpYWxvZy5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWRcblx0ICovXG5cdHB1YmxpYyBhc3luYyBjbG9zZVBhcmFtZXRlckRpYWxvZygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gdGhpcy5wYXJhbWV0ZXJEaWFsb2c/LmNsb3NlRGlhbG9nKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlcnMuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyc1xuXHQgKi9cblx0cHVibGljIGFzeW5jIGdldE9wZXJhdGlvblBhcmFtZXRlcnMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPj4ge1xuXHRcdC8vIEluIGNhc2UgYW4gYWN0aW9uIHBhcmFtZXRlciBpcyBuZWVkZWQsIGFuZCB3ZSBzaGFsbCBza2lwIHRoZSBkaWFsb2csIGNoZWNrIGlmIHZhbHVlcyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBwYXJhbWV0ZXJzXG5cdFx0aWYgKHRoaXMuaXNQYXJhbWV0ZXJEaWFsb2dOZWVkZWQgJiYgISh0aGlzLnNraXBQYXJhbWV0ZXJzRGlhbG9nICYmIHRoaXMuaXNNYW5kYXRvcnlWYWx1ZXNQcm92aWRlZCgpKSkge1xuXHRcdFx0aWYgKCF0aGlzLnBhcmFtZXRlckRpYWxvZykge1xuXHRcdFx0XHR0aGlzLnBhcmFtZXRlckRpYWxvZyA9IGdldENvcmVVSUZhY3RvcnkoKS5uZXdPcGVyYXRpb25QYXJhbWV0ZXJEaWFsb2coXG5cdFx0XHRcdFx0dGhpcy5jb252ZXJ0ZWRBY3Rpb24sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiB0aGlzLmFwcENvbXBvbmVudCxcblx0XHRcdFx0XHRcdG1vZGVsOiB0aGlzLm1vZGVsLFxuXHRcdFx0XHRcdFx0Y29udGV4dHM6IHRoaXMucGFyYW1ldGVycy5jb250ZXh0cyxcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnNWYWx1ZXM6IHt9LFxuXHRcdFx0XHRcdFx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiB0aGlzLnBhcmFtZXRlcnMuZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uLFxuXHRcdFx0XHRcdFx0aXNDcmVhdGVBY3Rpb246IHRoaXMucGFyYW1ldGVycy5pc0NyZWF0ZUFjdGlvbixcblx0XHRcdFx0XHRcdGxhYmVsOiB0aGlzLnBhcmFtZXRlcnMubGFiZWwsXG5cdFx0XHRcdFx0XHR2aWV3OiB0aGlzLnBhcmFtZXRlcnMudmlldyxcblx0XHRcdFx0XHRcdGV2ZW50czoge1xuXHRcdFx0XHRcdFx0XHRvblBhcmFtZXRlckRpYWxvZ09wZW5lZDogdGhpcy5wYXJhbWV0ZXJzLmV2ZW50cz8ub25QYXJhbWV0ZXJEaWFsb2dPcGVuZWQsXG5cdFx0XHRcdFx0XHRcdG9uUGFyYW1ldGVyRGlhbG9nQ2xvc2VkOiB0aGlzLnBhcmFtZXRlcnMuZXZlbnRzPy5vblBhcmFtZXRlckRpYWxvZ0Nsb3NlZFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dGhpcy5wYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcyxcblx0XHRcdFx0XHR0aGlzLnBhcmFtZXRlcnMuZW50aXR5U2V0TmFtZSxcblx0XHRcdFx0XHR0aGlzLnBhcmFtZXRlcnMubWVzc2FnZUhhbmRsZXJcblx0XHRcdFx0KTtcblx0XHRcdFx0YXdhaXQgdGhpcy5wYXJhbWV0ZXJEaWFsb2cuY3JlYXRlRGlhbG9nKCk7XG5cdFx0XHRcdHRoaXMucGFyYW1ldGVyRGlhbG9nLm9wZW5EaWFsb2coKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLnBhcmFtZXRlckRpYWxvZy53YWl0Rm9yUGFyYW1ldGVyc1ZhbHVlcygpO1xuXHRcdH1cblx0XHQvLyBJZiB0aGUgZGlhbG9nIGlzIHNraXBwZWQsIHdlIG5lZWQgdG8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIHBhcmFtZXRlcnNcblx0XHRpZiAodGhpcy5wYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcykge1xuXHRcdFx0Zm9yIChjb25zdCBpIGluIHRoaXMuYWN0aW9uUGFyYW1ldGVycykge1xuXHRcdFx0XHR0aGlzLnBhcmFtZXRlcnNWYWx1ZXNbdGhpcy5hY3Rpb25QYXJhbWV0ZXJzW2ldLm5hbWVdID0gdGhpcy5wYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcz8uZmluZChcblx0XHRcdFx0XHQoZWxlbWVudCkgPT4gZWxlbWVudC5uYW1lID09PSB0aGlzLmFjdGlvblBhcmFtZXRlcnNbaV0ubmFtZVxuXHRcdFx0XHQpPy52YWx1ZTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bGV0IGFjdGlvblBhcmFtZXRlcjtcblx0XHRcdGZvciAoY29uc3QgaSBpbiB0aGlzLmFjdGlvblBhcmFtZXRlcnMpIHtcblx0XHRcdFx0YWN0aW9uUGFyYW1ldGVyID0gdGhpcy5hY3Rpb25QYXJhbWV0ZXJzW2ldO1xuXHRcdFx0XHR0aGlzLnBhcmFtZXRlcnNWYWx1ZXNbYWN0aW9uUGFyYW1ldGVyLm5hbWVdID0gYXdhaXQgdGhpcy5jb252ZXJ0VmFsdWUoXG5cdFx0XHRcdFx0YWN0aW9uUGFyYW1ldGVyLFxuXHRcdFx0XHRcdHRoaXMuc3RhcnR1cFBhcmFtZXRlcnNbYWN0aW9uUGFyYW1ldGVyLm5hbWVdPy5bMF0gPz8gYWN0aW9uUGFyYW1ldGVyLmFubm90YXRpb25zPy5VST8uUGFyYW1ldGVyRGVmYXVsdFZhbHVlPy52YWx1ZU9mKClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMucGFyYW1ldGVyc1ZhbHVlcztcblx0fVxuXG5cdC8qKlxuXHQgKiAgQXJlIHZhbHVlcyBwcm92aWRlZCBmb3IgdGhlIG1hbmRhdG9yeSBwYXJhbWV0ZXJzLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGZhbHNlXG5cdCAqL1xuXHRwcml2YXRlIGlzTWFuZGF0b3J5VmFsdWVzUHJvdmlkZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaGlkZGVuQW5ub3RhdGlvblNldE9uQWxsQWN0aW9ucyA9IHRoaXMuYWN0aW9uUGFyYW1ldGVycy5ldmVyeShcblx0XHRcdChwYXJhbWV0ZXIpID0+IHBhcmFtZXRlcj8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZVxuXHRcdCk7XG5cblx0XHRpZiAodGhpcy5wYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcz8ubGVuZ3RoICYmICFoaWRkZW5Bbm5vdGF0aW9uU2V0T25BbGxBY3Rpb25zKSB7XG5cdFx0XHQvLyBJZiBzaG93RGlhbG9nIGlzIGZhbHNlIGJ1dCB0aGVyZSBhcmUgcGFyYW1ldGVycyBmcm9tIHRoZSBpbnZva2VBY3Rpb24gY2FsbCB3aGljaCBuZWVkIHRvIGJlIGNoZWNrZWQgb24gZXhpc3RlbmNlXG5cdFx0XHRmb3IgKGNvbnN0IGFjdGlvblBhcmFtZXRlciBvZiB0aGlzLmFjdGlvblBhcmFtZXRlcnMpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGFjdGlvblBhcmFtZXRlci5uYW1lICE9PSBcIlJlc3VsdElzQWN0aXZlRW50aXR5XCIgJiZcblx0XHRcdFx0XHQhdGhpcy5wYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcz8uZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5uYW1lID09PSBhY3Rpb25QYXJhbWV0ZXIubmFtZSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Ly8gQXQgbGVhc3QgZm9yIG9uZSBwYXJhbWV0ZXIgbm8gdmFsdWUgaGFzIGJlZW4gcHJvdmlkZWQsIHNvIHdlIGNhbid0IHNraXAgdGhlIGRpYWxvZ1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnBhcmFtZXRlcnMuaXNDcmVhdGVBY3Rpb24gPT09IHRydWUgJiYgT2JqZWN0LmtleXModGhpcy5zdGFydHVwUGFyYW1ldGVycykubGVuZ3RoICYmICFoaWRkZW5Bbm5vdGF0aW9uU2V0T25BbGxBY3Rpb25zKSB7XG5cdFx0XHQvLyBJZiBwYXJhbWV0ZXJzIGhhdmUgYmVlbiBwcm92aWRlZCBkdXJpbmcgYXBwbGljYXRpb24gbGF1bmNoLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBzZXQgaXMgY29tcGxldGVcblx0XHRcdC8vIElmIG5vdCwgdGhlIHBhcmFtZXRlciBkaWFsb2cgc3RpbGwgbmVlZHMgdG8gYmUgc2hvd24uXG5cdFx0XHRmb3IgKGNvbnN0IGFjdGlvblBhcmFtZXRlciBvZiB0aGlzLmFjdGlvblBhcmFtZXRlcnMpIHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXJ0dXBQYXJhbWV0ZXJzW2FjdGlvblBhcmFtZXRlci5uYW1lXSkge1xuXHRcdFx0XHRcdC8vIEF0IGxlYXN0IGZvciBvbmUgcGFyYW1ldGVyIG5vIHZhbHVlIGhhcyBiZWVuIHByb3ZpZGVkLCBzbyB3ZSBjYW4ndCBza2lwIHRoZSBkaWFsb2dcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5hY3Rpb25QYXJhbWV0ZXJzLmxlbmd0aCAmJiBoaWRkZW5Bbm5vdGF0aW9uU2V0T25BbGxBY3Rpb25zKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hY3Rpb25QYXJhbWV0ZXJzLmV2ZXJ5KChwYXJhbWV0ZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgZmllbGRDb250cm9sID0gcGFyYW1ldGVyLmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbDtcblx0XHRcdFx0Y29uc3QgaXNNYW5kYXRvcnkgPSBmaWVsZENvbnRyb2w/LnRvU3RyaW5nKCkgPT09IFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvTWFuZGF0b3J5XCI7XG5cblx0XHRcdFx0Ly8gUG9zc2libGUgc291cmNlcyBtYXkgYmUgc3RhcnR1cFBhcmFtZXRlcnMsIHBhcmFtZXRlclZhbHVlcywgZGVmYXVsdFZhbHVlcyBwZXIgYW5ub3RhdGlvbiAoUGFyYW1ldGVyRGVmYXVsdFZhbHVlKVxuXHRcdFx0XHQvLyBJZiBub25lIGlzIGZvdW5kLCByZXR1cm4gZmFsc2Vcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQhaXNNYW5kYXRvcnkgfHxcblx0XHRcdFx0XHR0aGlzLnN0YXJ0dXBQYXJhbWV0ZXJzW3BhcmFtZXRlci5uYW1lXSB8fFxuXHRcdFx0XHRcdHRoaXMucGFyYW1ldGVycy5wYXJhbWV0ZXJWYWx1ZXM/LmZpbmQoKHBhcmFtZXRlclZhbHVlKSA9PiBwYXJhbWV0ZXJWYWx1ZS5uYW1lID09PSBwYXJhbWV0ZXIubmFtZSkgfHxcblx0XHRcdFx0XHRwYXJhbWV0ZXI/LmFubm90YXRpb25zPy5VST8uUGFyYW1ldGVyRGVmYXVsdFZhbHVlPy52YWx1ZU9mKClcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqICBGb3JtYXRzIHRoZSB2YWx1ZSBwcm92aWRlZCB3aXRoIGEgbm9uIHJlbGV2YW50IHR5cGUuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXIgVGhlIHBhcmFtZXRlclxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnRcblx0ICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCB2YWx1ZVxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBjb252ZXJ0VmFsdWUoXG5cdFx0cGFyYW1ldGVyOiBFZG1BY3Rpb25QYXJhbWV0ZXIsXG5cdFx0dmFsdWU/OiBCYXNlVHlwZVBhcmFtZXRlciB8IG51bGxcblx0KTogUHJvbWlzZTxCYXNlVHlwZVBhcmFtZXRlciB8IHVuZGVmaW5lZCB8IG51bGw+IHtcblx0XHRpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblx0XHRjb25zdCBUeXBlTWFwID0gKGF3YWl0IGltcG9ydChcInNhcC91aS9tZGMvb2RhdGEvdjQvVHlwZU1hcFwiKSkuZGVmYXVsdDtcblx0XHRjb25zdCBwYXJhbWV0ZXJUeXBlID0gVHlwZU1hcC5nZXRCYXNlVHlwZShwYXJhbWV0ZXIudHlwZSk7XG5cdFx0Y29uc3QgdHlwZUluc3RhbmNlID0gVHlwZU1hcC5nZXREYXRhVHlwZUluc3RhbmNlKHBhcmFtZXRlclR5cGUpO1xuXHRcdHJldHVybiB0eXBlSW5zdGFuY2UucGFyc2VWYWx1ZSh2YWx1ZSwgXCJzdHJpbmdcIik7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFhcUJBLG1CQUFtQjtJQVd2QztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQyxTQUFBQSxvQkFDa0JDLFlBQTBCLEVBQzFCQyxLQUFpQixFQUNqQkMsZUFBMEIsRUFDMUJDLG9CQUF5QyxFQUN6Q0MsVUFhaEIsRUFDQTtNQUFBLEtBakRNQyxlQUFlLEdBQWlEQyxTQUFTO01BQUEsS0FFekVDLGdCQUFnQixHQUFrQyxDQUFDLENBQUM7TUFBQSxLQUVwREMsaUJBQWlCLEdBQXNCLENBQUMsQ0FBQztNQUFBLEtBMkIvQlIsWUFBMEIsR0FBMUJBLFlBQTBCO01BQUEsS0FDMUJDLEtBQWlCLEdBQWpCQSxLQUFpQjtNQUFBLEtBQ2pCQyxlQUEwQixHQUExQkEsZUFBMEI7TUFBQSxLQUMxQkMsb0JBQXlDLEdBQXpDQSxvQkFBeUM7TUFBQSxLQUN6Q0MsVUFhaEIsR0FiZ0JBLFVBYWhCO01BRUQ7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFJLENBQUNLLGdCQUFnQixHQUFHQyxZQUFZLENBQUNDLG1CQUFtQixDQUFDLElBQUksQ0FBQ1QsZUFBZSxDQUFDO01BQzlFLElBQUksQ0FBQ1UsdUJBQXVCLEdBQzNCLElBQUksQ0FBQ0gsZ0JBQWdCLENBQUNJLE1BQU0sR0FBRyxDQUFDLElBQ2hDLEVBQUUsSUFBSSxDQUFDSixnQkFBZ0IsQ0FBQ0ksTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUNKLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDSyxJQUFJLEtBQUssc0JBQXNCLENBQUM7TUFFbEcsSUFBSSxDQUFDWCxvQkFBb0IsR0FDeEIsQ0FBQyxJQUFJLENBQUNNLGdCQUFnQixDQUFDSSxNQUFNLElBQzdCLElBQUksQ0FBQ0osZ0JBQWdCLENBQ25CTSxNQUFNLENBQUVDLGVBQWUsSUFBS0EsZUFBZSxDQUFDRixJQUFJLEtBQUssc0JBQXNCLENBQUMsQ0FDNUVHLEtBQUssQ0FBRUMsU0FBUyxJQUFLQSxTQUFTLENBQUNDLFdBQVcsQ0FBQ0MsRUFBRSxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQ3pFLElBQUksR0FDSixJQUFJLENBQUNuQixvQkFBb0IsS0FBSyxLQUFLO01BRXZDLElBQUksQ0FBQ29CLG9CQUFvQixDQUFDLENBQUM7SUFDNUI7O0lBRUE7QUFDRDtBQUNBO0lBRkNDLFFBQUEsR0FBQXpCLG1CQUFBO0lBQUEsSUFBQTBCLE1BQUEsR0FBQTFCLG1CQUFBLENBQUEyQixTQUFBO0lBQUFELE1BQUEsQ0FHUUYsb0JBQW9CLEdBQTVCLFNBQVFBLG9CQUFvQkEsQ0FBQSxFQUFTO01BQ3BDO01BQ0EsTUFBTUksYUFBYSxHQUFHLElBQUksQ0FBQzNCLFlBQVksQ0FBQzRCLGdCQUFnQixDQUFDLENBQUM7TUFDMUQsSUFBSSxDQUFDcEIsaUJBQWlCLEdBQUdtQixhQUFhLEVBQUVuQixpQkFBaUIsSUFBSSxDQUFDLENBQUM7SUFDaEU7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBaUIsTUFBQSxDQUlPSSxpQkFBaUIsR0FBeEIsU0FBT0EsaUJBQWlCQSxDQUFBLEVBQVk7TUFDbkMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDeEIsZUFBZTtJQUM5Qjs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFvQixNQUFBLENBSU9LLHVCQUF1QixHQUE5QixTQUFPQSx1QkFBdUJBLENBQUEsRUFBWTtNQUN6QyxPQUFPLElBQUksQ0FBQ3pCLGVBQWUsRUFBRTBCLE1BQU0sQ0FBQyxDQUFDLElBQUksS0FBSztJQUMvQzs7SUFFQTtBQUNEO0FBQ0EsT0FGQztJQUFBTixNQUFBLENBR09PLHlCQUF5QixHQUFoQyxTQUFPQSx5QkFBeUJBLENBQUEsRUFBUztNQUN4QyxJQUFJLENBQUMzQixlQUFlLEVBQUU0QixVQUFVLENBQUMsQ0FBQztJQUNuQzs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFSLE1BQUEsQ0FJYVMsb0JBQW9CLEdBQWpDLGVBQWFBLG9CQUFvQkEsQ0FBQSxFQUFrQjtNQUNsRCxPQUFPLElBQUksQ0FBQzdCLGVBQWUsRUFBRThCLFdBQVcsQ0FBQyxDQUFDO0lBQzNDOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQVYsTUFBQSxDQUlhVyxzQkFBc0IsR0FBbkMsZUFBYUEsc0JBQXNCQSxDQUFBLEVBQTJDO01BQzdFO01BQ0EsSUFBSSxJQUFJLENBQUN4Qix1QkFBdUIsSUFBSSxFQUFFLElBQUksQ0FBQ1Qsb0JBQW9CLElBQUksSUFBSSxDQUFDa0MseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDckcsSUFBSSxDQUFDLElBQUksQ0FBQ2hDLGVBQWUsRUFBRTtVQUMxQixJQUFJLENBQUNBLGVBQWUsR0FBR2lDLGdCQUFnQixDQUFDLENBQUMsQ0FBQ0MsMkJBQTJCLENBQ3BFLElBQUksQ0FBQ3JDLGVBQWUsRUFDcEI7WUFDQ0YsWUFBWSxFQUFFLElBQUksQ0FBQ0EsWUFBWTtZQUMvQkMsS0FBSyxFQUFFLElBQUksQ0FBQ0EsS0FBSztZQUNqQnVDLFFBQVEsRUFBRSxJQUFJLENBQUNwQyxVQUFVLENBQUNvQyxRQUFRO1lBQ2xDakMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ3BCa0MsOEJBQThCLEVBQUUsSUFBSSxDQUFDckMsVUFBVSxDQUFDcUMsOEJBQThCO1lBQzlFQyxjQUFjLEVBQUUsSUFBSSxDQUFDdEMsVUFBVSxDQUFDc0MsY0FBYztZQUM5Q0MsS0FBSyxFQUFFLElBQUksQ0FBQ3ZDLFVBQVUsQ0FBQ3VDLEtBQUs7WUFDNUJDLElBQUksRUFBRSxJQUFJLENBQUN4QyxVQUFVLENBQUN3QyxJQUFJO1lBQzFCQyxNQUFNLEVBQUU7Y0FDUEMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDMUMsVUFBVSxDQUFDeUMsTUFBTSxFQUFFQyx1QkFBdUI7Y0FDeEVDLHVCQUF1QixFQUFFLElBQUksQ0FBQzNDLFVBQVUsQ0FBQ3lDLE1BQU0sRUFBRUU7WUFDbEQ7VUFDRCxDQUFDLEVBQ0QsSUFBSSxDQUFDM0MsVUFBVSxDQUFDNEMsZUFBZSxFQUMvQixJQUFJLENBQUM1QyxVQUFVLENBQUM2QyxhQUFhLEVBQzdCLElBQUksQ0FBQzdDLFVBQVUsQ0FBQzhDLGNBQ2pCLENBQUM7VUFDRCxNQUFNLElBQUksQ0FBQzdDLGVBQWUsQ0FBQzhDLFlBQVksQ0FBQyxDQUFDO1VBQ3pDLElBQUksQ0FBQzlDLGVBQWUsQ0FBQytDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDO1FBQ0EsT0FBTyxJQUFJLENBQUMvQyxlQUFlLENBQUNnRCx1QkFBdUIsQ0FBQyxDQUFDO01BQ3REO01BQ0E7TUFDQSxJQUFJLElBQUksQ0FBQ2pELFVBQVUsQ0FBQzRDLGVBQWUsRUFBRTtRQUNwQyxLQUFLLE1BQU1NLENBQUMsSUFBSSxJQUFJLENBQUM3QyxnQkFBZ0IsRUFBRTtVQUN0QyxJQUFJLENBQUNGLGdCQUFnQixDQUFDLElBQUksQ0FBQ0UsZ0JBQWdCLENBQUM2QyxDQUFDLENBQUMsQ0FBQ3hDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQ1YsVUFBVSxDQUFDNEMsZUFBZSxFQUFFTyxJQUFJLENBQzFGQyxPQUFPLElBQUtBLE9BQU8sQ0FBQzFDLElBQUksS0FBSyxJQUFJLENBQUNMLGdCQUFnQixDQUFDNkMsQ0FBQyxDQUFDLENBQUN4QyxJQUN4RCxDQUFDLEVBQUUyQyxLQUFLO1FBQ1Q7TUFDRCxDQUFDLE1BQU07UUFDTixJQUFJekMsZUFBZTtRQUNuQixLQUFLLE1BQU1zQyxDQUFDLElBQUksSUFBSSxDQUFDN0MsZ0JBQWdCLEVBQUU7VUFDdENPLGVBQWUsR0FBRyxJQUFJLENBQUNQLGdCQUFnQixDQUFDNkMsQ0FBQyxDQUFDO1VBQzFDLElBQUksQ0FBQy9DLGdCQUFnQixDQUFDUyxlQUFlLENBQUNGLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDNEMsWUFBWSxDQUNwRTFDLGVBQWUsRUFDZixJQUFJLENBQUNSLGlCQUFpQixDQUFDUSxlQUFlLENBQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJRSxlQUFlLENBQUNHLFdBQVcsRUFBRUMsRUFBRSxFQUFFdUMscUJBQXFCLEVBQUVyQyxPQUFPLENBQUMsQ0FDdEgsQ0FBQztRQUNGO01BQ0Q7TUFDQSxPQUFPLElBQUksQ0FBQ2YsZ0JBQWdCO0lBQzdCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQWtCLE1BQUEsQ0FJUVkseUJBQXlCLEdBQWpDLFNBQVFBLHlCQUF5QkEsQ0FBQSxFQUFZO01BQzVDLE1BQU11QiwrQkFBK0IsR0FBRyxJQUFJLENBQUNuRCxnQkFBZ0IsQ0FBQ1EsS0FBSyxDQUNqRUMsU0FBUyxJQUFLQSxTQUFTLEVBQUVDLFdBQVcsRUFBRUMsRUFBRSxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFDbEUsQ0FBQztNQUVELElBQUksSUFBSSxDQUFDbEIsVUFBVSxDQUFDNEMsZUFBZSxFQUFFbkMsTUFBTSxJQUFJLENBQUMrQywrQkFBK0IsRUFBRTtRQUNoRjtRQUNBLEtBQUssTUFBTTVDLGVBQWUsSUFBSSxJQUFJLENBQUNQLGdCQUFnQixFQUFFO1VBQ3BELElBQ0NPLGVBQWUsQ0FBQ0YsSUFBSSxLQUFLLHNCQUFzQixJQUMvQyxDQUFDLElBQUksQ0FBQ1YsVUFBVSxDQUFDNEMsZUFBZSxFQUFFTyxJQUFJLENBQUVDLE9BQU8sSUFBS0EsT0FBTyxDQUFDMUMsSUFBSSxLQUFLRSxlQUFlLENBQUNGLElBQUksQ0FBQyxFQUN6RjtZQUNEO1lBQ0EsT0FBTyxLQUFLO1VBQ2I7UUFDRDtNQUNEO01BRUEsSUFBSSxJQUFJLENBQUNWLFVBQVUsQ0FBQ3NDLGNBQWMsS0FBSyxJQUFJLElBQUltQixNQUFNLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUN0RCxpQkFBaUIsQ0FBQyxDQUFDSyxNQUFNLElBQUksQ0FBQytDLCtCQUErQixFQUFFO1FBQzlIO1FBQ0E7UUFDQSxLQUFLLE1BQU01QyxlQUFlLElBQUksSUFBSSxDQUFDUCxnQkFBZ0IsRUFBRTtVQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDRCxpQkFBaUIsQ0FBQ1EsZUFBZSxDQUFDRixJQUFJLENBQUMsRUFBRTtZQUNsRDtZQUNBLE9BQU8sS0FBSztVQUNiO1FBQ0Q7TUFDRDtNQUVBLElBQUksSUFBSSxDQUFDTCxnQkFBZ0IsQ0FBQ0ksTUFBTSxJQUFJK0MsK0JBQStCLEVBQUU7UUFDcEUsT0FBTyxJQUFJLENBQUNuRCxnQkFBZ0IsQ0FBQ1EsS0FBSyxDQUFFQyxTQUFTLElBQUs7VUFDakQsTUFBTTZDLFlBQVksR0FBRzdDLFNBQVMsQ0FBQ0MsV0FBVyxFQUFFNkMsTUFBTSxFQUFFQyxZQUFZO1VBQ2hFLE1BQU1DLFdBQVcsR0FBR0gsWUFBWSxFQUFFSSxRQUFRLENBQUMsQ0FBQyxLQUFLLG1DQUFtQzs7VUFFcEY7VUFDQTtVQUNBLE9BQ0MsQ0FBQ0QsV0FBVyxJQUNaLElBQUksQ0FBQzFELGlCQUFpQixDQUFDVSxTQUFTLENBQUNKLElBQUksQ0FBQyxJQUN0QyxJQUFJLENBQUNWLFVBQVUsQ0FBQzRDLGVBQWUsRUFBRU8sSUFBSSxDQUFFYSxjQUFjLElBQUtBLGNBQWMsQ0FBQ3RELElBQUksS0FBS0ksU0FBUyxDQUFDSixJQUFJLENBQUMsSUFDakdJLFNBQVMsRUFBRUMsV0FBVyxFQUFFQyxFQUFFLEVBQUV1QyxxQkFBcUIsRUFBRXJDLE9BQU8sQ0FBQyxDQUFDO1FBRTlELENBQUMsQ0FBQztNQUNIO01BRUEsT0FBTyxJQUFJO0lBQ1o7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQUcsTUFBQSxDQU1jaUMsWUFBWSxHQUExQixlQUFjQSxZQUFZQSxDQUN6QnhDLFNBQTZCLEVBQzdCdUMsS0FBZ0MsRUFDZ0I7TUFDaEQsSUFBSUEsS0FBSyxLQUFLbkQsU0FBUyxJQUFJbUQsS0FBSyxLQUFLLElBQUksRUFBRTtRQUMxQyxPQUFPQSxLQUFLO01BQ2I7TUFDQSxNQUFNWSxPQUFPLEdBQUcsQ0FBQyxNQUFNQyxtQkFBQSxDQUFPLDZCQUE2QixDQUFDLEVBQUVDLE9BQU87TUFDckUsTUFBTUMsYUFBYSxHQUFHSCxPQUFPLENBQUNJLFdBQVcsQ0FBQ3ZELFNBQVMsQ0FBQ3dELElBQUksQ0FBQztNQUN6RCxNQUFNQyxZQUFZLEdBQUdOLE9BQU8sQ0FBQ08sbUJBQW1CLENBQUNKLGFBQWEsQ0FBQztNQUMvRCxPQUFPRyxZQUFZLENBQUNFLFVBQVUsQ0FBQ3BCLEtBQUssRUFBRSxRQUFRLENBQUM7SUFDaEQsQ0FBQztJQUFBLE9BQUExRCxtQkFBQTtFQUFBO0VBQUF5QixRQUFBLEdBQUF6QixtQkFBQTtFQUFBLE9BQUF5QixRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
214
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPcGVyYXRpb25QYXJhbWV0ZXJzIiwiYXBwQ29tcG9uZW50IiwibW9kZWwiLCJjb252ZXJ0ZWRBY3Rpb24iLCJza2lwUGFyYW1ldGVyc0RpYWxvZyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJEaWFsb2ciLCJ1bmRlZmluZWQiLCJwYXJhbWV0ZXJzVmFsdWVzIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJhY3Rpb25QYXJhbWV0ZXJzIiwiYWN0aW9uSGVscGVyIiwiZ2V0QWN0aW9uUGFyYW1ldGVycyIsImlzUGFyYW1ldGVyRGlhbG9nTmVlZGVkIiwibGVuZ3RoIiwibmFtZSIsImZpbHRlciIsImFjdGlvblBhcmFtZXRlciIsImV2ZXJ5IiwicGFyYW1ldGVyIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhpZGRlbiIsInZhbHVlT2YiLCJzZXRTdGFydHVwUGFyYW1ldGVycyIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiY29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJpc1BhcmFtZXRlckRpYWxvZyIsImlzUGFyYW1ldGVyRGlhbG9nT3BlbmVkIiwiaXNPcGVuIiwicmVzZXRQYXJhbWV0ZXJEaWFsb2dTdGF0ZSIsInJlc2V0U3RhdGUiLCJjbG9zZVBhcmFtZXRlckRpYWxvZyIsImNsb3NlRGlhbG9nIiwiZ2V0T3BlcmF0aW9uUGFyYW1ldGVycyIsImlzTWFuZGF0b3J5VmFsdWVzUHJvdmlkZWQiLCJnZXRDb3JlVUlGYWN0b3J5IiwibmV3T3BlcmF0aW9uUGFyYW1ldGVyRGlhbG9nIiwiY29udGV4dHMiLCJkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24iLCJpc0NyZWF0ZUFjdGlvbiIsImxhYmVsIiwidmlldyIsImV2ZW50cyIsIm9uUGFyYW1ldGVyRGlhbG9nT3BlbmVkIiwib25QYXJhbWV0ZXJEaWFsb2dDbG9zZWQiLCJwYXJhbWV0ZXJWYWx1ZXMiLCJlbnRpdHlTZXROYW1lIiwibWVzc2FnZUhhbmRsZXIiLCJjcmVhdGVEaWFsb2ciLCJvcGVuRGlhbG9nIiwid2FpdEZvclBhcmFtZXRlcnNWYWx1ZXMiLCJpIiwiZmluZCIsImVsZW1lbnQiLCJ2YWx1ZSIsImNvbnZlcnRWYWx1ZSIsIlBhcmFtZXRlckRlZmF1bHRWYWx1ZSIsImhpZGRlbkFubm90YXRpb25TZXRPbkFsbEFjdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRDb250cm9sIiwiQ29tbW9uIiwiRmllbGRDb250cm9sIiwiaXNNYW5kYXRvcnkiLCJ0b1N0cmluZyIsInBhcmFtZXRlclZhbHVlIiwiVHlwZU1hcCIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwicGFyYW1ldGVyVHlwZSIsImdldEJhc2VUeXBlIiwidHlwZSIsInR5cGVJbnN0YW5jZSIsImdldERhdGFUeXBlSW5zdGFuY2UiLCJwYXJzZVZhbHVlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJPcGVyYXRpb25QYXJhbWV0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uIGFzIEVkbUFjdGlvbiwgQWN0aW9uUGFyYW1ldGVyIGFzIEVkbUFjdGlvblBhcmFtZXRlciwgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBnZXRDb3JlVUlGYWN0b3J5LCB0eXBlIFN0YW5kYXJkT3BlcmF0aW9uUGFyYW1ldGVyRGlhbG9nIH0gZnJvbSBcInNhcC9mZS9jb3JlL1VJUHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIE11bHRpVmFsdWVGaWVsZEl0ZW0gZnJvbSBcInNhcC91aS9tZGMvZmllbGQvTXVsdGlWYWx1ZUZpZWxkSXRlbVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFN0YXJ0dXBQYXJhbWV0ZXJzIH0gZnJvbSBcIi4uLy4uLy4uL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZUhhbmRsZXIgZnJvbSBcIi4uLy4uL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgYWN0aW9uSGVscGVyIGZyb20gXCIuL2FjdGlvbkhlbHBlclwiO1xuXG50eXBlIEJhc2VUeXBlUGFyYW1ldGVyID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3BlcmF0aW9uUGFyYW1ldGVycyB7XG5cdHByaXZhdGUgcmVhZG9ubHkgaXNQYXJhbWV0ZXJEaWFsb2dOZWVkZWQ6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhY3Rpb25QYXJhbWV0ZXJzOiBFZG1BY3Rpb25QYXJhbWV0ZXJbXTtcblxuXHRwcml2YXRlIHBhcmFtZXRlckRpYWxvZzogU3RhbmRhcmRPcGVyYXRpb25QYXJhbWV0ZXJEaWFsb2cgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSBwYXJhbWV0ZXJzVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPiA9IHt9O1xuXG5cdHByaXZhdGUgc3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzID0ge307XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgT3BlcmF0aW9uUGFyYW1ldGVycy5cblx0ICogVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlIHBhcmFtZXRlcnMgb2YgYW4gT0RhdGEgYWN0aW9uLCBpbmNsdWRpbmdcblx0ICogbWFuYWdpbmcgdGhlIHBhcmFtZXRlciBkaWFsb2csIHJldHJpZXZpbmcgcGFyYW1ldGVyIHZhbHVlcywgYW5kIGNoZWNraW5nIGlmIHRoZSBkaWFsb2cgaXMgbmVlZGVkLlxuXHQgKiBJdCBjaGVja3MgaWYgdGhlIGFjdGlvbiBoYXMgcGFyYW1ldGVycyBhbmQgd2hldGhlciBhIGRpYWxvZyBpcyBuZWVkZWQgYmFzZWQgb24gdGhlIGFjdGlvbidzIHBhcmFtZXRlcnMuXG5cdCAqIElmIHRoZSBhY3Rpb24gaGFzIHBhcmFtZXRlcnMsIGl0IHdpbGwgY3JlYXRlIGEgZGlhbG9nIHRvIGNvbGxlY3QgdGhlIHBhcmFtZXRlciB2YWx1ZXMuXG5cdCAqIElmIHRoZSBkaWFsb2cgaXMgbm90IG5lZWRlZCAoZS5nLiwgbm8gcGFyYW1ldGVycyBvciBhbGwgcGFyYW1ldGVycyBhcmUgaGlkZGVuKSwgaXQgd2lsbCByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50IFRoZSBhcHBsaWNhdGlvbiBjb21wb25lbnRcblx0ICogQHBhcmFtIG1vZGVsIFRoZSBPRGF0YSBtb2RlbFxuXHQgKiBAcGFyYW0gY29udmVydGVkQWN0aW9uIFRoZSBvcGVyYXRpb25cblx0ICogQHBhcmFtIHNraXBQYXJhbWV0ZXJzRGlhbG9nIElmIHRydWUsIHRoZSBwYXJhbWV0ZXIgZGlhbG9nIHdpbGwgYmUgc2tpcHBlZCBpZiBhbGwgbWFuZGF0b3J5IHZhbHVlcyBhcmUgcHJvdmlkZWQuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgb3BlcmF0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmVudGl0eVNldE5hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSBzZXRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMuY29udGV4dHMgVGhlIGNvbnRleHRzIGZvciB0aGUgYWN0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbiBUaGUgZnVuY3Rpb24gdG8gZ2V0IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgcGFyYW1ldGVyc1xuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5pc0NyZWF0ZUFjdGlvbiBJbmRpY2F0ZXMgaWYgdGhlIGFjdGlvbiBpcyBhIGNyZWF0ZSBhY3Rpb25cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMubGFiZWwgVGhlIGxhYmVsIGZvciB0aGUgYWN0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcyBUaGUgdmFsdWVzIGZvciB0aGUgcGFyYW1ldGVyc1xuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy52aWV3IFRoZSB2aWV3IHdoZXJlIHRoZSBhY3Rpb24gaXMgZXhlY3V0ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMubWVzc2FnZUhhbmRsZXIgVGhlIG1lc3NhZ2UgaGFuZGxlciBmb3IgdGhlIGFjdGlvblxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5ldmVudHMgVGhlIGV2ZW50cyBmb3IgdGhlIHBhcmFtZXRlciBkaWFsb2dcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMuZXZlbnRzLm9uUGFyYW1ldGVyRGlhbG9nT3BlbmVkIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHBhcmFtZXRlciBkaWFsb2cgaXMgb3BlbmVkXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLmV2ZW50cy5vblBhcmFtZXRlckRpYWxvZ0Nsb3NlZCBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwYXJhbWV0ZXIgZGlhbG9nIGlzIGNsb3NlZFxuXHQgKi9cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0XHRwcml2YXRlIHJlYWRvbmx5IG1vZGVsOiBPRGF0YU1vZGVsLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVkQWN0aW9uOiBFZG1BY3Rpb24sXG5cdFx0cHJpdmF0ZSByZWFkb25seSBza2lwUGFyYW1ldGVyc0RpYWxvZzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlcnM6IHtcblx0XHRcdGNvbnRleHRzOiBDb250ZXh0W107XG5cdFx0XHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24/OiBzdHJpbmc7XG5cdFx0XHRpc0NyZWF0ZUFjdGlvbj86IGJvb2xlYW47XG5cdFx0XHRsYWJlbD86IHN0cmluZztcblx0XHRcdHBhcmFtZXRlclZhbHVlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBNdWx0aVZhbHVlRmllbGRJdGVtW10+W107XG5cdFx0XHRlbnRpdHlTZXROYW1lPzogc3RyaW5nO1xuXHRcdFx0dmlldz86IEZFVmlldztcblx0XHRcdG1lc3NhZ2VIYW5kbGVyOiBNZXNzYWdlSGFuZGxlcjtcblx0XHRcdGV2ZW50cz86IHtcblx0XHRcdFx0b25QYXJhbWV0ZXJEaWFsb2dPcGVuZWQ/OiAoKSA9PiB2b2lkO1xuXHRcdFx0XHRvblBhcmFtZXRlckRpYWxvZ0Nsb3NlZD86ICgpID0+IHZvaWQ7XG5cdFx0XHR9O1xuXHRcdH1cblx0KSB7XG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIGFjdGlvbiBoYXMgcGFyYW1ldGVycyBhbmQgd291bGQgbmVlZCBhIHBhcmFtZXRlciBkaWFsb2dcblx0XHQvLyBUaGUgcGFyYW1ldGVyIFJlc3VsdElzQWN0aXZlRW50aXR5IGlzIGFsd2F5cyBoaWRkZW4gaW4gdGhlIGRpYWxvZyEgSGVuY2UgaWZcblx0XHQvLyB0aGlzIGlzIHRoZSBvbmx5IHBhcmFtZXRlciwgdGhpcyBpcyB0cmVhdGVkIGFzIG5vIHBhcmFtZXRlciBoZXJlIGJlY2F1c2UgdGhlXG5cdFx0Ly8gZGlhbG9nIHdvdWxkIGJlIGVtcHR5IVxuXHRcdHRoaXMuYWN0aW9uUGFyYW1ldGVycyA9IGFjdGlvbkhlbHBlci5nZXRBY3Rpb25QYXJhbWV0ZXJzKHRoaXMuY29udmVydGVkQWN0aW9uKTtcblx0XHR0aGlzLmlzUGFyYW1ldGVyRGlhbG9nTmVlZGVkID1cblx0XHRcdHRoaXMuYWN0aW9uUGFyYW1ldGVycy5sZW5ndGggPiAwICYmXG5cdFx0XHQhKHRoaXMuYWN0aW9uUGFyYW1ldGVycy5sZW5ndGggPT09IDEgJiYgdGhpcy5hY3Rpb25QYXJhbWV0ZXJzWzBdLm5hbWUgPT09IFwiUmVzdWx0SXNBY3RpdmVFbnRpdHlcIik7XG5cblx0XHR0aGlzLnNraXBQYXJhbWV0ZXJzRGlhbG9nID1cblx0XHRcdCh0aGlzLmFjdGlvblBhcmFtZXRlcnMubGVuZ3RoICYmXG5cdFx0XHR0aGlzLmFjdGlvblBhcmFtZXRlcnNcblx0XHRcdFx0LmZpbHRlcigoYWN0aW9uUGFyYW1ldGVyKSA9PiBhY3Rpb25QYXJhbWV0ZXIubmFtZSAhPT0gXCJSZXN1bHRJc0FjdGl2ZUVudGl0eVwiKVxuXHRcdFx0XHQuZXZlcnkoKHBhcmFtZXRlcikgPT4gcGFyYW1ldGVyLmFubm90YXRpb25zLlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZSlcblx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdDogdGhpcy5za2lwUGFyYW1ldGVyc0RpYWxvZykgPz8gZmFsc2U7XG5cblx0XHR0aGlzLnNldFN0YXJ0dXBQYXJhbWV0ZXJzKCk7XG5cdH1cblxuXHQvKipcblx0ICogIFNldHMgdGhlIHBhcmFtZXRlcnMgcHJvdmlkZWQgb24gdGhlIHN0YXJ0dXAuXG5cdCAqL1xuXHRwcml2YXRlIHNldFN0YXJ0dXBQYXJhbWV0ZXJzKCk6IHZvaWQge1xuXHRcdC8vIERldGVybWluZSBzdGFydHVwIHBhcmFtZXRlcnMgaWYgcHJvdmlkZWRcblx0XHRjb25zdCBjb21wb25lbnREYXRhID0gdGhpcy5hcHBDb21wb25lbnQuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdHRoaXMuc3RhcnR1cFBhcmFtZXRlcnMgPSBjb21wb25lbnREYXRhPy5zdGFydHVwUGFyYW1ldGVycyA/PyB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiAgSXMgdGhlIHBhcmFtZXRlciBkaWFsb2cgaW5zdGFuY2VkLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBwYXJhbWV0ZXIgZGlhbG9nIGlzIGluc3RhbmNlZCwgb3RoZXJ3aXNlIGZhbHNlXG5cdCAqL1xuXHRwdWJsaWMgaXNQYXJhbWV0ZXJEaWFsb2coKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5wYXJhbWV0ZXJEaWFsb2c7XG5cdH1cblxuXHQvKipcblx0ICogIElzIHRoZSBwYXJhbWV0ZXIgZGlhbG9nIG9wZW5lZC5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcGFyYW1ldGVyIGRpYWxvZyBpcyBvcGVuZWQsIG90aGVyd2lzZSBmYWxzZVxuXHQgKi9cblx0cHVibGljIGlzUGFyYW1ldGVyRGlhbG9nT3BlbmVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnBhcmFtZXRlckRpYWxvZz8uaXNPcGVuKCkgPz8gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgcGFyYW1ldGVyIGRpYWxvZy5cblx0ICovXG5cdHB1YmxpYyByZXNldFBhcmFtZXRlckRpYWxvZ1N0YXRlKCk6IHZvaWQge1xuXHRcdHRoaXMucGFyYW1ldGVyRGlhbG9nPy5yZXNldFN0YXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xvc2VzIHRoZSBzdGF0ZSBvZiB0aGUgcGFyYW1ldGVyIGRpYWxvZy5cblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWRcblx0ICovXG5cdHB1YmxpYyBhc3luYyBjbG9zZVBhcmFtZXRlckRpYWxvZygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gdGhpcy5wYXJhbWV0ZXJEaWFsb2c/LmNsb3NlRGlhbG9nKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlcnMuXG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyc1xuXHQgKi9cblx0cHVibGljIGFzeW5jIGdldE9wZXJhdGlvblBhcmFtZXRlcnMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPj4ge1xuXHRcdC8vIEluIGNhc2UgYW4gYWN0aW9uIHBhcmFtZXRlciBpcyBuZWVkZWQsIGFuZCB3ZSBzaGFsbCBza2lwIHRoZSBkaWFsb2csIGNoZWNrIGlmIHZhbHVlcyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBwYXJhbWV0ZXJzXG5cdFx0aWYgKHRoaXMuaXNQYXJhbWV0ZXJEaWFsb2dOZWVkZWQgJiYgISh0aGlzLnNraXBQYXJhbWV0ZXJzRGlhbG9nICYmIHRoaXMuaXNNYW5kYXRvcnlWYWx1ZXNQcm92aWRlZCgpKSkge1xuXHRcdFx0aWYgKCF0aGlzLnBhcmFtZXRlckRpYWxvZykge1xuXHRcdFx0XHR0aGlzLnBhcmFtZXRlckRpYWxvZyA9IGdldENvcmVVSUZhY3RvcnkoKS5uZXdPcGVyYXRpb25QYXJhbWV0ZXJEaWFsb2coXG5cdFx0XHRcdFx0dGhpcy5jb252ZXJ0ZWRBY3Rpb24sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiB0aGlzLmFwcENvbXBvbmVudCxcblx0XHRcdFx0XHRcdG1vZGVsOiB0aGlzLm1vZGVsLFxuXHRcdFx0XHRcdFx0Y29udGV4dHM6IHRoaXMucGFyYW1ldGVycy5jb250ZXh0cyxcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnNWYWx1ZXM6IHt9LFxuXHRcdFx0XHRcdFx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiB0aGlzLnBhcmFtZXRlcnMuZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uLFxuXHRcdFx0XHRcdFx0aXNDcmVhdGVBY3Rpb246IHRoaXMucGFyYW1ldGVycy5pc0NyZWF0ZUFjdGlvbixcblx0XHRcdFx0XHRcdGxhYmVsOiB0aGlzLnBhcmFtZXRlcnMubGFiZWwsXG5cdFx0XHRcdFx0XHR2aWV3OiB0aGlzLnBhcmFtZXRlcnMudmlldyxcblx0XHRcdFx0XHRcdGV2ZW50czoge1xuXHRcdFx0XHRcdFx0XHRvblBhcmFtZXRlckRpYWxvZ09wZW5lZDogdGhpcy5wYXJhbWV0ZXJzLmV2ZW50cz8ub25QYXJhbWV0ZXJEaWFsb2dPcGVuZWQsXG5cdFx0XHRcdFx0XHRcdG9uUGFyYW1ldGVyRGlhbG9nQ2xvc2VkOiB0aGlzLnBhcmFtZXRlcnMuZXZlbnRzPy5vblBhcmFtZXRlckRpYWxvZ0Nsb3NlZFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dGhpcy5wYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcyxcblx0XHRcdFx0XHR0aGlzLnBhcmFtZXRlcnMuZW50aXR5U2V0TmFtZSxcblx0XHRcdFx0XHR0aGlzLnBhcmFtZXRlcnMubWVzc2FnZUhhbmRsZXJcblx0XHRcdFx0KTtcblx0XHRcdFx0YXdhaXQgdGhpcy5wYXJhbWV0ZXJEaWFsb2cuY3JlYXRlRGlhbG9nKCk7XG5cdFx0XHRcdHRoaXMucmVzZXRQYXJhbWV0ZXJEaWFsb2dTdGF0ZSgpOyAvLyBFbnN1cmUgY2xlYW4gc3RhdGUgZm9yIG5ldyBkaWFsb2dcblx0XHRcdFx0dGhpcy5wYXJhbWV0ZXJEaWFsb2cub3BlbkRpYWxvZygpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMucGFyYW1ldGVyRGlhbG9nLndhaXRGb3JQYXJhbWV0ZXJzVmFsdWVzKCk7XG5cdFx0fVxuXHRcdC8vIElmIHRoZSBkaWFsb2cgaXMgc2tpcHBlZCwgd2UgbmVlZCB0byBzZXQgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgcGFyYW1ldGVyc1xuXHRcdGlmICh0aGlzLnBhcmFtZXRlcnMucGFyYW1ldGVyVmFsdWVzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGkgaW4gdGhpcy5hY3Rpb25QYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdHRoaXMucGFyYW1ldGVyc1ZhbHVlc1t0aGlzLmFjdGlvblBhcmFtZXRlcnNbaV0ubmFtZV0gPSB0aGlzLnBhcmFtZXRlcnMucGFyYW1ldGVyVmFsdWVzPy5maW5kKFxuXHRcdFx0XHRcdChlbGVtZW50KSA9PiBlbGVtZW50Lm5hbWUgPT09IHRoaXMuYWN0aW9uUGFyYW1ldGVyc1tpXS5uYW1lXG5cdFx0XHRcdCk/LnZhbHVlO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRsZXQgYWN0aW9uUGFyYW1ldGVyO1xuXHRcdFx0Zm9yIChjb25zdCBpIGluIHRoaXMuYWN0aW9uUGFyYW1ldGVycykge1xuXHRcdFx0XHRhY3Rpb25QYXJhbWV0ZXIgPSB0aGlzLmFjdGlvblBhcmFtZXRlcnNbaV07XG5cdFx0XHRcdHRoaXMucGFyYW1ldGVyc1ZhbHVlc1thY3Rpb25QYXJhbWV0ZXIubmFtZV0gPSBhd2FpdCB0aGlzLmNvbnZlcnRWYWx1ZShcblx0XHRcdFx0XHRhY3Rpb25QYXJhbWV0ZXIsXG5cdFx0XHRcdFx0dGhpcy5zdGFydHVwUGFyYW1ldGVyc1thY3Rpb25QYXJhbWV0ZXIubmFtZV0/LlswXSA/PyBhY3Rpb25QYXJhbWV0ZXIuYW5ub3RhdGlvbnM/LlVJPy5QYXJhbWV0ZXJEZWZhdWx0VmFsdWU/LnZhbHVlT2YoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzVmFsdWVzO1xuXHR9XG5cblx0LyoqXG5cdCAqICBBcmUgdmFsdWVzIHByb3ZpZGVkIGZvciB0aGUgbWFuZGF0b3J5IHBhcmFtZXRlcnMuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgZmFsc2Vcblx0ICovXG5cdHByaXZhdGUgaXNNYW5kYXRvcnlWYWx1ZXNQcm92aWRlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBoaWRkZW5Bbm5vdGF0aW9uU2V0T25BbGxBY3Rpb25zID0gdGhpcy5hY3Rpb25QYXJhbWV0ZXJzLmV2ZXJ5KFxuXHRcdFx0KHBhcmFtZXRlcikgPT4gcGFyYW1ldGVyPy5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpID09PSB0cnVlXG5cdFx0KTtcblxuXHRcdGlmICh0aGlzLnBhcmFtZXRlcnMucGFyYW1ldGVyVmFsdWVzPy5sZW5ndGggJiYgIWhpZGRlbkFubm90YXRpb25TZXRPbkFsbEFjdGlvbnMpIHtcblx0XHRcdC8vIElmIHNob3dEaWFsb2cgaXMgZmFsc2UgYnV0IHRoZXJlIGFyZSBwYXJhbWV0ZXJzIGZyb20gdGhlIGludm9rZUFjdGlvbiBjYWxsIHdoaWNoIG5lZWQgdG8gYmUgY2hlY2tlZCBvbiBleGlzdGVuY2Vcblx0XHRcdGZvciAoY29uc3QgYWN0aW9uUGFyYW1ldGVyIG9mIHRoaXMuYWN0aW9uUGFyYW1ldGVycykge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0YWN0aW9uUGFyYW1ldGVyLm5hbWUgIT09IFwiUmVzdWx0SXNBY3RpdmVFbnRpdHlcIiAmJlxuXHRcdFx0XHRcdCF0aGlzLnBhcmFtZXRlcnMucGFyYW1ldGVyVmFsdWVzPy5maW5kKChlbGVtZW50KSA9PiBlbGVtZW50Lm5hbWUgPT09IGFjdGlvblBhcmFtZXRlci5uYW1lKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHQvLyBBdCBsZWFzdCBmb3Igb25lIHBhcmFtZXRlciBubyB2YWx1ZSBoYXMgYmVlbiBwcm92aWRlZCwgc28gd2UgY2FuJ3Qgc2tpcCB0aGUgZGlhbG9nXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucGFyYW1ldGVycy5pc0NyZWF0ZUFjdGlvbiA9PT0gdHJ1ZSAmJiBPYmplY3Qua2V5cyh0aGlzLnN0YXJ0dXBQYXJhbWV0ZXJzKS5sZW5ndGggJiYgIWhpZGRlbkFubm90YXRpb25TZXRPbkFsbEFjdGlvbnMpIHtcblx0XHRcdC8vIElmIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIHByb3ZpZGVkIGR1cmluZyBhcHBsaWNhdGlvbiBsYXVuY2gsIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHNldCBpcyBjb21wbGV0ZVxuXHRcdFx0Ly8gSWYgbm90LCB0aGUgcGFyYW1ldGVyIGRpYWxvZyBzdGlsbCBuZWVkcyB0byBiZSBzaG93bi5cblx0XHRcdGZvciAoY29uc3QgYWN0aW9uUGFyYW1ldGVyIG9mIHRoaXMuYWN0aW9uUGFyYW1ldGVycykge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhcnR1cFBhcmFtZXRlcnNbYWN0aW9uUGFyYW1ldGVyLm5hbWVdKSB7XG5cdFx0XHRcdFx0Ly8gQXQgbGVhc3QgZm9yIG9uZSBwYXJhbWV0ZXIgbm8gdmFsdWUgaGFzIGJlZW4gcHJvdmlkZWQsIHNvIHdlIGNhbid0IHNraXAgdGhlIGRpYWxvZ1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFjdGlvblBhcmFtZXRlcnMubGVuZ3RoICYmIGhpZGRlbkFubm90YXRpb25TZXRPbkFsbEFjdGlvbnMpIHtcblx0XHRcdHJldHVybiB0aGlzLmFjdGlvblBhcmFtZXRlcnMuZXZlcnkoKHBhcmFtZXRlcikgPT4ge1xuXHRcdFx0XHRjb25zdCBmaWVsZENvbnRyb2wgPSBwYXJhbWV0ZXIuYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRcdFx0XHRjb25zdCBpc01hbmRhdG9yeSA9IGZpZWxkQ29udHJvbD8udG9TdHJpbmcoKSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9NYW5kYXRvcnlcIjtcblxuXHRcdFx0XHQvLyBQb3NzaWJsZSBzb3VyY2VzIG1heSBiZSBzdGFydHVwUGFyYW1ldGVycywgcGFyYW1ldGVyVmFsdWVzLCBkZWZhdWx0VmFsdWVzIHBlciBhbm5vdGF0aW9uIChQYXJhbWV0ZXJEZWZhdWx0VmFsdWUpXG5cdFx0XHRcdC8vIElmIG5vbmUgaXMgZm91bmQsIHJldHVybiBmYWxzZVxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdCFpc01hbmRhdG9yeSB8fFxuXHRcdFx0XHRcdHRoaXMuc3RhcnR1cFBhcmFtZXRlcnNbcGFyYW1ldGVyLm5hbWVdIHx8XG5cdFx0XHRcdFx0dGhpcy5wYXJhbWV0ZXJzLnBhcmFtZXRlclZhbHVlcz8uZmluZCgocGFyYW1ldGVyVmFsdWUpID0+IHBhcmFtZXRlclZhbHVlLm5hbWUgPT09IHBhcmFtZXRlci5uYW1lKSB8fFxuXHRcdFx0XHRcdHBhcmFtZXRlcj8uYW5ub3RhdGlvbnM/LlVJPy5QYXJhbWV0ZXJEZWZhdWx0VmFsdWU/LnZhbHVlT2YoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogIEZvcm1hdHMgdGhlIHZhbHVlIHByb3ZpZGVkIHdpdGggYSBub24gcmVsZXZhbnQgdHlwZS5cblx0ICogQHBhcmFtIHBhcmFtZXRlciBUaGUgcGFyYW1ldGVyXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydFxuXHQgKiBAcmV0dXJucyBUaGUgY29udmVydGVkIHZhbHVlXG5cdCAqL1xuXHRwcml2YXRlIGFzeW5jIGNvbnZlcnRWYWx1ZShcblx0XHRwYXJhbWV0ZXI6IEVkbUFjdGlvblBhcmFtZXRlcixcblx0XHR2YWx1ZT86IEJhc2VUeXBlUGFyYW1ldGVyIHwgbnVsbFxuXHQpOiBQcm9taXNlPEJhc2VUeXBlUGFyYW1ldGVyIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHRcdGNvbnN0IFR5cGVNYXAgPSAoYXdhaXQgaW1wb3J0KFwic2FwL3VpL21kYy9vZGF0YS92NC9UeXBlTWFwXCIpKS5kZWZhdWx0O1xuXHRcdGNvbnN0IHBhcmFtZXRlclR5cGUgPSBUeXBlTWFwLmdldEJhc2VUeXBlKHBhcmFtZXRlci50eXBlKTtcblx0XHRjb25zdCB0eXBlSW5zdGFuY2UgPSBUeXBlTWFwLmdldERhdGFUeXBlSW5zdGFuY2UocGFyYW1ldGVyVHlwZSk7XG5cdFx0cmV0dXJuIHR5cGVJbnN0YW5jZS5wYXJzZVZhbHVlKHZhbHVlLCBcInN0cmluZ1wiKTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQWFxQkEsbUJBQW1CO0lB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
@@ -155,6 +155,7 @@ export default class OperationParameters {
155
155
  this.parameters.messageHandler
156
156
  );
157
157
  await this.parameterDialog.createDialog();
158
+ this.resetParameterDialogState(); // Ensure clean state for new dialog
158
159
  this.parameterDialog.openDialog();
159
160
  }
160
161
  return this.parameterDialog.waitForParametersValues();