@sap/open.fe 1.99.0 → 1.100.0

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 (969) hide show
  1. package/package.json +1 -1
  2. package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
  3. package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
  4. package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +1748 -1813
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +2 -3
  6. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.ts +1801 -0
  7. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter-dbg.js +77 -32
  8. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.js +2 -3
  9. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.ts +26 -0
  10. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +43 -53
  11. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +2 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.ts +39 -0
  13. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +31 -38
  14. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +8 -9
  15. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js.map +3 -3
  16. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +23 -71
  17. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +4 -4
  18. package/packages/sap.fe.common/src/sap/fe/common/library.js +4 -5
  19. package/packages/sap.fe.common/src/sap/fe/common/library.ts +35 -0
  20. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  21. package/packages/sap.fe.common/src/sap/fe/common/resources.json +54 -32
  22. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  23. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  24. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.jsmeta.json +1 -1
  25. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  26. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  27. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  28. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +1 -69
  29. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
  30. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.ts +0 -70
  31. package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +388 -399
  32. package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +2 -3
  33. package/packages/sap.fe.core/src/sap/fe/core/AppComponent.ts +403 -0
  34. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +127 -158
  35. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +1 -1
  36. package/packages/sap.fe.core/src/sap/fe/core/BaseController-dbg.js +82 -58
  37. package/packages/sap.fe.core/src/sap/fe/core/BaseController.js +2 -3
  38. package/packages/sap.fe.core/src/sap/fe/core/BaseController.ts +68 -0
  39. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +111 -20
  40. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
  41. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.ts +131 -32
  42. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +278 -274
  43. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +2 -3
  44. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.ts +250 -0
  45. package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +157 -29
  46. package/packages/sap.fe.core/src/sap/fe/core/PageController.js +1 -1
  47. package/packages/sap.fe.core/src/sap/fe/core/PageController.ts +60 -32
  48. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +694 -756
  49. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
  50. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.ts +11 -9
  51. package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +21 -31
  52. package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +1 -1
  53. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
  54. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.ts +10 -3
  55. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +20 -38
  56. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +1 -1
  57. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.ts +1 -1
  58. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1354 -1370
  59. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
  60. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.ts +33 -22
  61. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync-dbg.js +392 -0
  62. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.js +5 -0
  63. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  64. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon-dbg.js +136 -0
  65. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +5 -0
  66. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  67. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage-dbg.js +262 -0
  68. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.js +5 -0
  69. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  70. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  71. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  72. package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +30 -68
  73. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +1 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.ts +44 -71
  75. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +55 -36
  76. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
  77. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.ts +66 -46
  78. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +34 -15
  79. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
  80. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.ts +48 -18
  81. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +17 -4
  82. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +1 -1
  83. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.ts +21 -4
  84. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata-dbg.js +69 -66
  85. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +2 -3
  86. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  87. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1593 -1669
  88. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +2 -3
  89. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  90. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +79 -54
  91. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -3
  92. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  93. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +718 -779
  94. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +2 -3
  95. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  96. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +796 -816
  97. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -3
  98. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  99. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +1004 -1005
  100. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -3
  101. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  102. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +487 -521
  103. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
  104. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
  105. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +141 -169
  106. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +2 -3
  107. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  108. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +233 -244
  109. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -3
  110. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  111. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +301 -336
  112. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  113. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
  114. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +188 -175
  115. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +2 -3
  116. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  117. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +157 -149
  118. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +2 -3
  119. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  120. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +144 -125
  121. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +2 -3
  122. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  123. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +7 -6
  124. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.js +2 -3
  125. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  126. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +230 -268
  127. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +2 -3
  128. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  129. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +592 -633
  130. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  131. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
  132. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +788 -806
  133. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +2 -3
  134. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  135. package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  136. package/packages/sap.fe.core/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  137. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution-dbg.js +67 -66
  138. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.js +2 -3
  139. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  140. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +90 -75
  141. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.js +2 -3
  142. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  143. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +130 -125
  144. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -3
  145. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  146. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +103 -112
  147. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +2 -3
  148. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  149. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +122 -135
  150. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +2 -3
  151. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  152. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar-dbg.js +162 -159
  153. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.js +2 -3
  154. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.ts +143 -0
  155. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +45 -39
  156. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +2 -3
  157. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  158. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -42
  159. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -2
  160. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  161. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +126 -116
  162. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -3
  163. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  164. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +241 -255
  165. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -3
  166. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  167. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -141
  168. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -3
  169. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  170. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +335 -322
  171. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -3
  172. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  173. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +74 -74
  174. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -3
  175. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  176. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +348 -379
  177. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
  178. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  179. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +12 -1
  180. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  181. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
  182. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +354 -378
  183. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  184. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  185. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +6 -4
  186. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  187. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  188. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +1 -1
  189. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  190. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +26 -12
  191. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  192. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
  193. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +2 -2
  194. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  195. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
  196. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +1 -1
  197. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
  198. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -23
  199. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  200. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
  201. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +118 -53
  202. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  203. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
  204. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +161 -207
  205. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  206. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
  207. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +115 -133
  208. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  209. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +20 -6
  210. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
  211. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  212. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +12 -1
  213. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  214. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key-dbg.js +42 -57
  215. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.js +1 -1
  216. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  217. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +25 -4
  218. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  219. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
  220. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +10 -4
  221. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  222. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
  223. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +7 -5
  224. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  225. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  226. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +92 -98
  227. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -3
  228. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  229. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +2 -3
  230. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +3 -3
  231. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +104 -0
  232. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.js +5 -0
  233. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  234. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +53 -2
  235. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  236. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  237. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component-dbg.js +50 -54
  238. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.js +2 -3
  239. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.ts +48 -0
  240. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  241. package/packages/sap.fe.core/src/sap/fe/core/fpm/resources.json +7 -3
  242. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +323 -309
  243. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  244. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  245. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +7 -7
  246. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
  247. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  248. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +186 -62
  249. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +1 -1
  250. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
  251. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +5 -4
  252. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  253. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  254. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +1 -1
  255. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  256. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +601 -684
  257. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +2 -3
  258. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  259. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +25 -1
  260. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  261. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
  262. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +5 -1
  263. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  264. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
  265. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +426 -451
  266. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +36 -32
  267. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +3 -3
  268. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +644 -738
  269. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
  270. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +24 -35
  271. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +2 -2
  272. package/packages/sap.fe.core/src/sap/fe/core/library.js +2 -3
  273. package/packages/sap.fe.core/src/sap/fe/core/library.support.js +22 -33
  274. package/packages/sap.fe.core/src/sap/fe/core/library.support.ts +23 -0
  275. package/packages/sap.fe.core/src/sap/fe/core/library.ts +420 -0
  276. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  277. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +5 -3
  278. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  279. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
  280. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +22 -5
  281. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +27 -7
  282. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +27 -7
  283. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +27 -7
  284. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +27 -7
  285. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +27 -7
  286. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +27 -7
  287. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +27 -7
  288. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +27 -7
  289. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +27 -7
  290. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
  291. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
  292. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
  293. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
  294. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +27 -7
  295. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
  296. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +27 -7
  297. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +28 -8
  298. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +28 -8
  299. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
  300. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +27 -7
  301. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +27 -7
  302. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +27 -7
  303. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +27 -7
  304. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +27 -7
  305. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +27 -7
  306. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +26 -6
  307. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +27 -7
  308. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +27 -7
  309. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +27 -7
  310. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +28 -8
  311. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +27 -7
  312. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +27 -7
  313. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +27 -7
  314. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +27 -7
  315. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +28 -8
  316. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
  317. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +27 -7
  318. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +27 -7
  319. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +27 -7
  320. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +27 -7
  321. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +27 -7
  322. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +27 -7
  323. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +26 -6
  324. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +30 -10
  325. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +27 -7
  326. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +27 -7
  327. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
  328. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
  329. package/packages/sap.fe.core/src/sap/fe/core/resources.json +745 -384
  330. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +45 -71
  331. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
  332. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +154 -192
  333. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  334. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
  335. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +66 -92
  336. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  337. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  338. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +284 -339
  339. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  340. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
  341. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +67 -102
  342. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  343. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
  344. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +754 -814
  345. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  346. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
  347. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +649 -736
  348. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
  349. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
  350. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +567 -592
  351. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  352. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
  353. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +354 -386
  354. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  355. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
  356. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +1 -1
  357. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  358. package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper-dbg.js +1 -1
  359. package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper.ts +1 -1
  360. package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics-dbg.js +36 -48
  361. package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics.js +1 -1
  362. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +93 -85
  363. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  364. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
  365. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +25 -32
  366. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
  367. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  368. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +2 -2
  369. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.js +1 -1
  370. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  371. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
  372. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
  373. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +37 -24
  374. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1664 -1
  375. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  376. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
  377. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
  378. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  379. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +59 -0
  380. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/RootEntity.json +1 -1
  381. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/Component.js +33 -0
  382. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.controller.js +34 -0
  383. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.view.xml +18 -0
  384. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/Entities.json +6 -0
  385. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/service.cds +6 -0
  386. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/manifest.json +68 -0
  387. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldMessages.html +37 -0
  388. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.controller.js +1 -0
  389. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +7 -2
  390. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +9 -3
  391. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.js +23 -0
  392. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.ts +11 -0
  393. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/service.cds +11 -23
  394. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/Component.js +40 -0
  395. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.controller.js +35 -0
  396. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.view.xml +21 -0
  397. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/RootEntity.json +82 -0
  398. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/service.cds +82 -0
  399. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/manifest.json +78 -0
  400. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableMessages.html +37 -0
  401. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/ChildEntity.json +5 -4
  402. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +3 -0
  403. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/App.view.xml +1 -1
  404. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.js +1 -169
  405. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.ts +0 -212
  406. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +2305 -119
  407. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.ts +2206 -67
  408. package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.js +40 -0
  409. package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.ts +34 -0
  410. package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.js +114 -0
  411. package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.ts +114 -0
  412. package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.js +113 -0
  413. package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.ts +78 -0
  414. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.js +599 -1
  415. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.ts +614 -0
  416. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +23 -5
  417. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +26 -14
  418. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +87 -1
  419. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.ts +82 -1
  420. package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.js +124 -0
  421. package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.ts +141 -0
  422. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +34768 -67
  423. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.js +170 -0
  424. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.ts +155 -0
  425. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.js +101 -0
  426. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.ts +94 -0
  427. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.js +82 -0
  428. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.ts +77 -0
  429. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.js +2 -2
  430. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.ts +1 -1
  431. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.js +7 -2
  432. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.ts +7 -0
  433. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.js +104 -2
  434. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.ts +96 -1
  435. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.js +83 -0
  436. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.ts +79 -0
  437. package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.js +72 -0
  438. package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.ts +64 -0
  439. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +619 -3
  440. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +668 -5
  441. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.js +297 -1
  442. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.ts +276 -6
  443. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.js +149 -0
  444. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.ts +142 -0
  445. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.js +776 -182
  446. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.ts +181 -3
  447. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +19 -43
  448. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.js +2 -18
  449. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.ts +8 -6
  450. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +5 -27
  451. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +1 -1
  452. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.js +1 -1
  453. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.ts +1 -1
  454. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.js +86 -0
  455. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.ts +80 -0
  456. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -1
  457. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +1 -1
  458. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +2 -18
  459. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +1 -1
  460. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.js +45 -0
  461. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.ts +29 -0
  462. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.js +51 -1
  463. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.ts +47 -1
  464. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/__snapshots__/FilterBar.spec.ts.snap +3 -0
  465. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +2 -2
  466. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +1 -1
  467. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.js +25 -36
  468. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.ts +26 -36
  469. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +3 -3
  470. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +2 -2
  471. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +1 -1
  472. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +6 -5
  473. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +133 -9
  474. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +171 -8
  475. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +174 -210
  476. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +294 -230
  477. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Filter.spec.ts.snap +3 -1
  478. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.js +237 -0
  479. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.ts +246 -0
  480. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.js +9993 -0
  481. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.ts +11352 -0
  482. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.js +460 -0
  483. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.ts +543 -0
  484. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.js +616 -0
  485. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.ts +711 -0
  486. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/manifest.json +887 -0
  487. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.js +393 -0
  488. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.ts +434 -0
  489. package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.js +31 -0
  490. package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.ts +12 -0
  491. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Filter.cds +27 -0
  492. package/packages/sap.fe.core/test/sap/fe/core/jest/data/MassEditHelper.cds +12 -0
  493. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/manifest.json +150 -0
  494. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata.xml +365 -0
  495. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_groupable_options.xml +96 -0
  496. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_textArrangement.xml +102 -0
  497. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_withPV.xml +359 -0
  498. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Table.cds +89 -27
  499. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.js +421 -0
  500. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.ts +413 -0
  501. package/packages/sap.fe.core/test/sap/fe/core/jest/data/aggregatedSD/metadata.xml +3767 -0
  502. package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/manifest.json +185 -0
  503. package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/metadata.xml +1534 -0
  504. package/packages/sap.fe.core/test/sap/fe/core/jest/data/manifest.json +887 -0
  505. package/packages/sap.fe.core/test/sap/fe/core/jest/data/salesOrderMetadata_qunit.xml +4995 -0
  506. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.js +48 -0
  507. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.ts +48 -0
  508. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +131 -51
  509. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +81 -31
  510. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +13 -7
  511. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +12 -6
  512. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.js +17 -3
  513. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.ts +24 -7
  514. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +61 -1
  515. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.ts +59 -0
  516. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.js +3 -3
  517. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.ts +1 -2
  518. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.js +4 -4
  519. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.ts +6 -3
  520. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.js +1 -1
  521. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.ts +1 -1
  522. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/AppStartupHelper.spec.ts.snap +19 -0
  523. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/MassEditHelper.spec.ts.snap +0 -73
  524. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.js +11 -1
  525. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.ts +15 -0
  526. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/__snapshots__/ChangePageConfiguration.spec.ts.snap +30 -0
  527. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +49 -5
  528. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +60 -5
  529. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.js +384 -0
  530. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.ts +427 -0
  531. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +132 -2
  532. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +156 -2
  533. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.js +273 -0
  534. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.ts +402 -0
  535. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.js +45 -0
  536. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.ts +40 -0
  537. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +2 -1
  538. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -102
  539. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.100.json +326 -0
  540. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.99.json +0 -22
  541. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  542. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  543. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +2 -2
  544. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
  545. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +22 -43
  546. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
  547. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.ts +3 -3
  548. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +14 -24
  549. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  550. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +1 -1
  551. package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.fragment.xml +3 -2
  552. package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +16 -18
  553. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +162 -100
  554. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
  555. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +93 -16
  556. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +2 -1
  557. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +16 -8
  558. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
  559. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +58 -83
  560. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +1 -1
  561. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +16 -2
  562. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +112 -192
  563. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  564. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +1 -1
  565. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
  566. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI-dbg.js +4 -20
  567. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.js +1 -1
  568. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +1 -1
  569. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI-dbg.js +10 -31
  570. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.js +1 -1
  571. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +147 -162
  572. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
  573. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +32 -8
  574. package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +5 -0
  575. package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +1 -1
  576. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +56 -74
  577. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  578. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +1 -1
  579. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +90 -39
  580. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  581. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +284 -251
  582. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  583. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +126 -14
  584. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +38 -101
  585. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  586. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +68 -6
  587. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  588. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +72 -12
  589. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  590. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +67 -10
  591. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -12
  592. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  593. package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState.fragment.xml +1 -1
  594. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +1 -3
  595. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +1 -1
  596. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +62 -39
  597. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
  598. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue-dbg.js +104 -50
  599. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.js +2 -3
  600. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.ts +68 -0
  601. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range-dbg.js +83 -35
  602. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.js +2 -3
  603. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.ts +66 -0
  604. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value-dbg.js +327 -216
  605. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.js +2 -3
  606. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.ts +303 -0
  607. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollaborationAvatar.fragment.xml +15 -0
  608. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +14 -2
  609. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
  610. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +18 -2
  611. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +12 -29
  612. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +9 -0
  613. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
  614. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -0
  615. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +529 -533
  616. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +2 -3
  617. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.ts +568 -0
  618. package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.fragment.xml +0 -1
  619. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +3 -3
  620. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.js +1 -1
  621. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +3 -2
  622. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldContent.fragment.xml +3 -1
  623. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +13 -3
  624. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +4 -1
  625. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +1 -0
  626. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +1 -0
  627. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +38 -4
  628. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +2 -2
  629. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +3 -3
  630. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/MdcFieldWithValueHelp.fragment.xml +1 -2
  631. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +55 -11
  632. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +1 -1
  633. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +3 -3
  634. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +9 -2
  635. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +9 -2
  636. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +12 -3
  637. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +26 -5
  638. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +10 -2
  639. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/RatingIndicator.fragment.xml +9 -2
  640. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +9 -2
  641. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/fragments/ObjectIdentifierContent.fragment.xml +4 -0
  642. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +31 -2
  643. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  644. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +20 -0
  645. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +2 -2
  646. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +1 -1
  647. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +7 -9
  648. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +90 -118
  649. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  650. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  651. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +13 -12
  652. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +2 -2
  653. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +185 -214
  654. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  655. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  656. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  657. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +4 -1
  658. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +3 -1
  659. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +3 -1
  660. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +3 -1
  661. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +3 -1
  662. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +3 -1
  663. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +3 -1
  664. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +4 -2
  665. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +3 -1
  666. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +3 -1
  667. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +3 -1
  668. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -1
  669. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +3 -1
  670. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +3 -1
  671. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +3 -1
  672. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +3 -1
  673. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +3 -1
  674. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +3 -1
  675. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +3 -1
  676. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +3 -1
  677. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +3 -1
  678. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +3 -1
  679. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  680. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +4 -2
  681. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +3 -1
  682. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +3 -1
  683. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -1
  684. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +3 -1
  685. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +3 -1
  686. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +3 -1
  687. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +3 -1
  688. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +3 -1
  689. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +3 -1
  690. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +3 -1
  691. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +3 -1
  692. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +3 -1
  693. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +3 -1
  694. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +3 -1
  695. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +3 -1
  696. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +3 -1
  697. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +3 -1
  698. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +3 -1
  699. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +3 -1
  700. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +3 -1
  701. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +3 -1
  702. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +3 -1
  703. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +3 -1
  704. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +3 -1
  705. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +3 -1
  706. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +273 -199
  707. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +1 -1
  708. package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +1 -1
  709. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +2 -0
  710. package/packages/sap.fe.macros/src/sap/fe/macros/table/CreationRow.fragment.xml +13 -20
  711. package/packages/sap.fe.macros/src/sap/fe/macros/table/CustomColumn.fragment.xml +1 -0
  712. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +5 -110
  713. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  714. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +98 -78
  715. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  716. package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata-dbg.js +1 -1
  717. package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata.js +1 -1
  718. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +211 -10
  719. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  720. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
  721. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  722. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -45
  723. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +0 -60
  724. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.js +78 -0
  725. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.ts +71 -0
  726. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +35 -1
  727. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +44 -0
  728. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarDelegate.spec.js +0 -76
  729. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.js +27 -1
  730. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.ts +28 -0
  731. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.js +10 -12
  732. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.ts +10 -10
  733. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterUtils.spec.js +129 -15
  734. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.js +13 -39
  735. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.ts +2 -2
  736. package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.js +119 -0
  737. package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.ts +113 -0
  738. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.js +166 -2
  739. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.ts +190 -3
  740. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +457 -389
  741. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +504 -425
  742. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +104 -2
  743. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +158 -1
  744. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +0 -6
  745. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +5 -5
  746. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +114 -25
  747. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithSemanticKey.spec.ts.snap +40 -40
  748. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithValueHelp.spec.ts.snap +4 -8
  749. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +19 -19
  750. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +3 -5
  751. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +12 -0
  752. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +89 -90
  753. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/Table.spec.ts.snap +1314 -58
  754. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableMacro.spec.ts.snap +459 -0
  755. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +18 -2
  756. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +6 -1
  757. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +107 -106
  758. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableAPI.cds +197 -0
  759. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +33 -4
  760. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +30 -4
  761. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +72 -29
  762. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +86 -18
  763. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +51 -27
  764. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +55 -9
  765. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +46 -6
  766. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +28 -1
  767. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +170 -43
  768. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +131 -15
  769. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +90 -53
  770. package/packages/sap.fe.macros/test/sap/fe/macros/jest/tsx/TestTSX.spec.tsx +2 -1
  771. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
  772. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +1 -99
  773. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
  774. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +4 -4
  775. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +4 -4
  776. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueHelpTemplating.qunit.js +15 -0
  777. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +265 -106
  778. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/metadata/simpleMetadata.js +38 -0
  779. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.100.json +372 -0
  780. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.99.json +0 -11
  781. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  782. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  783. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  784. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  785. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js.map +2 -2
  786. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
  787. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +2 -2
  788. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  789. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  790. package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +8 -8
  791. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  792. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  793. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  794. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  795. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  796. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  797. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  798. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js.map +2 -2
  799. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
  800. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +2 -2
  801. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  802. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  803. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +27 -27
  804. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.source.less +316 -15
  805. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/resources.json +1 -1
  806. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.less +315 -14
  807. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.source.less +315 -14
  808. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/resources.json +2 -2
  809. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.less +316 -15
  810. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.source.less +316 -15
  811. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/resources.json +2 -2
  812. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.less +316 -15
  813. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.source.less +316 -15
  814. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/resources.json +2 -2
  815. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.less +315 -14
  816. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.source.less +315 -14
  817. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/resources.json +2 -2
  818. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.less +317 -16
  819. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.source.less +317 -16
  820. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/resources.json +2 -2
  821. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.less +317 -16
  822. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.source.less +317 -16
  823. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/resources.json +2 -2
  824. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.less +316 -15
  825. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.source.less +316 -15
  826. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/resources.json +2 -2
  827. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.less +316 -15
  828. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.source.less +316 -15
  829. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/resources.json +2 -2
  830. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.less +400 -99
  831. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.source.less +400 -99
  832. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/resources.json +2 -2
  833. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  834. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  835. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  836. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  837. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  838. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +1 -1
  839. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  840. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  841. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +7 -1
  842. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +1 -1
  843. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +22 -21
  844. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +13 -18
  845. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  846. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  847. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +7 -7
  848. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.xml +3 -3
  849. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +50 -9
  850. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  851. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +1 -12
  852. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  853. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
  854. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +50 -17
  855. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  856. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +7 -1
  857. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
  858. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox-dbg.designtime.js +3 -0
  859. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  860. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  861. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +19 -15
  862. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +36 -0
  863. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +1 -1
  864. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -0
  865. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +1 -0
  866. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +3 -1
  867. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
  868. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +3 -1
  869. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
  870. package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js +1 -1
  871. package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js.map +2 -2
  872. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  873. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +4 -3
  874. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +2 -2
  875. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +22 -21
  876. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  877. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  878. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +14 -14
  879. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +0 -15
  880. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +0 -15
  881. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +0 -15
  882. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +0 -15
  883. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +0 -15
  884. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +0 -15
  885. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +0 -15
  886. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +0 -15
  887. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +0 -15
  888. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +0 -15
  889. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +0 -15
  890. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +0 -15
  891. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +0 -15
  892. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +0 -15
  893. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +0 -15
  894. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +0 -15
  895. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +0 -15
  896. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +0 -15
  897. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +0 -15
  898. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +0 -15
  899. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +0 -15
  900. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +0 -15
  901. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +0 -15
  902. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +0 -15
  903. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +0 -15
  904. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +0 -15
  905. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +0 -15
  906. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +0 -15
  907. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +0 -15
  908. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +0 -15
  909. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +0 -15
  910. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +0 -15
  911. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +0 -15
  912. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +0 -15
  913. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +0 -15
  914. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +0 -15
  915. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +0 -15
  916. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +0 -15
  917. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +0 -15
  918. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +0 -15
  919. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +0 -15
  920. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +0 -15
  921. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +0 -15
  922. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +0 -15
  923. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +0 -15
  924. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +0 -15
  925. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -15
  926. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +0 -15
  927. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +115 -89
  928. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  929. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +353 -1
  930. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  931. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -1
  932. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  933. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.js +1 -1
  934. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.ts +3 -3
  935. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.js +1 -1
  936. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.ts +4 -4
  937. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +1 -1
  938. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.ts +2 -2
  939. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +2 -1
  940. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +2 -1
  941. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +7 -7
  942. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +30 -61
  943. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +1 -1
  944. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.100.json +192 -0
  945. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.99.json +0 -11
  946. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  947. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  948. package/packages/sap.fe.test/src/sap/fe/test/FeMocks-dbg.js +1 -1
  949. package/packages/sap.fe.test/src/sap/fe/test/FeMocks.ts +8 -8
  950. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +6 -4
  951. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  952. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +10 -6
  953. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +126 -203
  954. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  955. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +17 -2
  956. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI-dbg.js +9 -1
  957. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI.js +1 -1
  958. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  959. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +2 -2
  960. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +2 -2
  961. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +9 -18
  962. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
  963. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  964. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  965. package/packages/sap.fe.test/src/sap/fe/test/resources.json +18 -18
  966. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  967. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  968. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  969. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +0 -271
@@ -17,26 +17,10 @@ sap.ui.define(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Servic
17
17
 
18
18
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
19
 
20
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
21
-
22
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
23
-
24
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
25
-
26
20
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
27
21
 
28
22
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
29
23
 
30
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
31
-
32
- function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
33
-
34
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
35
-
36
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
37
-
38
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
39
-
40
24
  /**
41
25
  * Mock implementation of the ShellService for OpenFE
42
26
  *
@@ -46,163 +30,131 @@ sap.ui.define(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Servic
46
30
  var ShellServiceMock = /*#__PURE__*/function (_Service) {
47
31
  _inherits(ShellServiceMock, _Service);
48
32
 
49
- var _super = _createSuper(ShellServiceMock);
50
-
51
33
  function ShellServiceMock() {
52
- _classCallCheck(this, ShellServiceMock);
53
-
54
- return _super.apply(this, arguments);
34
+ return _Service.apply(this, arguments) || this;
55
35
  }
56
36
 
57
- _createClass(ShellServiceMock, [{
58
- key: "init",
59
- value: function init() {
60
- this.initPromise = Promise.resolve(this);
61
- this.instanceType = "mock";
62
- }
63
- }, {
64
- key: "getLinks",
65
- value: function getLinks(oArgs) {
66
- return Promise.resolve([]);
67
- }
68
- }, {
69
- key: "getLinksWithCache",
70
- value: function getLinksWithCache(oArgs) {
71
- return Promise.resolve([]);
72
- }
73
- }, {
74
- key: "toExternal",
75
- value: function toExternal(oNavArgumentsArr, oComponent) {
76
- return;
77
- }
78
- }, {
79
- key: "getStartupAppState",
80
- value: function getStartupAppState(oArgs) {
81
- return Promise.resolve(null);
82
- }
83
- }, {
84
- key: "backToPreviousApp",
85
- value: function backToPreviousApp() {
86
- return;
87
- }
88
- }, {
89
- key: "hrefForExternal",
90
- value: function hrefForExternal(oArgs, oComponent, bAsync) {
91
- return "";
92
- }
93
- }, {
94
- key: "getAppState",
95
- value: function getAppState(oComponent, sAppStateKey) {
96
- return Promise.resolve({});
97
- }
98
- }, {
99
- key: "createEmptyAppState",
100
- value: function createEmptyAppState(oComponent) {
101
- return Promise.resolve({});
102
- }
103
- }, {
104
- key: "isNavigationSupported",
105
- value: function isNavigationSupported(oNavArgumentsArr, oComponent) {
106
- return Promise.resolve({});
107
- }
108
- }, {
109
- key: "isInitialNavigation",
110
- value: function isInitialNavigation() {
111
- return false;
112
- }
113
- }, {
114
- key: "expandCompactHash",
115
- value: function expandCompactHash(sHashFragment) {
116
- return Promise.resolve({});
117
- }
118
- }, {
119
- key: "parseShellHash",
120
- value: function parseShellHash(sHash) {
121
- return {};
122
- }
123
- }, {
124
- key: "splitHash",
125
- value: function splitHash(sHash) {
126
- return Promise.resolve({});
127
- }
128
- }, {
129
- key: "constructShellHash",
130
- value: function constructShellHash(oNewShellHash) {
37
+ var _proto = ShellServiceMock.prototype;
38
+
39
+ _proto.init = function init() {
40
+ this.initPromise = Promise.resolve(this);
41
+ this.instanceType = "mock";
42
+ };
43
+
44
+ _proto.getLinks = function getLinks(oArgs) {
45
+ return Promise.resolve([]);
46
+ };
47
+
48
+ _proto.getLinksWithCache = function getLinksWithCache(oArgs) {
49
+ return Promise.resolve([]);
50
+ };
51
+
52
+ _proto.toExternal = function toExternal(oNavArgumentsArr, oComponent) {
53
+ return;
54
+ };
55
+
56
+ _proto.getStartupAppState = function getStartupAppState(oArgs) {
57
+ return Promise.resolve(null);
58
+ };
59
+
60
+ _proto.backToPreviousApp = function backToPreviousApp() {
61
+ return;
62
+ };
63
+
64
+ _proto.hrefForExternal = function hrefForExternal(oArgs, oComponent, bAsync) {
65
+ return "";
66
+ };
67
+
68
+ _proto.getAppState = function getAppState(oComponent, sAppStateKey) {
69
+ return Promise.resolve({});
70
+ };
71
+
72
+ _proto.createEmptyAppState = function createEmptyAppState(oComponent) {
73
+ return Promise.resolve({});
74
+ };
75
+
76
+ _proto.isNavigationSupported = function isNavigationSupported(oNavArgumentsArr, oComponent) {
77
+ return Promise.resolve({});
78
+ };
79
+
80
+ _proto.isInitialNavigation = function isInitialNavigation() {
81
+ return false;
82
+ };
83
+
84
+ _proto.expandCompactHash = function expandCompactHash(sHashFragment) {
85
+ return Promise.resolve({});
86
+ };
87
+
88
+ _proto.parseShellHash = function parseShellHash(sHash) {
89
+ return {};
90
+ };
91
+
92
+ _proto.splitHash = function splitHash(sHash) {
93
+ return Promise.resolve({});
94
+ };
95
+
96
+ _proto.constructShellHash = function constructShellHash(oNewShellHash) {
97
+ return "";
98
+ };
99
+
100
+ _proto.setDirtyFlag = function setDirtyFlag(bDirty) {
101
+ return;
102
+ };
103
+
104
+ _proto.registerDirtyStateProvider = function registerDirtyStateProvider(fnDirtyStateProvider) {
105
+ return;
106
+ };
107
+
108
+ _proto.deregisterDirtyStateProvider = function deregisterDirtyStateProvider(fnDirtyStateProvider) {
109
+ return;
110
+ };
111
+
112
+ _proto.createRenderer = function createRenderer() {
113
+ return {};
114
+ };
115
+
116
+ _proto.getUser = function getUser() {
117
+ return {};
118
+ };
119
+
120
+ _proto.hasUShell = function hasUShell() {
121
+ return false;
122
+ };
123
+
124
+ _proto.registerNavigationFilter = function registerNavigationFilter(fnNavFilter) {
125
+ return;
126
+ };
127
+
128
+ _proto.unregisterNavigationFilter = function unregisterNavigationFilter(fnNavFilter) {
129
+ return;
130
+ };
131
+
132
+ _proto.setBackNavigation = function setBackNavigation(fnCallBack) {
133
+ return;
134
+ };
135
+
136
+ _proto.setHierarchy = function setHierarchy(aHierarchyLevels) {
137
+ return;
138
+ };
139
+
140
+ _proto.setTitle = function setTitle(sTitle) {
141
+ return;
142
+ };
143
+
144
+ _proto.getContentDensity = function getContentDensity() {
145
+ // in case there is no shell we probably need to look at the classes being defined on the body
146
+ if (document.body.classList.contains("sapUiSizeCozy")) {
147
+ return "cozy";
148
+ } else if (document.body.classList.contains("sapUiSizeCompact")) {
149
+ return "compact";
150
+ } else {
131
151
  return "";
132
152
  }
133
- }, {
134
- key: "setDirtyFlag",
135
- value: function setDirtyFlag(bDirty) {
136
- return;
137
- }
138
- }, {
139
- key: "registerDirtyStateProvider",
140
- value: function registerDirtyStateProvider(fnDirtyStateProvider) {
141
- return;
142
- }
143
- }, {
144
- key: "deregisterDirtyStateProvider",
145
- value: function deregisterDirtyStateProvider(fnDirtyStateProvider) {
146
- return;
147
- }
148
- }, {
149
- key: "createRenderer",
150
- value: function createRenderer() {
151
- return {};
152
- }
153
- }, {
154
- key: "getUser",
155
- value: function getUser() {
156
- return {};
157
- }
158
- }, {
159
- key: "hasUShell",
160
- value: function hasUShell() {
161
- return false;
162
- }
163
- }, {
164
- key: "registerNavigationFilter",
165
- value: function registerNavigationFilter(fnNavFilter) {
166
- return;
167
- }
168
- }, {
169
- key: "unregisterNavigationFilter",
170
- value: function unregisterNavigationFilter(fnNavFilter) {
171
- return;
172
- }
173
- }, {
174
- key: "setBackNavigation",
175
- value: function setBackNavigation(fnCallBack) {
176
- return;
177
- }
178
- }, {
179
- key: "setHierarchy",
180
- value: function setHierarchy(aHierarchyLevels) {
181
- return;
182
- }
183
- }, {
184
- key: "setTitle",
185
- value: function setTitle(sTitle) {
186
- return;
187
- }
188
- }, {
189
- key: "getContentDensity",
190
- value: function getContentDensity() {
191
- // in case there is no shell we probably need to look at the classes being defined on the body
192
- if (document.body.classList.contains("sapUiSizeCozy")) {
193
- return "cozy";
194
- } else if (document.body.classList.contains("sapUiSizeCompact")) {
195
- return "compact";
196
- } else {
197
- return "";
198
- }
199
- }
200
- }, {
201
- key: "getPrimaryIntent",
202
- value: function getPrimaryIntent(sSemanticObject, mParameters) {
203
- return Promise.resolve();
204
- }
205
- }]);
153
+ };
154
+
155
+ _proto.getPrimaryIntent = function getPrimaryIntent(sSemanticObject, mParameters) {
156
+ return Promise.resolve();
157
+ };
206
158
 
207
159
  return ShellServiceMock;
208
160
  }(Service);
@@ -237,564 +189,531 @@ sap.ui.define(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Servic
237
189
  var ShellServices = /*#__PURE__*/function (_Service2) {
238
190
  _inherits(ShellServices, _Service2);
239
191
 
240
- var _super2 = _createSuper(ShellServices);
241
-
242
192
  function ShellServices() {
243
- _classCallCheck(this, ShellServices);
244
-
245
- return _super2.apply(this, arguments);
193
+ return _Service2.apply(this, arguments) || this;
246
194
  }
247
195
 
248
- _createClass(ShellServices, [{
249
- key: "init",
250
- value: // !: means that we know it will be assigned before usage
251
- function init() {
252
- var _this = this;
253
-
254
- var oContext = this.getContext();
255
- var oComponent = oContext.scopeObject;
256
- this.oShellContainer = oContext.settings.shellContainer;
257
- this.instanceType = "real";
258
- this.linksCache = {};
259
-
260
- this.fnFindSemanticObjectsInCache = function (oArgs) {
261
- var _oArgs = oArgs;
262
- var aCachedSemanticObjects = [];
263
- var aNonCachedSemanticObjects = [];
264
-
265
- for (var i = 0; i < _oArgs.length; i++) {
266
- if (!!_oArgs[i][0] && !!_oArgs[i][0].semanticObject) {
267
- if (this.linksCache[_oArgs[i][0].semanticObject]) {
268
- aCachedSemanticObjects.push(this.linksCache[_oArgs[i][0].semanticObject].links);
269
- Object.defineProperty(oArgs[i][0], "links", {
270
- value: this.linksCache[_oArgs[i][0].semanticObject].links
271
- });
272
- } else {
273
- aNonCachedSemanticObjects.push(_oArgs[i]);
274
- }
196
+ var _proto2 = ShellServices.prototype;
197
+
198
+ // !: means that we know it will be assigned before usage
199
+ _proto2.init = function init() {
200
+ var _this = this;
201
+
202
+ var oContext = this.getContext();
203
+ var oComponent = oContext.scopeObject;
204
+ this.oShellContainer = oContext.settings.shellContainer;
205
+ this.instanceType = "real";
206
+ this.linksCache = {};
207
+
208
+ this.fnFindSemanticObjectsInCache = function (oArgs) {
209
+ var _oArgs = oArgs;
210
+ var aCachedSemanticObjects = [];
211
+ var aNonCachedSemanticObjects = [];
212
+
213
+ for (var i = 0; i < _oArgs.length; i++) {
214
+ if (!!_oArgs[i][0] && !!_oArgs[i][0].semanticObject) {
215
+ if (this.linksCache[_oArgs[i][0].semanticObject]) {
216
+ aCachedSemanticObjects.push(this.linksCache[_oArgs[i][0].semanticObject].links);
217
+ Object.defineProperty(oArgs[i][0], "links", {
218
+ value: this.linksCache[_oArgs[i][0].semanticObject].links
219
+ });
220
+ } else {
221
+ aNonCachedSemanticObjects.push(_oArgs[i]);
275
222
  }
276
223
  }
224
+ }
277
225
 
278
- return {
279
- oldArgs: oArgs,
280
- newArgs: aNonCachedSemanticObjects,
281
- cachedLinks: aCachedSemanticObjects
282
- };
226
+ return {
227
+ oldArgs: oArgs,
228
+ newArgs: aNonCachedSemanticObjects,
229
+ cachedLinks: aCachedSemanticObjects
283
230
  };
231
+ };
232
+
233
+ this.initPromise = new Promise(function (resolve, reject) {
234
+ _this.resolveFn = resolve;
235
+ _this.rejectFn = reject;
236
+ });
237
+ var oCrossAppNavServicePromise = this.oShellContainer.getServiceAsync("CrossApplicationNavigation");
238
+ var oUrlParsingServicePromise = this.oShellContainer.getServiceAsync("URLParsing");
239
+ var oShellNavigationServicePromise = this.oShellContainer.getServiceAsync("ShellNavigation");
240
+ var oShellUIServicePromise = oComponent.getService("ShellUIService");
241
+ Promise.all([oCrossAppNavServicePromise, oUrlParsingServicePromise, oShellNavigationServicePromise, oShellUIServicePromise]).then(function (_ref) {
242
+ var _ref2 = _slicedToArray(_ref, 4),
243
+ oCrossAppNavService = _ref2[0],
244
+ oUrlParsingService = _ref2[1],
245
+ oShellNavigation = _ref2[2],
246
+ oShellUIService = _ref2[3];
247
+
248
+ _this.crossAppNavService = oCrossAppNavService;
249
+ _this.urlParsingService = oUrlParsingService;
250
+ _this.shellNavigation = oShellNavigation;
251
+ _this.shellUIService = oShellUIService;
252
+
253
+ _this.resolveFn();
254
+ }).catch(this.rejectFn);
255
+ }
256
+ /**
257
+ * Retrieves the target links configured for a given semantic object & action
258
+ * Will retrieve the CrossApplicationNavigation
259
+ * service reference call the getLinks method. In case service is not available or any exception
260
+ * method throws exception error in console.
261
+ *
262
+ * @private
263
+ * @ui5-restricted
264
+ * @param {object} oArgs Check the definition of
265
+ * sap.ushell.services.CrossApplicationNavigation=>getLinks arguments
266
+ * @returns {Promise} Promise which will be resolved to target links array
267
+ */
268
+ ;
269
+
270
+ _proto2.getLinks = function getLinks(oArgs) {
271
+ var _this2 = this;
272
+
273
+ return new Promise(function (resolve, reject) {
274
+ // eslint-disable-next-line promise/catch-or-return
275
+ _this2.crossAppNavService.getLinks(oArgs).fail(function (oError) {
276
+ reject(new Error(oError + " sap.fe.core.services.NavigationServiceFactory.getLinks"));
277
+ }).then(resolve);
278
+ });
279
+ }
280
+ /**
281
+ * Retrieves the target links configured for a given semantic object & action in cache
282
+ * Will retrieve the CrossApplicationNavigation
283
+ * service reference call the getLinks method. In case service is not available or any exception
284
+ * method throws exception error in console.
285
+ *
286
+ * @private
287
+ * @ui5-restricted
288
+ * @param {object} oArgs Check the definition of
289
+ * sap.ushell.services.CrossApplicationNavigation=>getLinks arguments
290
+ * @returns {Promise} Promise which will be resolved to target links array
291
+ */
292
+ ;
293
+
294
+ _proto2.getLinksWithCache = function getLinksWithCache(oArgs) {
295
+ var _this3 = this;
296
+
297
+ return new Promise(function (resolve, reject) {
298
+ // eslint-disable-next-line promise/catch-or-return
299
+ if (oArgs.length === 0) {
300
+ resolve([]);
301
+ } else {
302
+ var aLinks;
284
303
 
285
- this.initPromise = new Promise(function (resolve, reject) {
286
- _this.resolveFn = resolve;
287
- _this.rejectFn = reject;
288
- });
289
- var oCrossAppNavServicePromise = this.oShellContainer.getServiceAsync("CrossApplicationNavigation");
290
- var oUrlParsingServicePromise = this.oShellContainer.getServiceAsync("URLParsing");
291
- var oShellNavigationServicePromise = this.oShellContainer.getServiceAsync("ShellNavigation");
292
- var oShellUIServicePromise = oComponent.getService("ShellUIService");
293
- Promise.all([oCrossAppNavServicePromise, oUrlParsingServicePromise, oShellNavigationServicePromise, oShellUIServicePromise]).then(function (_ref) {
294
- var _ref2 = _slicedToArray(_ref, 4),
295
- oCrossAppNavService = _ref2[0],
296
- oUrlParsingService = _ref2[1],
297
- oShellNavigation = _ref2[2],
298
- oShellUIService = _ref2[3];
299
-
300
- _this.crossAppNavService = oCrossAppNavService;
301
- _this.urlParsingService = oUrlParsingService;
302
- _this.shellNavigation = oShellNavigation;
303
- _this.shellUIService = oShellUIService;
304
-
305
- _this.resolveFn();
306
- }).catch(this.rejectFn);
307
- }
308
- /**
309
- * Retrieves the target links configured for a given semantic object & action
310
- * Will retrieve the CrossApplicationNavigation
311
- * service reference call the getLinks method. In case service is not available or any exception
312
- * method throws exception error in console.
313
- *
314
- * @private
315
- * @ui5-restricted
316
- * @param {object} oArgs Check the definition of
317
- * sap.ushell.services.CrossApplicationNavigation=>getLinks arguments
318
- * @returns {Promise} Promise which will be resolved to target links array
319
- */
320
-
321
- }, {
322
- key: "getLinks",
323
- value: function getLinks(oArgs) {
324
- var _this2 = this;
325
-
326
- return new Promise(function (resolve, reject) {
327
- // eslint-disable-next-line promise/catch-or-return
328
- _this2.crossAppNavService.getLinks(oArgs).fail(function (oError) {
329
- reject(new Error(oError + " sap.fe.core.services.NavigationServiceFactory.getLinks"));
330
- }).then(resolve);
331
- });
332
- }
333
- /**
334
- * Retrieves the target links configured for a given semantic object & action in cache
335
- * Will retrieve the CrossApplicationNavigation
336
- * service reference call the getLinks method. In case service is not available or any exception
337
- * method throws exception error in console.
338
- *
339
- * @private
340
- * @ui5-restricted
341
- * @param {object} oArgs Check the definition of
342
- * sap.ushell.services.CrossApplicationNavigation=>getLinks arguments
343
- * @returns {Promise} Promise which will be resolved to target links array
344
- */
345
-
346
- }, {
347
- key: "getLinksWithCache",
348
- value: function getLinksWithCache(oArgs) {
349
- var _this3 = this;
350
-
351
- return new Promise(function (resolve, reject) {
352
- // eslint-disable-next-line promise/catch-or-return
353
- if (oArgs.length === 0) {
354
- resolve([]);
355
- } else {
356
- var aLinks;
357
-
358
- var oCacheResults = _this3.fnFindSemanticObjectsInCache(oArgs);
304
+ var oCacheResults = _this3.fnFindSemanticObjectsInCache(oArgs);
359
305
 
360
- if (oCacheResults.newArgs.length === 0) {
361
- resolve(oCacheResults.cachedLinks);
362
- } else {
363
- // eslint-disable-next-line promise/catch-or-return
364
- _this3.crossAppNavService.getLinks(oCacheResults.newArgs).fail(function (oError) {
365
- reject(new Error(oError + " sap.fe.core.services.NavigationServiceFactory.getLinksWithCache"));
366
- }).then(function (aLinks) {
367
- if (aLinks.length !== 0) {
368
- var oSemanticObjectsLinks = {};
369
-
370
- for (var i = 0; i < aLinks.length; i++) {
371
- if (aLinks[i].length > 0 && oCacheResults.newArgs[i][0].links === undefined) {
372
- oSemanticObjectsLinks[oCacheResults.newArgs[i][0].semanticObject] = {
373
- links: aLinks[i]
374
- };
375
- _this3.linksCache = Object.assign(_this3.linksCache, oSemanticObjectsLinks);
376
- }
306
+ if (oCacheResults.newArgs.length === 0) {
307
+ resolve(oCacheResults.cachedLinks);
308
+ } else {
309
+ // eslint-disable-next-line promise/catch-or-return
310
+ _this3.crossAppNavService.getLinks(oCacheResults.newArgs).fail(function (oError) {
311
+ reject(new Error(oError + " sap.fe.core.services.NavigationServiceFactory.getLinksWithCache"));
312
+ }).then(function (aLinks) {
313
+ if (aLinks.length !== 0) {
314
+ var oSemanticObjectsLinks = {};
315
+
316
+ for (var i = 0; i < aLinks.length; i++) {
317
+ if (aLinks[i].length > 0 && oCacheResults.newArgs[i][0].links === undefined) {
318
+ oSemanticObjectsLinks[oCacheResults.newArgs[i][0].semanticObject] = {
319
+ links: aLinks[i]
320
+ };
321
+ _this3.linksCache = Object.assign(_this3.linksCache, oSemanticObjectsLinks);
377
322
  }
378
323
  }
324
+ }
379
325
 
380
- if (oCacheResults.cachedLinks.length === 0) {
381
- resolve(aLinks);
382
- } else {
383
- var aMergedLinks = [];
384
- var j = 0;
385
-
386
- for (var k = 0; k < oCacheResults.oldArgs.length; k++) {
387
- if (j < aLinks.length) {
388
- if (aLinks[j].length > 0 && oCacheResults.oldArgs[k][0].semanticObject === oCacheResults.newArgs[j][0].semanticObject) {
389
- aMergedLinks.push(aLinks[j]);
390
- j++;
391
- } else {
392
- aMergedLinks.push(oCacheResults.oldArgs[k][0].links);
393
- }
326
+ if (oCacheResults.cachedLinks.length === 0) {
327
+ resolve(aLinks);
328
+ } else {
329
+ var aMergedLinks = [];
330
+ var j = 0;
331
+
332
+ for (var k = 0; k < oCacheResults.oldArgs.length; k++) {
333
+ if (j < aLinks.length) {
334
+ if (aLinks[j].length > 0 && oCacheResults.oldArgs[k][0].semanticObject === oCacheResults.newArgs[j][0].semanticObject) {
335
+ aMergedLinks.push(aLinks[j]);
336
+ j++;
394
337
  } else {
395
338
  aMergedLinks.push(oCacheResults.oldArgs[k][0].links);
396
339
  }
340
+ } else {
341
+ aMergedLinks.push(oCacheResults.oldArgs[k][0].links);
397
342
  }
398
-
399
- resolve(aMergedLinks);
400
343
  }
401
- });
402
- }
344
+
345
+ resolve(aMergedLinks);
346
+ }
347
+ });
403
348
  }
404
- });
405
- }
406
- /**
407
- * Will retrieve the ShellContainer.
408
- *
409
- * @private
410
- * @ui5-restricted
411
- * sap.ushell.container
412
- * @returns {object} Object with predefined shellContainer methods
413
- */
414
-
415
- }, {
416
- key: "getShellContainer",
417
- value: function getShellContainer() {
418
- return this.oShellContainer;
419
- }
420
- /**
421
- * Will call toExternal method of CrossApplicationNavigation service with Navigation Arguments and oComponent.
422
- *
423
- * @private
424
- * @ui5-restricted
425
- * @param {Array} oNavArgumentsArr And
426
- * @param {object} oComponent Check the definition of
427
- * sap.ushell.services.CrossApplicationNavigation=>toExternal arguments
428
- * @returns {void}
429
- */
430
-
431
- }, {
432
- key: "toExternal",
433
- value: function toExternal(oNavArgumentsArr, oComponent) {
434
- this.crossAppNavService.toExternal(oNavArgumentsArr, oComponent);
435
- }
436
- /**
437
- * Retrieves the target startupAppState
438
- * Will check the existance of the ShellContainer and retrieve the CrossApplicationNavigation
439
- * service reference call the getStartupAppState method. In case service is not available or any exception
440
- * method throws exception error in console.
441
- *
442
- * @private
443
- * @ui5-restricted
444
- * @param {object} oArgs Check the definition of
445
- * sap.ushell.services.CrossApplicationNavigation=>getStartupAppState arguments
446
- * @returns {Promise} Promise which will be resolved to Object
447
- */
448
-
449
- }, {
450
- key: "getStartupAppState",
451
- value: function getStartupAppState(oArgs) {
452
- var _this4 = this;
453
-
454
- return new Promise(function (resolve, reject) {
455
- // JQuery Promise behaves differently
456
- // eslint-disable-next-line promise/catch-or-return
457
- _this4.crossAppNavService.getStartupAppState(oArgs).fail(function (oError) {
458
- reject(new Error(oError + " sap.fe.core.services.NavigationServiceFactory.getStartupAppState"));
459
- }).then(resolve);
460
- });
461
- }
462
- /**
463
- * Will call backToPreviousApp method of CrossApplicationNavigation service.
464
- *
465
- * @returns {void}
466
- * @private
467
- * @ui5-restricted
468
- */
469
-
470
- }, {
471
- key: "backToPreviousApp",
472
- value: function backToPreviousApp() {
473
- return this.crossAppNavService.backToPreviousApp();
474
- }
475
- /**
476
- * Will call hrefForExternal method of CrossApplicationNavigation service.
477
- *
478
- * @private
479
- * @ui5-restricted
480
- * @param {object} oArgs Check the definition of
481
- * @param {object} oComponent The appComponent
482
- * @param {boolean} bAsync Whether this call should be async or not
483
- * sap.ushell.services.CrossApplicationNavigation=>hrefForExternal arguments
484
- * @returns {string} Promise which will be resolved to string
485
- */
486
-
487
- }, {
488
- key: "hrefForExternal",
489
- value: function hrefForExternal(oArgs, oComponent, bAsync) {
490
- return this.crossAppNavService.hrefForExternal(oArgs, oComponent, !!bAsync);
491
- }
492
- /**
493
- * Will call getAppState method of CrossApplicationNavigation service with oComponent and oAppStateKey.
494
- *
495
- * @private
496
- * @ui5-restricted
497
- * @param {object} oComponent
498
- * @param {string} sAppStateKey Check the definition of
499
- * sap.ushell.services.CrossApplicationNavigation=>getAppState arguments
500
- * @returns {Promise} Promise which will be resolved to object
501
- */
502
-
503
- }, {
504
- key: "getAppState",
505
- value: function getAppState(oComponent, sAppStateKey) {
506
- return wrapJQueryPromise(this.crossAppNavService.getAppState(oComponent, sAppStateKey));
507
- }
508
- /**
509
- * Will call createEmptyAppState method of CrossApplicationNavigation service with oComponent.
510
- *
511
- * @private
512
- * @ui5-restricted
513
- * @param {object} oComponent Check the definition of
514
- * sap.ushell.services.CrossApplicationNavigation=>createEmptyAppState arguments
515
- * @returns {Promise} Promise which will be resolved to object
516
- */
517
-
518
- }, {
519
- key: "createEmptyAppState",
520
- value: function createEmptyAppState(oComponent) {
521
- return this.crossAppNavService.createEmptyAppState(oComponent);
522
- }
523
- /**
524
- * Will call isNavigationSupported method of CrossApplicationNavigation service with Navigation Arguments and oComponent.
525
- *
526
- * @private
527
- * @ui5-restricted
528
- * @param {Array} oNavArgumentsArr
529
- * @param {object} oComponent Check the definition of
530
- * sap.ushell.services.CrossApplicationNavigation=>isNavigationSupported arguments
531
- * @returns {Promise} Promise which will be resolved to object
532
- */
533
-
534
- }, {
535
- key: "isNavigationSupported",
536
- value: function isNavigationSupported(oNavArgumentsArr, oComponent) {
537
- return wrapJQueryPromise(this.crossAppNavService.isNavigationSupported(oNavArgumentsArr, oComponent));
538
- }
539
- /**
540
- * Will call isInitialNavigation method of CrossApplicationNavigation service.
541
- *
542
- * @private
543
- * @ui5-restricted
544
- * @returns {Promise} Promise which will be resolved to boolean
545
- */
546
-
547
- }, {
548
- key: "isInitialNavigation",
549
- value: function isInitialNavigation() {
550
- return this.crossAppNavService.isInitialNavigation();
551
- }
552
- /**
553
- * Will call expandCompactHash method of CrossApplicationNavigation service.
554
- *
555
- * @param {string} sHashFragment An (internal format) shell hash
556
- * @returns {Promise} A promise the success handler of the resolve promise get an expanded shell hash as first argument
557
- * @private
558
- * @ui5-restricted
559
- */
560
-
561
- }, {
562
- key: "expandCompactHash",
563
- value: function expandCompactHash(sHashFragment) {
564
- return this.crossAppNavService.expandCompactHash(sHashFragment);
565
- }
566
- /**
567
- * Will call parseShellHash method of URLParsing service with given sHash.
568
- *
569
- * @private
570
- * @ui5-restricted
571
- * @param {string} sHash Check the definition of
572
- * sap.ushell.services.URLParsing=>parseShellHash arguments
573
- * @returns {object}
574
- */
575
-
576
- }, {
577
- key: "parseShellHash",
578
- value: function parseShellHash(sHash) {
579
- return this.urlParsingService.parseShellHash(sHash);
580
- }
581
- /**
582
- * Will call splitHash method of URLParsing service with given sHash.
583
- *
584
- * @private
585
- * @ui5-restricted
586
- * @param {string} sHash Check the definition of
587
- * sap.ushell.services.URLParsing=>splitHash arguments
588
- * @returns {Promise} Promise which will be resolved to object
589
- */
590
-
591
- }, {
592
- key: "splitHash",
593
- value: function splitHash(sHash) {
594
- return this.urlParsingService.splitHash(sHash);
595
- }
596
- /**
597
- * Will call constructShellHash method of URLParsing service with given sHash.
598
- *
599
- * @private
600
- * @ui5-restricted
601
- * @param {object} oNewShellHash Check the definition of
602
- * sap.ushell.services.URLParsing=>constructShellHash arguments
603
- * @returns {string} Shell Hash string
604
- */
605
-
606
- }, {
607
- key: "constructShellHash",
608
- value: function constructShellHash(oNewShellHash) {
609
- return this.urlParsingService.constructShellHash(oNewShellHash);
610
- }
611
- /**
612
- * Will call setDirtyFlag method with given dirty state.
613
- *
614
- * @private
615
- * @ui5-restricted
616
- * @param {boolean} bDirty Check the definition of sap.ushell.Container.setDirtyFlag arguments
617
- */
618
-
619
- }, {
620
- key: "setDirtyFlag",
621
- value: function setDirtyFlag(bDirty) {
622
- this.oShellContainer.setDirtyFlag(bDirty);
623
- }
624
- /**
625
- * Will call registerDirtyStateProvider method with given dirty state provider callback method.
626
- *
627
- * @private
628
- * @ui5-restricted
629
- * @param {Function} fnDirtyStateProvider Check the definition of sap.ushell.Container.registerDirtyStateProvider arguments
630
- */
631
-
632
- }, {
633
- key: "registerDirtyStateProvider",
634
- value: function registerDirtyStateProvider(fnDirtyStateProvider) {
635
- this.oShellContainer.registerDirtyStateProvider(fnDirtyStateProvider);
636
- }
637
- /**
638
- * Will call deregisterDirtyStateProvider method with given dirty state provider callback method.
639
- *
640
- * @private
641
- * @ui5-restricted
642
- * @param {Function} fnDirtyStateProvider Check the definition of sap.ushell.Container.deregisterDirtyStateProvider arguments
643
- */
644
-
645
- }, {
646
- key: "deregisterDirtyStateProvider",
647
- value: function deregisterDirtyStateProvider(fnDirtyStateProvider) {
648
- this.oShellContainer.deregisterDirtyStateProvider(fnDirtyStateProvider);
649
- }
650
- /**
651
- * Will call createRenderer method of ushell container.
652
- *
653
- * @private
654
- * @ui5-restricted
655
- * @returns {object} Returns renderer object
656
- */
657
-
658
- }, {
659
- key: "createRenderer",
660
- value: function createRenderer() {
661
- return this.oShellContainer.createRenderer();
662
- }
663
- /**
664
- * Will call getUser method of ushell container.
665
- *
666
- * @private
667
- * @ui5-restricted
668
- * @returns {object} Returns User object
669
- */
670
-
671
- }, {
672
- key: "getUser",
673
- value: function getUser() {
674
- return this.oShellContainer.getUser();
675
- }
676
- /**
677
- * Will check if ushell container is available or not.
678
- *
679
- * @private
680
- * @ui5-restricted
681
- * @returns {boolean} Returns true
682
- */
683
-
684
- }, {
685
- key: "hasUShell",
686
- value: function hasUShell() {
687
- return true;
688
- }
689
- /**
690
- * Will call registerNavigationFilter method of shellNavigation.
691
- *
692
- * @param {Function} fnNavFilter The filter function to register
693
- * @returns {void}
694
- * @private
695
- * @ui5-restricted
696
- */
697
-
698
- }, {
699
- key: "registerNavigationFilter",
700
- value: function registerNavigationFilter(fnNavFilter) {
701
- this.shellNavigation.registerNavigationFilter(fnNavFilter);
702
- }
703
- /**
704
- * Will call unregisterNavigationFilter method of shellNavigation.
705
- *
706
- * @param {Function} fnNavFilter The filter function to unregister
707
- * @returns {void}
708
- * @private
709
- * @ui5-restricted
710
- */
711
-
712
- }, {
713
- key: "unregisterNavigationFilter",
714
- value: function unregisterNavigationFilter(fnNavFilter) {
715
- this.shellNavigation.unregisterNavigationFilter(fnNavFilter);
716
- }
717
- /**
718
- * Will call setBackNavigation method of ShellUIService
719
- * that displays the back button in the shell header.
720
- *
721
- * @param {Function} [fnCallBack] A callback function called when the button is clicked in the UI.
722
- * @returns {void}
723
- * @private
724
- * @ui5-restricted
725
- */
726
-
727
- }, {
728
- key: "setBackNavigation",
729
- value: function setBackNavigation(fnCallBack) {
730
- this.shellUIService.setBackNavigation(fnCallBack);
731
- }
732
- /**
733
- * Will call setHierarchy method of ShellUIService
734
- * that displays the given hierarchy in the shell header.
735
- *
736
- * @param {object[]} [aHierarchyLevels] An array representing hierarchies of the currently displayed app.
737
- * @returns {void}
738
- * @private
739
- * @ui5-restricted
740
- */
741
-
742
- }, {
743
- key: "setHierarchy",
744
- value: function setHierarchy(aHierarchyLevels) {
745
- this.shellUIService.setHierarchy(aHierarchyLevels);
746
- }
747
- /**
748
- * Will call setTitle method of ShellUIService
749
- * that displays the given title in the shell header.
750
- *
751
- * @param {string} [sTitle] The new title. The default title is set if this argument is not given.
752
- * @returns {void}
753
- * @private
754
- * @ui5-restricted
755
- */
756
-
757
- }, {
758
- key: "setTitle",
759
- value: function setTitle(sTitle) {
760
- this.shellUIService.setTitle(sTitle);
761
- }
762
- /**
763
- * Retrieves the currently defined content density.
764
- *
765
- * @returns {string} The content density value
766
- */
767
-
768
- }, {
769
- key: "getContentDensity",
770
- value: function getContentDensity() {
771
- return this.oShellContainer.getUser().getContentDensity();
772
- }
773
- /**
774
- * For a given semantic object, this method considers all actions associated with the semantic object and
775
- * returns the one tagged as a "primaryAction". If no inbound tagged as "primaryAction" exists, then it returns
776
- * the intent of the first inbound (after sorting has been applied) matching the action "displayFactSheet".
777
- *
778
- * @private
779
- * @ui5-restricted
780
- * @param {string} sSemanticObject Semantic object.
781
- * @param {object} mParameters See #CrossApplicationNavigation#getLinks for description.
782
- * @returns {Promise} Promise which will be resolved with an object containing the intent if it exists.
783
- */
784
-
785
- }, {
786
- key: "getPrimaryIntent",
787
- value: function getPrimaryIntent(sSemanticObject, mParameters) {
788
- var _this5 = this;
789
-
790
- return new Promise(function (resolve, reject) {
791
- // eslint-disable-next-line promise/catch-or-return
792
- _this5.crossAppNavService.getPrimaryIntent(sSemanticObject, mParameters).fail(function (oError) {
793
- reject(new Error(oError + " sap.fe.core.services.NavigationServiceFactory.getPrimaryIntent"));
794
- }).then(resolve);
795
- });
796
- }
797
- }]);
349
+ }
350
+ });
351
+ }
352
+ /**
353
+ * Will retrieve the ShellContainer.
354
+ *
355
+ * @private
356
+ * @ui5-restricted
357
+ * sap.ushell.container
358
+ * @returns {object} Object with predefined shellContainer methods
359
+ */
360
+ ;
361
+
362
+ _proto2.getShellContainer = function getShellContainer() {
363
+ return this.oShellContainer;
364
+ }
365
+ /**
366
+ * Will call toExternal method of CrossApplicationNavigation service with Navigation Arguments and oComponent.
367
+ *
368
+ * @private
369
+ * @ui5-restricted
370
+ * @param {Array} oNavArgumentsArr And
371
+ * @param {object} oComponent Check the definition of
372
+ * sap.ushell.services.CrossApplicationNavigation=>toExternal arguments
373
+ * @returns {void}
374
+ */
375
+ ;
376
+
377
+ _proto2.toExternal = function toExternal(oNavArgumentsArr, oComponent) {
378
+ this.crossAppNavService.toExternal(oNavArgumentsArr, oComponent);
379
+ }
380
+ /**
381
+ * Retrieves the target startupAppState
382
+ * Will check the existance of the ShellContainer and retrieve the CrossApplicationNavigation
383
+ * service reference call the getStartupAppState method. In case service is not available or any exception
384
+ * method throws exception error in console.
385
+ *
386
+ * @private
387
+ * @ui5-restricted
388
+ * @param {object} oArgs Check the definition of
389
+ * sap.ushell.services.CrossApplicationNavigation=>getStartupAppState arguments
390
+ * @returns {Promise} Promise which will be resolved to Object
391
+ */
392
+ ;
393
+
394
+ _proto2.getStartupAppState = function getStartupAppState(oArgs) {
395
+ var _this4 = this;
396
+
397
+ return new Promise(function (resolve, reject) {
398
+ // JQuery Promise behaves differently
399
+ // eslint-disable-next-line promise/catch-or-return
400
+ _this4.crossAppNavService.getStartupAppState(oArgs).fail(function (oError) {
401
+ reject(new Error(oError + " sap.fe.core.services.NavigationServiceFactory.getStartupAppState"));
402
+ }).then(resolve);
403
+ });
404
+ }
405
+ /**
406
+ * Will call backToPreviousApp method of CrossApplicationNavigation service.
407
+ *
408
+ * @returns {void}
409
+ * @private
410
+ * @ui5-restricted
411
+ */
412
+ ;
413
+
414
+ _proto2.backToPreviousApp = function backToPreviousApp() {
415
+ return this.crossAppNavService.backToPreviousApp();
416
+ }
417
+ /**
418
+ * Will call hrefForExternal method of CrossApplicationNavigation service.
419
+ *
420
+ * @private
421
+ * @ui5-restricted
422
+ * @param {object} oArgs Check the definition of
423
+ * @param {object} oComponent The appComponent
424
+ * @param {boolean} bAsync Whether this call should be async or not
425
+ * sap.ushell.services.CrossApplicationNavigation=>hrefForExternal arguments
426
+ * @returns {string} Promise which will be resolved to string
427
+ */
428
+ ;
429
+
430
+ _proto2.hrefForExternal = function hrefForExternal(oArgs, oComponent, bAsync) {
431
+ return this.crossAppNavService.hrefForExternal(oArgs, oComponent, !!bAsync);
432
+ }
433
+ /**
434
+ * Will call getAppState method of CrossApplicationNavigation service with oComponent and oAppStateKey.
435
+ *
436
+ * @private
437
+ * @ui5-restricted
438
+ * @param {object} oComponent
439
+ * @param {string} sAppStateKey Check the definition of
440
+ * sap.ushell.services.CrossApplicationNavigation=>getAppState arguments
441
+ * @returns {Promise} Promise which will be resolved to object
442
+ */
443
+ ;
444
+
445
+ _proto2.getAppState = function getAppState(oComponent, sAppStateKey) {
446
+ return wrapJQueryPromise(this.crossAppNavService.getAppState(oComponent, sAppStateKey));
447
+ }
448
+ /**
449
+ * Will call createEmptyAppState method of CrossApplicationNavigation service with oComponent.
450
+ *
451
+ * @private
452
+ * @ui5-restricted
453
+ * @param {object} oComponent Check the definition of
454
+ * sap.ushell.services.CrossApplicationNavigation=>createEmptyAppState arguments
455
+ * @returns {Promise} Promise which will be resolved to object
456
+ */
457
+ ;
458
+
459
+ _proto2.createEmptyAppState = function createEmptyAppState(oComponent) {
460
+ return this.crossAppNavService.createEmptyAppState(oComponent);
461
+ }
462
+ /**
463
+ * Will call isNavigationSupported method of CrossApplicationNavigation service with Navigation Arguments and oComponent.
464
+ *
465
+ * @private
466
+ * @ui5-restricted
467
+ * @param {Array} oNavArgumentsArr
468
+ * @param {object} oComponent Check the definition of
469
+ * sap.ushell.services.CrossApplicationNavigation=>isNavigationSupported arguments
470
+ * @returns {Promise} Promise which will be resolved to object
471
+ */
472
+ ;
473
+
474
+ _proto2.isNavigationSupported = function isNavigationSupported(oNavArgumentsArr, oComponent) {
475
+ return wrapJQueryPromise(this.crossAppNavService.isNavigationSupported(oNavArgumentsArr, oComponent));
476
+ }
477
+ /**
478
+ * Will call isInitialNavigation method of CrossApplicationNavigation service.
479
+ *
480
+ * @private
481
+ * @ui5-restricted
482
+ * @returns {Promise} Promise which will be resolved to boolean
483
+ */
484
+ ;
485
+
486
+ _proto2.isInitialNavigation = function isInitialNavigation() {
487
+ return this.crossAppNavService.isInitialNavigation();
488
+ }
489
+ /**
490
+ * Will call expandCompactHash method of CrossApplicationNavigation service.
491
+ *
492
+ * @param {string} sHashFragment An (internal format) shell hash
493
+ * @returns {Promise} A promise the success handler of the resolve promise get an expanded shell hash as first argument
494
+ * @private
495
+ * @ui5-restricted
496
+ */
497
+ ;
498
+
499
+ _proto2.expandCompactHash = function expandCompactHash(sHashFragment) {
500
+ return this.crossAppNavService.expandCompactHash(sHashFragment);
501
+ }
502
+ /**
503
+ * Will call parseShellHash method of URLParsing service with given sHash.
504
+ *
505
+ * @private
506
+ * @ui5-restricted
507
+ * @param {string} sHash Check the definition of
508
+ * sap.ushell.services.URLParsing=>parseShellHash arguments
509
+ * @returns {object}
510
+ */
511
+ ;
512
+
513
+ _proto2.parseShellHash = function parseShellHash(sHash) {
514
+ return this.urlParsingService.parseShellHash(sHash);
515
+ }
516
+ /**
517
+ * Will call splitHash method of URLParsing service with given sHash.
518
+ *
519
+ * @private
520
+ * @ui5-restricted
521
+ * @param {string} sHash Check the definition of
522
+ * sap.ushell.services.URLParsing=>splitHash arguments
523
+ * @returns {Promise} Promise which will be resolved to object
524
+ */
525
+ ;
526
+
527
+ _proto2.splitHash = function splitHash(sHash) {
528
+ return this.urlParsingService.splitHash(sHash);
529
+ }
530
+ /**
531
+ * Will call constructShellHash method of URLParsing service with given sHash.
532
+ *
533
+ * @private
534
+ * @ui5-restricted
535
+ * @param {object} oNewShellHash Check the definition of
536
+ * sap.ushell.services.URLParsing=>constructShellHash arguments
537
+ * @returns {string} Shell Hash string
538
+ */
539
+ ;
540
+
541
+ _proto2.constructShellHash = function constructShellHash(oNewShellHash) {
542
+ return this.urlParsingService.constructShellHash(oNewShellHash);
543
+ }
544
+ /**
545
+ * Will call setDirtyFlag method with given dirty state.
546
+ *
547
+ * @private
548
+ * @ui5-restricted
549
+ * @param {boolean} bDirty Check the definition of sap.ushell.Container.setDirtyFlag arguments
550
+ */
551
+ ;
552
+
553
+ _proto2.setDirtyFlag = function setDirtyFlag(bDirty) {
554
+ this.oShellContainer.setDirtyFlag(bDirty);
555
+ }
556
+ /**
557
+ * Will call registerDirtyStateProvider method with given dirty state provider callback method.
558
+ *
559
+ * @private
560
+ * @ui5-restricted
561
+ * @param {Function} fnDirtyStateProvider Check the definition of sap.ushell.Container.registerDirtyStateProvider arguments
562
+ */
563
+ ;
564
+
565
+ _proto2.registerDirtyStateProvider = function registerDirtyStateProvider(fnDirtyStateProvider) {
566
+ this.oShellContainer.registerDirtyStateProvider(fnDirtyStateProvider);
567
+ }
568
+ /**
569
+ * Will call deregisterDirtyStateProvider method with given dirty state provider callback method.
570
+ *
571
+ * @private
572
+ * @ui5-restricted
573
+ * @param {Function} fnDirtyStateProvider Check the definition of sap.ushell.Container.deregisterDirtyStateProvider arguments
574
+ */
575
+ ;
576
+
577
+ _proto2.deregisterDirtyStateProvider = function deregisterDirtyStateProvider(fnDirtyStateProvider) {
578
+ this.oShellContainer.deregisterDirtyStateProvider(fnDirtyStateProvider);
579
+ }
580
+ /**
581
+ * Will call createRenderer method of ushell container.
582
+ *
583
+ * @private
584
+ * @ui5-restricted
585
+ * @returns {object} Returns renderer object
586
+ */
587
+ ;
588
+
589
+ _proto2.createRenderer = function createRenderer() {
590
+ return this.oShellContainer.createRenderer();
591
+ }
592
+ /**
593
+ * Will call getUser method of ushell container.
594
+ *
595
+ * @private
596
+ * @ui5-restricted
597
+ * @returns {object} Returns User object
598
+ */
599
+ ;
600
+
601
+ _proto2.getUser = function getUser() {
602
+ return this.oShellContainer.getUser();
603
+ }
604
+ /**
605
+ * Will check if ushell container is available or not.
606
+ *
607
+ * @private
608
+ * @ui5-restricted
609
+ * @returns {boolean} Returns true
610
+ */
611
+ ;
612
+
613
+ _proto2.hasUShell = function hasUShell() {
614
+ return true;
615
+ }
616
+ /**
617
+ * Will call registerNavigationFilter method of shellNavigation.
618
+ *
619
+ * @param {Function} fnNavFilter The filter function to register
620
+ * @returns {void}
621
+ * @private
622
+ * @ui5-restricted
623
+ */
624
+ ;
625
+
626
+ _proto2.registerNavigationFilter = function registerNavigationFilter(fnNavFilter) {
627
+ this.shellNavigation.registerNavigationFilter(fnNavFilter);
628
+ }
629
+ /**
630
+ * Will call unregisterNavigationFilter method of shellNavigation.
631
+ *
632
+ * @param {Function} fnNavFilter The filter function to unregister
633
+ * @returns {void}
634
+ * @private
635
+ * @ui5-restricted
636
+ */
637
+ ;
638
+
639
+ _proto2.unregisterNavigationFilter = function unregisterNavigationFilter(fnNavFilter) {
640
+ this.shellNavigation.unregisterNavigationFilter(fnNavFilter);
641
+ }
642
+ /**
643
+ * Will call setBackNavigation method of ShellUIService
644
+ * that displays the back button in the shell header.
645
+ *
646
+ * @param {Function} [fnCallBack] A callback function called when the button is clicked in the UI.
647
+ * @returns {void}
648
+ * @private
649
+ * @ui5-restricted
650
+ */
651
+ ;
652
+
653
+ _proto2.setBackNavigation = function setBackNavigation(fnCallBack) {
654
+ this.shellUIService.setBackNavigation(fnCallBack);
655
+ }
656
+ /**
657
+ * Will call setHierarchy method of ShellUIService
658
+ * that displays the given hierarchy in the shell header.
659
+ *
660
+ * @param {object[]} [aHierarchyLevels] An array representing hierarchies of the currently displayed app.
661
+ * @returns {void}
662
+ * @private
663
+ * @ui5-restricted
664
+ */
665
+ ;
666
+
667
+ _proto2.setHierarchy = function setHierarchy(aHierarchyLevels) {
668
+ this.shellUIService.setHierarchy(aHierarchyLevels);
669
+ }
670
+ /**
671
+ * Will call setTitle method of ShellUIService
672
+ * that displays the given title in the shell header.
673
+ *
674
+ * @param {string} [sTitle] The new title. The default title is set if this argument is not given.
675
+ * @returns {void}
676
+ * @private
677
+ * @ui5-restricted
678
+ */
679
+ ;
680
+
681
+ _proto2.setTitle = function setTitle(sTitle) {
682
+ this.shellUIService.setTitle(sTitle);
683
+ }
684
+ /**
685
+ * Retrieves the currently defined content density.
686
+ *
687
+ * @returns {string} The content density value
688
+ */
689
+ ;
690
+
691
+ _proto2.getContentDensity = function getContentDensity() {
692
+ return this.oShellContainer.getUser().getContentDensity();
693
+ }
694
+ /**
695
+ * For a given semantic object, this method considers all actions associated with the semantic object and
696
+ * returns the one tagged as a "primaryAction". If no inbound tagged as "primaryAction" exists, then it returns
697
+ * the intent of the first inbound (after sorting has been applied) matching the action "displayFactSheet".
698
+ *
699
+ * @private
700
+ * @ui5-restricted
701
+ * @param {string} sSemanticObject Semantic object.
702
+ * @param {object} mParameters See #CrossApplicationNavigation#getLinks for description.
703
+ * @returns {Promise} Promise which will be resolved with an object containing the intent if it exists.
704
+ */
705
+ ;
706
+
707
+ _proto2.getPrimaryIntent = function getPrimaryIntent(sSemanticObject, mParameters) {
708
+ var _this5 = this;
709
+
710
+ return new Promise(function (resolve, reject) {
711
+ // eslint-disable-next-line promise/catch-or-return
712
+ _this5.crossAppNavService.getPrimaryIntent(sSemanticObject, mParameters).fail(function (oError) {
713
+ reject(new Error(oError + " sap.fe.core.services.NavigationServiceFactory.getPrimaryIntent"));
714
+ }).then(resolve);
715
+ });
716
+ };
798
717
 
799
718
  return ShellServices;
800
719
  }(Service);
@@ -808,41 +727,35 @@ sap.ui.define(["sap/ui/core/service/ServiceFactory", "sap/ui/core/service/Servic
808
727
  var ShellServicesFactory = /*#__PURE__*/function (_ServiceFactory) {
809
728
  _inherits(ShellServicesFactory, _ServiceFactory);
810
729
 
811
- var _super3 = _createSuper(ShellServicesFactory);
812
-
813
730
  function ShellServicesFactory() {
814
- _classCallCheck(this, ShellServicesFactory);
815
-
816
- return _super3.apply(this, arguments);
731
+ return _ServiceFactory.apply(this, arguments) || this;
817
732
  }
818
733
 
819
- _createClass(ShellServicesFactory, [{
820
- key: "createInstance",
821
- value:
822
- /**
823
- * Creates either a standard or a mock Shell service depending on the configuration.
824
- *
825
- * @param {ServiceContext<ShellServicesSettings>} oServiceContext The shellservice context
826
- * @returns {Promise<IShellServices>} A promise for a shell service implementation
827
- * @see ServiceFactory#createInstance
828
- */
829
- function createInstance(oServiceContext) {
830
- oServiceContext.settings.shellContainer = sap.ushell && sap.ushell.Container;
831
- var oShellService = oServiceContext.settings.shellContainer ? new ShellServices(oServiceContext) : new ShellServiceMock(oServiceContext);
832
- return oShellService.initPromise.then(function () {
833
- // Enrich the appComponent with this method
834
- oServiceContext.scopeObject.getShellServices = function () {
835
- return oShellService;
836
- };
837
-
734
+ var _proto3 = ShellServicesFactory.prototype;
735
+
736
+ /**
737
+ * Creates either a standard or a mock Shell service depending on the configuration.
738
+ *
739
+ * @param {ServiceContext<ShellServicesSettings>} oServiceContext The shellservice context
740
+ * @returns {Promise<IShellServices>} A promise for a shell service implementation
741
+ * @see ServiceFactory#createInstance
742
+ */
743
+ _proto3.createInstance = function createInstance(oServiceContext) {
744
+ oServiceContext.settings.shellContainer = sap.ushell && sap.ushell.Container;
745
+ var oShellService = oServiceContext.settings.shellContainer ? new ShellServices(oServiceContext) : new ShellServiceMock(oServiceContext);
746
+ return oShellService.initPromise.then(function () {
747
+ // Enrich the appComponent with this method
748
+ oServiceContext.scopeObject.getShellServices = function () {
838
749
  return oShellService;
839
- });
840
- }
841
- }]);
750
+ };
751
+
752
+ return oShellService;
753
+ });
754
+ };
842
755
 
843
756
  return ShellServicesFactory;
844
757
  }(ServiceFactory);
845
758
 
846
759
  return ShellServicesFactory;
847
760
  }, false);
848
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoZWxsU2VydmljZXNGYWN0b3J5LnRzIl0sIm5hbWVzIjpbIlNoZWxsU2VydmljZU1vY2siLCJpbml0UHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW5zdGFuY2VUeXBlIiwib0FyZ3MiLCJvTmF2QXJndW1lbnRzQXJyIiwib0NvbXBvbmVudCIsImJBc3luYyIsInNBcHBTdGF0ZUtleSIsInNIYXNoRnJhZ21lbnQiLCJzSGFzaCIsIm9OZXdTaGVsbEhhc2giLCJiRGlydHkiLCJmbkRpcnR5U3RhdGVQcm92aWRlciIsImZuTmF2RmlsdGVyIiwiZm5DYWxsQmFjayIsImFIaWVyYXJjaHlMZXZlbHMiLCJzVGl0bGUiLCJkb2N1bWVudCIsImJvZHkiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInNTZW1hbnRpY09iamVjdCIsIm1QYXJhbWV0ZXJzIiwiU2VydmljZSIsIndyYXBKUXVlcnlQcm9taXNlIiwianF1ZXJ5UHJvbWlzZSIsInJlamVjdCIsImRvbmUiLCJmYWlsIiwiU2hlbGxTZXJ2aWNlcyIsIm9Db250ZXh0IiwiZ2V0Q29udGV4dCIsInNjb3BlT2JqZWN0Iiwib1NoZWxsQ29udGFpbmVyIiwic2V0dGluZ3MiLCJzaGVsbENvbnRhaW5lciIsImxpbmtzQ2FjaGUiLCJmbkZpbmRTZW1hbnRpY09iamVjdHNJbkNhY2hlIiwiX29BcmdzIiwiYUNhY2hlZFNlbWFudGljT2JqZWN0cyIsImFOb25DYWNoZWRTZW1hbnRpY09iamVjdHMiLCJpIiwibGVuZ3RoIiwic2VtYW50aWNPYmplY3QiLCJwdXNoIiwibGlua3MiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwib2xkQXJncyIsIm5ld0FyZ3MiLCJjYWNoZWRMaW5rcyIsInJlc29sdmVGbiIsInJlamVjdEZuIiwib0Nyb3NzQXBwTmF2U2VydmljZVByb21pc2UiLCJnZXRTZXJ2aWNlQXN5bmMiLCJvVXJsUGFyc2luZ1NlcnZpY2VQcm9taXNlIiwib1NoZWxsTmF2aWdhdGlvblNlcnZpY2VQcm9taXNlIiwib1NoZWxsVUlTZXJ2aWNlUHJvbWlzZSIsImdldFNlcnZpY2UiLCJhbGwiLCJ0aGVuIiwib0Nyb3NzQXBwTmF2U2VydmljZSIsIm9VcmxQYXJzaW5nU2VydmljZSIsIm9TaGVsbE5hdmlnYXRpb24iLCJvU2hlbGxVSVNlcnZpY2UiLCJjcm9zc0FwcE5hdlNlcnZpY2UiLCJ1cmxQYXJzaW5nU2VydmljZSIsInNoZWxsTmF2aWdhdGlvbiIsInNoZWxsVUlTZXJ2aWNlIiwiY2F0Y2giLCJnZXRMaW5rcyIsIm9FcnJvciIsIkVycm9yIiwiYUxpbmtzIiwib0NhY2hlUmVzdWx0cyIsIm9TZW1hbnRpY09iamVjdHNMaW5rcyIsInVuZGVmaW5lZCIsImFzc2lnbiIsImFNZXJnZWRMaW5rcyIsImoiLCJrIiwidG9FeHRlcm5hbCIsImdldFN0YXJ0dXBBcHBTdGF0ZSIsImJhY2tUb1ByZXZpb3VzQXBwIiwiaHJlZkZvckV4dGVybmFsIiwiZ2V0QXBwU3RhdGUiLCJjcmVhdGVFbXB0eUFwcFN0YXRlIiwiaXNOYXZpZ2F0aW9uU3VwcG9ydGVkIiwiaXNJbml0aWFsTmF2aWdhdGlvbiIsImV4cGFuZENvbXBhY3RIYXNoIiwicGFyc2VTaGVsbEhhc2giLCJzcGxpdEhhc2giLCJjb25zdHJ1Y3RTaGVsbEhhc2giLCJzZXREaXJ0eUZsYWciLCJyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlciIsImRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIiLCJjcmVhdGVSZW5kZXJlciIsImdldFVzZXIiLCJyZWdpc3Rlck5hdmlnYXRpb25GaWx0ZXIiLCJ1bnJlZ2lzdGVyTmF2aWdhdGlvbkZpbHRlciIsInNldEJhY2tOYXZpZ2F0aW9uIiwic2V0SGllcmFyY2h5Iiwic2V0VGl0bGUiLCJnZXRDb250ZW50RGVuc2l0eSIsImdldFByaW1hcnlJbnRlbnQiLCJTaGVsbFNlcnZpY2VzRmFjdG9yeSIsIm9TZXJ2aWNlQ29udGV4dCIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsIm9TaGVsbFNlcnZpY2UiLCJn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QUdKLGVBQWUsQ0FBQ3pFLFFBQWhCLENBQXlCQyxjQUF6QixHQUNuQixJQUFJTixhQUFKLENBQWtCOEUsZUFBbEIsQ0FEbUIsR0FFbkIsSUFBSTdHLGdCQUFKLENBQXFCNkcsZUFBckIsQ0FGSDtBQUdBLGVBQU9JLGFBQWEsQ0FBQ2hILFdBQWQsQ0FBMEI4RCxJQUExQixDQUErQixZQUFNO0FBQzNDO0FBQ0M4QyxVQUFBQSxlQUFlLENBQUMzRSxXQUFqQixDQUFxQ2dGLGdCQUFyQyxHQUF3RDtBQUFBLG1CQUFNRCxhQUFOO0FBQUEsV0FBeEQ7O0FBQ0EsaUJBQU9BLGFBQVA7QUFDQSxTQUpNLENBQVA7QUFLQTs7OztJQWxCaUNFLGM7O1NBcUJwQlAsb0IiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuXG5pbXBvcnQgU2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2VcIjtcbmltcG9ydCBDb250YWluZXIgZnJvbSBcInNhcC91c2hlbGwvc2VydmljZXMvQ29udGFpbmVyXCI7XG5pbXBvcnQgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb24gZnJvbSBcInNhcC91c2hlbGwvc2VydmljZXMvQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb25cIjtcbmltcG9ydCBTaGVsbE5hdmlnYXRpb24gZnJvbSBcInNhcC91c2hlbGwvc2VydmljZXMvU2hlbGxOYXZpZ2F0aW9uXCI7XG5pbXBvcnQgVVJMUGFyc2luZyBmcm9tIFwic2FwL3VzaGVsbC9zZXJ2aWNlcy9VUkxQYXJzaW5nXCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIElTaGVsbFNlcnZpY2VzXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTaGVsbFNlcnZpY2VzIHtcblx0aW5pdFByb21pc2U6IFByb21pc2U8SVNoZWxsU2VydmljZXM+O1xuXG5cdGdldExpbmtzKG9BcmdzOiBvYmplY3QpOiBQcm9taXNlPGFueT47XG5cblx0dG9FeHRlcm5hbChvTmF2QXJndW1lbnRzQXJyOiBBcnJheTxvYmplY3Q+LCBvQ29tcG9uZW50OiBvYmplY3QpOiB2b2lkO1xuXG5cdGdldFN0YXJ0dXBBcHBTdGF0ZShvQXJnczogb2JqZWN0KTogUHJvbWlzZTxhbnk+O1xuXG5cdGJhY2tUb1ByZXZpb3VzQXBwKCk6IHZvaWQ7XG5cblx0aHJlZkZvckV4dGVybmFsKG9BcmdzPzogb2JqZWN0LCBvQ29tcG9uZW50Pzogb2JqZWN0LCBiQXN5bmM/OiBib29sZWFuKTogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xuXG5cdGdldEFwcFN0YXRlKG9Db21wb25lbnQ6IENvbXBvbmVudCwgc0FwcFN0YXRlS2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG5cblx0Y3JlYXRlRW1wdHlBcHBTdGF0ZShvQ29tcG9uZW50OiBDb21wb25lbnQpOiBvYmplY3Q7XG5cblx0aXNOYXZpZ2F0aW9uU3VwcG9ydGVkKG9OYXZBcmd1bWVudHNBcnI6IEFycmF5PG9iamVjdD4sIG9Db21wb25lbnQ6IG9iamVjdCk6IFByb21pc2U8YW55PjtcblxuXHRpc0luaXRpYWxOYXZpZ2F0aW9uKCk6IGJvb2xlYW47XG5cblx0ZXhwYW5kQ29tcGFjdEhhc2goc0hhc2hGcmFnbWVudDogc3RyaW5nKTogb2JqZWN0O1xuXG5cdHBhcnNlU2hlbGxIYXNoKHNIYXNoOiBzdHJpbmcpOiBvYmplY3Q7XG5cblx0c3BsaXRIYXNoKHNIYXNoOiBzdHJpbmcpOiBvYmplY3Q7XG5cblx0Y29uc3RydWN0U2hlbGxIYXNoKG9OZXdTaGVsbEhhc2g6IG9iamVjdCk6IHN0cmluZztcblxuXHRzZXREaXJ0eUZsYWcoYkRpcnR5OiBib29sZWFuKTogdm9pZDtcblxuXHRyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlcihmbkRpcnR5U3RhdGVQcm92aWRlcjogRnVuY3Rpb24pOiB2b2lkO1xuXG5cdGRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZm5EaXJ0eVN0YXRlUHJvdmlkZXI6IEZ1bmN0aW9uKTogdm9pZDtcblxuXHRjcmVhdGVSZW5kZXJlcigpOiBvYmplY3Q7XG5cblx0Z2V0VXNlcigpOiBvYmplY3Q7XG5cblx0aGFzVVNoZWxsKCk6IGJvb2xlYW47XG5cblx0cmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyOiBGdW5jdGlvbik6IHZvaWQ7XG5cblx0dW5yZWdpc3Rlck5hdmlnYXRpb25GaWx0ZXIoZm5OYXZGaWx0ZXI6IEZ1bmN0aW9uKTogdm9pZDtcblxuXHRzZXRCYWNrTmF2aWdhdGlvbihmbkNhbGxCYWNrPzogRnVuY3Rpb24pOiB2b2lkO1xuXG5cdHNldEhpZXJhcmNoeShhSGllcmFyY2h5TGV2ZWxzOiBBcnJheTxvYmplY3Q+KTogdm9pZDtcblxuXHRzZXRUaXRsZShzVGl0bGU6IHN0cmluZyk6IHZvaWQ7XG5cblx0Z2V0Q29udGVudERlbnNpdHkoKTogc3RyaW5nO1xuXG5cdGdldFByaW1hcnlJbnRlbnQoc1NlbWFudGljT2JqZWN0OiBzdHJpbmcsIG1QYXJhbWV0ZXJzPzogb2JqZWN0KTogUHJvbWlzZTxhbnk+O1xufVxuXG4vKipcbiAqIE1vY2sgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoZWxsU2VydmljZSBmb3IgT3BlbkZFXG4gKlxuICogQGltcGxlbWVudHMge0lTaGVsbFNlcnZpY2VzfVxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgU2hlbGxTZXJ2aWNlTW9jayBleHRlbmRzIFNlcnZpY2U8U2hlbGxTZXJ2aWNlc1NldHRpbmdzPiBpbXBsZW1lbnRzIElTaGVsbFNlcnZpY2VzIHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPGFueT47XG5cdGluc3RhbmNlVHlwZSE6IHN0cmluZztcblxuXHRpbml0KCkge1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdFx0dGhpcy5pbnN0YW5jZVR5cGUgPSBcIm1vY2tcIjtcblx0fVxuXG5cdGdldExpbmtzKG9BcmdzOiBvYmplY3QpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcblx0fVxuXG5cdGdldExpbmtzV2l0aENhY2hlKG9BcmdzOiBvYmplY3QpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcblx0fVxuXG5cdHRvRXh0ZXJuYWwob05hdkFyZ3VtZW50c0FycjogQXJyYXk8b2JqZWN0Piwgb0NvbXBvbmVudDogb2JqZWN0KSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Z2V0U3RhcnR1cEFwcFN0YXRlKG9BcmdzOiBvYmplY3QpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuXHR9XG5cblx0YmFja1RvUHJldmlvdXNBcHAoKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aHJlZkZvckV4dGVybmFsKG9BcmdzPzogb2JqZWN0LCBvQ29tcG9uZW50Pzogb2JqZWN0LCBiQXN5bmM/OiBib29sZWFuKSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblxuXHRnZXRBcHBTdGF0ZShvQ29tcG9uZW50OiBvYmplY3QsIHNBcHBTdGF0ZUtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG5cdH1cblxuXHRjcmVhdGVFbXB0eUFwcFN0YXRlKG9Db21wb25lbnQ6IG9iamVjdCkge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuXHR9XG5cblx0aXNOYXZpZ2F0aW9uU3VwcG9ydGVkKG9OYXZBcmd1bWVudHNBcnI6IEFycmF5PG9iamVjdD4sIG9Db21wb25lbnQ6IG9iamVjdCkge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuXHR9XG5cblx0aXNJbml0aWFsTmF2aWdhdGlvbigpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRleHBhbmRDb21wYWN0SGFzaChzSGFzaEZyYWdtZW50OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcblx0fVxuXG5cdHBhcnNlU2hlbGxIYXNoKHNIYXNoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4ge307XG5cdH1cblxuXHRzcGxpdEhhc2goc0hhc2g6IHN0cmluZykge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuXHR9XG5cblx0Y29uc3RydWN0U2hlbGxIYXNoKG9OZXdTaGVsbEhhc2g6IG9iamVjdCkge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG5cblx0c2V0RGlydHlGbGFnKGJEaXJ0eTogYm9vbGVhbikge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyKGZuRGlydHlTdGF0ZVByb3ZpZGVyOiBGdW5jdGlvbikge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZm5EaXJ0eVN0YXRlUHJvdmlkZXI6IEZ1bmN0aW9uKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y3JlYXRlUmVuZGVyZXIoKSB7XG5cdFx0cmV0dXJuIHt9O1xuXHR9XG5cblx0Z2V0VXNlcigpIHtcblx0XHRyZXR1cm4ge307XG5cdH1cblxuXHRoYXNVU2hlbGwoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHNldEJhY2tOYXZpZ2F0aW9uKGZuQ2FsbEJhY2s/OiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHNldEhpZXJhcmNoeShhSGllcmFyY2h5TGV2ZWxzOiBBcnJheTxvYmplY3Q+KTogdm9pZCB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0c2V0VGl0bGUoc1RpdGxlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRnZXRDb250ZW50RGVuc2l0eSgpOiBzdHJpbmcge1xuXHRcdC8vIGluIGNhc2UgdGhlcmUgaXMgbm8gc2hlbGwgd2UgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHRoZSBjbGFzc2VzIGJlaW5nIGRlZmluZWQgb24gdGhlIGJvZHlcblx0XHRpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoXCJzYXBVaVNpemVDb3p5XCIpKSB7XG5cdFx0XHRyZXR1cm4gXCJjb3p5XCI7XG5cdFx0fSBlbHNlIGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucyhcInNhcFVpU2l6ZUNvbXBhY3RcIikpIHtcblx0XHRcdHJldHVybiBcImNvbXBhY3RcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG5cblx0Z2V0UHJpbWFyeUludGVudChzU2VtYW50aWNPYmplY3Q6IHN0cmluZywgbVBhcmFtZXRlcnM/OiBvYmplY3QpOiBQcm9taXNlPGFueT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIFNoZWxsU2VydmljZXNTZXR0aW5nc1xuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IHR5cGUgU2hlbGxTZXJ2aWNlc1NldHRpbmdzID0ge1xuXHRzaGVsbENvbnRhaW5lcj86IENvbnRhaW5lcjtcbn07XG5cbi8qKlxuICogV3JhcCBhIEpRdWVyeSBQcm9taXNlIHdpdGhpbiBhIG5hdGl2ZSB7UHJvbWlzZX0uXG4gKlxuICogQHRlbXBsYXRlIHtvYmplY3R9IFRcbiAqIEBwYXJhbSB7alF1ZXJ5LlByb21pc2U8VD59IGpxdWVyeVByb21pc2UgVGhlIG9yaWdpbmFsIGpxdWVyeSBwcm9taXNlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxUPn0gQSBuYXRpdmUgcHJvbWlzZSB3cmFwcGluZyB0aGUgc2FtZSBvYmplY3RcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHdyYXBKUXVlcnlQcm9taXNlPFQ+KGpxdWVyeVByb21pc2U6IGpRdWVyeS5Qcm9taXNlKTogUHJvbWlzZTxUPiB7XG5cdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvY2F0Y2gtb3ItcmV0dXJuXG5cdFx0anF1ZXJ5UHJvbWlzZS5kb25lKHJlc29sdmUgYXMgYW55KS5mYWlsKHJlamVjdCk7XG5cdH0pO1xufVxuXG4vKipcbiAqIEJhc2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoZWxsU2VydmljZXNcbiAqXG4gKiBAaW1wbGVtZW50cyB7SVNoZWxsU2VydmljZXN9XG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBTaGVsbFNlcnZpY2VzIGV4dGVuZHMgU2VydmljZTxSZXF1aXJlZDxTaGVsbFNlcnZpY2VzU2V0dGluZ3M+PiBpbXBsZW1lbnRzIElTaGVsbFNlcnZpY2VzIHtcblx0cmVzb2x2ZUZuOiBhbnk7XG5cdHJlamVjdEZuOiBhbnk7XG5cdGluaXRQcm9taXNlITogUHJvbWlzZTxhbnk+O1xuXHQvLyAhOiBtZWFucyB0aGF0IHdlIGtub3cgaXQgd2lsbCBiZSBhc3NpZ25lZCBiZWZvcmUgdXNhZ2Vcblx0Y3Jvc3NBcHBOYXZTZXJ2aWNlITogQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb247XG5cdHVybFBhcnNpbmdTZXJ2aWNlITogVVJMUGFyc2luZztcblx0c2hlbGxOYXZpZ2F0aW9uITogU2hlbGxOYXZpZ2F0aW9uO1xuXHRvU2hlbGxDb250YWluZXIhOiBDb250YWluZXI7XG5cdHNoZWxsVUlTZXJ2aWNlITogYW55O1xuXHRpbnN0YW5jZVR5cGUhOiBzdHJpbmc7XG5cdGxpbmtzQ2FjaGUhOiBhbnk7XG5cdGZuRmluZFNlbWFudGljT2JqZWN0c0luQ2FjaGU6IGFueTtcblxuXHRpbml0KCkge1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db250ZXh0LnNjb3BlT2JqZWN0IGFzIGFueTtcblx0XHR0aGlzLm9TaGVsbENvbnRhaW5lciA9IG9Db250ZXh0LnNldHRpbmdzLnNoZWxsQ29udGFpbmVyO1xuXHRcdHRoaXMuaW5zdGFuY2VUeXBlID0gXCJyZWFsXCI7XG5cdFx0dGhpcy5saW5rc0NhY2hlID0ge307XG5cdFx0dGhpcy5mbkZpbmRTZW1hbnRpY09iamVjdHNJbkNhY2hlID0gZnVuY3Rpb24ob0FyZ3M6IGFueSk6IG9iamVjdCB7XG5cdFx0XHRjb25zdCBfb0FyZ3M6IGFueSA9IG9BcmdzO1xuXHRcdFx0Y29uc3QgYUNhY2hlZFNlbWFudGljT2JqZWN0cyA9IFtdO1xuXHRcdFx0Y29uc3QgYU5vbkNhY2hlZFNlbWFudGljT2JqZWN0cyA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBfb0FyZ3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKCEhX29BcmdzW2ldWzBdICYmICEhX29BcmdzW2ldWzBdLnNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMubGlua3NDYWNoZVtfb0FyZ3NbaV1bMF0uc2VtYW50aWNPYmplY3RdKSB7XG5cdFx0XHRcdFx0XHRhQ2FjaGVkU2VtYW50aWNPYmplY3RzLnB1c2godGhpcy5saW5rc0NhY2hlW19vQXJnc1tpXVswXS5zZW1hbnRpY09iamVjdF0ubGlua3MpO1xuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG9BcmdzW2ldWzBdLCBcImxpbmtzXCIsIHtcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHRoaXMubGlua3NDYWNoZVtfb0FyZ3NbaV1bMF0uc2VtYW50aWNPYmplY3RdLmxpbmtzXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YU5vbkNhY2hlZFNlbWFudGljT2JqZWN0cy5wdXNoKF9vQXJnc1tpXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4geyBvbGRBcmdzOiBvQXJncywgbmV3QXJnczogYU5vbkNhY2hlZFNlbWFudGljT2JqZWN0cywgY2FjaGVkTGlua3M6IGFDYWNoZWRTZW1hbnRpY09iamVjdHMgfTtcblx0XHR9O1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLnJlc29sdmVGbiA9IHJlc29sdmU7XG5cdFx0XHR0aGlzLnJlamVjdEZuID0gcmVqZWN0O1xuXHRcdH0pO1xuXHRcdGNvbnN0IG9Dcm9zc0FwcE5hdlNlcnZpY2VQcm9taXNlID0gdGhpcy5vU2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb25cIik7XG5cdFx0Y29uc3Qgb1VybFBhcnNpbmdTZXJ2aWNlUHJvbWlzZSA9IHRoaXMub1NoZWxsQ29udGFpbmVyLmdldFNlcnZpY2VBc3luYyhcIlVSTFBhcnNpbmdcIik7XG5cdFx0Y29uc3Qgb1NoZWxsTmF2aWdhdGlvblNlcnZpY2VQcm9taXNlID0gdGhpcy5vU2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiU2hlbGxOYXZpZ2F0aW9uXCIpO1xuXHRcdGNvbnN0IG9TaGVsbFVJU2VydmljZVByb21pc2UgPSBvQ29tcG9uZW50LmdldFNlcnZpY2UoXCJTaGVsbFVJU2VydmljZVwiKTtcblx0XHRQcm9taXNlLmFsbChbb0Nyb3NzQXBwTmF2U2VydmljZVByb21pc2UsIG9VcmxQYXJzaW5nU2VydmljZVByb21pc2UsIG9TaGVsbE5hdmlnYXRpb25TZXJ2aWNlUHJvbWlzZSwgb1NoZWxsVUlTZXJ2aWNlUHJvbWlzZV0pXG5cdFx0XHQudGhlbigoW29Dcm9zc0FwcE5hdlNlcnZpY2UsIG9VcmxQYXJzaW5nU2VydmljZSwgb1NoZWxsTmF2aWdhdGlvbiwgb1NoZWxsVUlTZXJ2aWNlXSkgPT4ge1xuXHRcdFx0XHR0aGlzLmNyb3NzQXBwTmF2U2VydmljZSA9IG9Dcm9zc0FwcE5hdlNlcnZpY2U7XG5cdFx0XHRcdHRoaXMudXJsUGFyc2luZ1NlcnZpY2UgPSBvVXJsUGFyc2luZ1NlcnZpY2U7XG5cdFx0XHRcdHRoaXMuc2hlbGxOYXZpZ2F0aW9uID0gb1NoZWxsTmF2aWdhdGlvbjtcblx0XHRcdFx0dGhpcy5zaGVsbFVJU2VydmljZSA9IG9TaGVsbFVJU2VydmljZTtcblx0XHRcdFx0dGhpcy5yZXNvbHZlRm4oKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2godGhpcy5yZWplY3RGbik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB0YXJnZXQgbGlua3MgY29uZmlndXJlZCBmb3IgYSBnaXZlbiBzZW1hbnRpYyBvYmplY3QgJiBhY3Rpb25cblx0ICogV2lsbCByZXRyaWV2ZSB0aGUgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb25cblx0ICogc2VydmljZSByZWZlcmVuY2UgY2FsbCB0aGUgZ2V0TGlua3MgbWV0aG9kLiBJbiBjYXNlIHNlcnZpY2UgaXMgbm90IGF2YWlsYWJsZSBvciBhbnkgZXhjZXB0aW9uXG5cdCAqIG1ldGhvZCB0aHJvd3MgZXhjZXB0aW9uIGVycm9yIGluIGNvbnNvbGUuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb0FyZ3MgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5Dcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbj0+Z2V0TGlua3MgYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gdGFyZ2V0IGxpbmtzIGFycmF5XG5cdCAqL1xuXHRnZXRMaW5rcyhvQXJnczogb2JqZWN0KSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL2NhdGNoLW9yLXJldHVyblxuXHRcdFx0dGhpcy5jcm9zc0FwcE5hdlNlcnZpY2Vcblx0XHRcdFx0LmdldExpbmtzKG9BcmdzKVxuXHRcdFx0XHQuZmFpbCgob0Vycm9yOiBhbnkpID0+IHtcblx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKG9FcnJvciArIFwiIHNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS5nZXRMaW5rc1wiKSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKHJlc29sdmUpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgdGFyZ2V0IGxpbmtzIGNvbmZpZ3VyZWQgZm9yIGEgZ2l2ZW4gc2VtYW50aWMgb2JqZWN0ICYgYWN0aW9uIGluIGNhY2hlXG5cdCAqIFdpbGwgcmV0cmlldmUgdGhlIENyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uXG5cdCAqIHNlcnZpY2UgcmVmZXJlbmNlIGNhbGwgdGhlIGdldExpbmtzIG1ldGhvZC4gSW4gY2FzZSBzZXJ2aWNlIGlzIG5vdCBhdmFpbGFibGUgb3IgYW55IGV4Y2VwdGlvblxuXHQgKiBtZXRob2QgdGhyb3dzIGV4Y2VwdGlvbiBlcnJvciBpbiBjb25zb2xlLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9BcmdzIENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb249PmdldExpbmtzIGFyZ3VtZW50c1xuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIHRhcmdldCBsaW5rcyBhcnJheVxuXHQgKi9cblx0Z2V0TGlua3NXaXRoQ2FjaGUob0FyZ3M6IG9iamVjdCkge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9jYXRjaC1vci1yZXR1cm5cblx0XHRcdGlmICgob0FyZ3MgYXMgT2JqZWN0W10pLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRyZXNvbHZlKFtdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxldCBhTGlua3M7XG5cdFx0XHRcdGNvbnN0IG9DYWNoZVJlc3VsdHMgPSB0aGlzLmZuRmluZFNlbWFudGljT2JqZWN0c0luQ2FjaGUob0FyZ3MpO1xuXG5cdFx0XHRcdGlmIChvQ2FjaGVSZXN1bHRzLm5ld0FyZ3MubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZShvQ2FjaGVSZXN1bHRzLmNhY2hlZExpbmtzKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9jYXRjaC1vci1yZXR1cm5cblx0XHRcdFx0XHR0aGlzLmNyb3NzQXBwTmF2U2VydmljZVxuXHRcdFx0XHRcdFx0LmdldExpbmtzKG9DYWNoZVJlc3VsdHMubmV3QXJncylcblx0XHRcdFx0XHRcdC5mYWlsKChvRXJyb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKG9FcnJvciArIFwiIHNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS5nZXRMaW5rc1dpdGhDYWNoZVwiKSk7XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0LnRoZW4oKGFMaW5rczogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChhTGlua3MubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb1NlbWFudGljT2JqZWN0c0xpbmtzOiBhbnkgPSB7fTtcblxuXHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUxpbmtzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYUxpbmtzW2ldLmxlbmd0aCA+IDAgJiYgb0NhY2hlUmVzdWx0cy5uZXdBcmdzW2ldWzBdLmxpbmtzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b1NlbWFudGljT2JqZWN0c0xpbmtzW29DYWNoZVJlc3VsdHMubmV3QXJnc1tpXVswXS5zZW1hbnRpY09iamVjdF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGlua3M6IGFMaW5rc1tpXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxpbmtzQ2FjaGUgPSBPYmplY3QuYXNzaWduKHRoaXMubGlua3NDYWNoZSwgb1NlbWFudGljT2JqZWN0c0xpbmtzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpZiAob0NhY2hlUmVzdWx0cy5jYWNoZWRMaW5rcy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKGFMaW5rcyk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgYU1lcmdlZExpbmtzID0gW107XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGogPSAwO1xuXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgayA9IDA7IGsgPCBvQ2FjaGVSZXN1bHRzLm9sZEFyZ3MubGVuZ3RoOyBrKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChqIDwgYUxpbmtzLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YUxpbmtzW2pdLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvQ2FjaGVSZXN1bHRzLm9sZEFyZ3Nba11bMF0uc2VtYW50aWNPYmplY3QgPT09IG9DYWNoZVJlc3VsdHMubmV3QXJnc1tqXVswXS5zZW1hbnRpY09iamVjdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhTWVyZ2VkTGlua3MucHVzaChhTGlua3Nbal0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGorKztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhTWVyZ2VkTGlua3MucHVzaChvQ2FjaGVSZXN1bHRzLm9sZEFyZ3Nba11bMF0ubGlua3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhTWVyZ2VkTGlua3MucHVzaChvQ2FjaGVSZXN1bHRzLm9sZEFyZ3Nba11bMF0ubGlua3MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKGFNZXJnZWRMaW5rcyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCByZXRyaWV2ZSB0aGUgU2hlbGxDb250YWluZXIuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBzYXAudXNoZWxsLmNvbnRhaW5lclxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3Qgd2l0aCBwcmVkZWZpbmVkIHNoZWxsQ29udGFpbmVyIG1ldGhvZHNcblx0ICovXG5cdGdldFNoZWxsQ29udGFpbmVyKCkge1xuXHRcdHJldHVybiB0aGlzLm9TaGVsbENvbnRhaW5lcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgdG9FeHRlcm5hbCBtZXRob2Qgb2YgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb24gc2VydmljZSB3aXRoIE5hdmlnYXRpb24gQXJndW1lbnRzIGFuZCBvQ29tcG9uZW50LlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtBcnJheX0gb05hdkFyZ3VtZW50c0FyciBBbmRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db21wb25lbnQgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5Dcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbj0+dG9FeHRlcm5hbCBhcmd1bWVudHNcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHR0b0V4dGVybmFsKG9OYXZBcmd1bWVudHNBcnI6IEFycmF5PG9iamVjdD4sIG9Db21wb25lbnQ6IG9iamVjdCk6IHZvaWQge1xuXHRcdHRoaXMuY3Jvc3NBcHBOYXZTZXJ2aWNlLnRvRXh0ZXJuYWwob05hdkFyZ3VtZW50c0Fyciwgb0NvbXBvbmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB0YXJnZXQgc3RhcnR1cEFwcFN0YXRlXG5cdCAqIFdpbGwgY2hlY2sgdGhlIGV4aXN0YW5jZSBvZiB0aGUgU2hlbGxDb250YWluZXIgYW5kIHJldHJpZXZlIHRoZSBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvblxuXHQgKiBzZXJ2aWNlIHJlZmVyZW5jZSBjYWxsIHRoZSBnZXRTdGFydHVwQXBwU3RhdGUgbWV0aG9kLiBJbiBjYXNlIHNlcnZpY2UgaXMgbm90IGF2YWlsYWJsZSBvciBhbnkgZXhjZXB0aW9uXG5cdCAqIG1ldGhvZCB0aHJvd3MgZXhjZXB0aW9uIGVycm9yIGluIGNvbnNvbGUuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb0FyZ3MgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5Dcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbj0+Z2V0U3RhcnR1cEFwcFN0YXRlIGFyZ3VtZW50c1xuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIE9iamVjdFxuXHQgKi9cblx0Z2V0U3RhcnR1cEFwcFN0YXRlKG9BcmdzOiBDb21wb25lbnQpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Ly8gSlF1ZXJ5IFByb21pc2UgYmVoYXZlcyBkaWZmZXJlbnRseVxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvY2F0Y2gtb3ItcmV0dXJuXG5cdFx0XHQodGhpcy5jcm9zc0FwcE5hdlNlcnZpY2UgYXMgYW55KVxuXHRcdFx0XHQuZ2V0U3RhcnR1cEFwcFN0YXRlKG9BcmdzKVxuXHRcdFx0XHQuZmFpbCgob0Vycm9yOiBhbnkpID0+IHtcblx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKG9FcnJvciArIFwiIHNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS5nZXRTdGFydHVwQXBwU3RhdGVcIikpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbihyZXNvbHZlKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgYmFja1RvUHJldmlvdXNBcHAgbWV0aG9kIG9mIENyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uIHNlcnZpY2UuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdGJhY2tUb1ByZXZpb3VzQXBwKCkge1xuXHRcdHJldHVybiB0aGlzLmNyb3NzQXBwTmF2U2VydmljZS5iYWNrVG9QcmV2aW91c0FwcCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBocmVmRm9yRXh0ZXJuYWwgbWV0aG9kIG9mIENyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uIHNlcnZpY2UuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb0FyZ3MgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db21wb25lbnQgVGhlIGFwcENvbXBvbmVudFxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJBc3luYyBXaGV0aGVyIHRoaXMgY2FsbCBzaG91bGQgYmUgYXN5bmMgb3Igbm90XG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb249PmhyZWZGb3JFeHRlcm5hbCBhcmd1bWVudHNcblx0ICogQHJldHVybnMge3N0cmluZ30gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIHN0cmluZ1xuXHQgKi9cblx0aHJlZkZvckV4dGVybmFsKG9BcmdzOiBvYmplY3QsIG9Db21wb25lbnQ/OiBvYmplY3QsIGJBc3luYz86IGJvb2xlYW4pIHtcblx0XHRyZXR1cm4gdGhpcy5jcm9zc0FwcE5hdlNlcnZpY2UuaHJlZkZvckV4dGVybmFsKG9BcmdzLCBvQ29tcG9uZW50IGFzIG9iamVjdCwgISFiQXN5bmMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBnZXRBcHBTdGF0ZSBtZXRob2Qgb2YgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb24gc2VydmljZSB3aXRoIG9Db21wb25lbnQgYW5kIG9BcHBTdGF0ZUtleS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvQ29tcG9uZW50XG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzQXBwU3RhdGVLZXkgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5Dcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbj0+Z2V0QXBwU3RhdGUgYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gb2JqZWN0XG5cdCAqL1xuXHRnZXRBcHBTdGF0ZShvQ29tcG9uZW50OiBDb21wb25lbnQsIHNBcHBTdGF0ZUtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHdyYXBKUXVlcnlQcm9taXNlKCh0aGlzLmNyb3NzQXBwTmF2U2VydmljZSBhcyBhbnkpLmdldEFwcFN0YXRlKG9Db21wb25lbnQsIHNBcHBTdGF0ZUtleSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBjcmVhdGVFbXB0eUFwcFN0YXRlIG1ldGhvZCBvZiBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbiBzZXJ2aWNlIHdpdGggb0NvbXBvbmVudC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvQ29tcG9uZW50IENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb249PmNyZWF0ZUVtcHR5QXBwU3RhdGUgYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gb2JqZWN0XG5cdCAqL1xuXHRjcmVhdGVFbXB0eUFwcFN0YXRlKG9Db21wb25lbnQ6IENvbXBvbmVudCkge1xuXHRcdHJldHVybiAodGhpcy5jcm9zc0FwcE5hdlNlcnZpY2UgYXMgYW55KS5jcmVhdGVFbXB0eUFwcFN0YXRlKG9Db21wb25lbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBpc05hdmlnYXRpb25TdXBwb3J0ZWQgbWV0aG9kIG9mIENyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uIHNlcnZpY2Ugd2l0aCBOYXZpZ2F0aW9uIEFyZ3VtZW50cyBhbmQgb0NvbXBvbmVudC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7QXJyYXl9IG9OYXZBcmd1bWVudHNBcnJcblx0ICogQHBhcmFtIHtvYmplY3R9IG9Db21wb25lbnQgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5Dcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbj0+aXNOYXZpZ2F0aW9uU3VwcG9ydGVkIGFyZ3VtZW50c1xuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIG9iamVjdFxuXHQgKi9cblx0aXNOYXZpZ2F0aW9uU3VwcG9ydGVkKG9OYXZBcmd1bWVudHNBcnI6IEFycmF5PG9iamVjdD4sIG9Db21wb25lbnQ6IG9iamVjdCkge1xuXHRcdHJldHVybiB3cmFwSlF1ZXJ5UHJvbWlzZSh0aGlzLmNyb3NzQXBwTmF2U2VydmljZS5pc05hdmlnYXRpb25TdXBwb3J0ZWQob05hdkFyZ3VtZW50c0Fyciwgb0NvbXBvbmVudCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBpc0luaXRpYWxOYXZpZ2F0aW9uIG1ldGhvZCBvZiBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbiBzZXJ2aWNlLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2hpY2ggd2lsbCBiZSByZXNvbHZlZCB0byBib29sZWFuXG5cdCAqL1xuXHRpc0luaXRpYWxOYXZpZ2F0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmNyb3NzQXBwTmF2U2VydmljZS5pc0luaXRpYWxOYXZpZ2F0aW9uKCk7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIGV4cGFuZENvbXBhY3RIYXNoIG1ldGhvZCBvZiBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbiBzZXJ2aWNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0hhc2hGcmFnbWVudCBBbiAoaW50ZXJuYWwgZm9ybWF0KSBzaGVsbCBoYXNoXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhlIHN1Y2Nlc3MgaGFuZGxlciBvZiB0aGUgcmVzb2x2ZSBwcm9taXNlIGdldCBhbiBleHBhbmRlZCBzaGVsbCBoYXNoIGFzIGZpcnN0IGFyZ3VtZW50XG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0ZXhwYW5kQ29tcGFjdEhhc2goc0hhc2hGcmFnbWVudDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuY3Jvc3NBcHBOYXZTZXJ2aWNlLmV4cGFuZENvbXBhY3RIYXNoKHNIYXNoRnJhZ21lbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBwYXJzZVNoZWxsSGFzaCBtZXRob2Qgb2YgVVJMUGFyc2luZyBzZXJ2aWNlIHdpdGggZ2l2ZW4gc0hhc2guXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0hhc2ggQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5VUkxQYXJzaW5nPT5wYXJzZVNoZWxsSGFzaCBhcmd1bWVudHNcblx0ICogQHJldHVybnMge29iamVjdH1cblx0ICovXG5cdHBhcnNlU2hlbGxIYXNoKHNIYXNoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy51cmxQYXJzaW5nU2VydmljZS5wYXJzZVNoZWxsSGFzaChzSGFzaCk7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIHNwbGl0SGFzaCBtZXRob2Qgb2YgVVJMUGFyc2luZyBzZXJ2aWNlIHdpdGggZ2l2ZW4gc0hhc2guXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0hhc2ggQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5VUkxQYXJzaW5nPT5zcGxpdEhhc2ggYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gb2JqZWN0XG5cdCAqL1xuXHRzcGxpdEhhc2goc0hhc2g6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLnVybFBhcnNpbmdTZXJ2aWNlLnNwbGl0SGFzaChzSGFzaCk7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIGNvbnN0cnVjdFNoZWxsSGFzaCBtZXRob2Qgb2YgVVJMUGFyc2luZyBzZXJ2aWNlIHdpdGggZ2l2ZW4gc0hhc2guXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb05ld1NoZWxsSGFzaCBDaGVjayB0aGUgZGVmaW5pdGlvbiBvZlxuXHQgKiBzYXAudXNoZWxsLnNlcnZpY2VzLlVSTFBhcnNpbmc9PmNvbnN0cnVjdFNoZWxsSGFzaCBhcmd1bWVudHNcblx0ICogQHJldHVybnMge3N0cmluZ30gU2hlbGwgSGFzaCBzdHJpbmdcblx0ICovXG5cdGNvbnN0cnVjdFNoZWxsSGFzaChvTmV3U2hlbGxIYXNoOiBvYmplY3QpIHtcblx0XHRyZXR1cm4gdGhpcy51cmxQYXJzaW5nU2VydmljZS5jb25zdHJ1Y3RTaGVsbEhhc2gob05ld1NoZWxsSGFzaCk7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIHNldERpcnR5RmxhZyBtZXRob2Qgd2l0aCBnaXZlbiBkaXJ0eSBzdGF0ZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gYkRpcnR5IENoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHNhcC51c2hlbGwuQ29udGFpbmVyLnNldERpcnR5RmxhZyBhcmd1bWVudHNcblx0ICovXG5cdHNldERpcnR5RmxhZyhiRGlydHk6IGJvb2xlYW4pIHtcblx0XHR0aGlzLm9TaGVsbENvbnRhaW5lci5zZXREaXJ0eUZsYWcoYkRpcnR5KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIgbWV0aG9kIHdpdGggZ2l2ZW4gZGlydHkgc3RhdGUgcHJvdmlkZXIgY2FsbGJhY2sgbWV0aG9kLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZm5EaXJ0eVN0YXRlUHJvdmlkZXIgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Ygc2FwLnVzaGVsbC5Db250YWluZXIucmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIgYXJndW1lbnRzXG5cdCAqL1xuXHRyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlcihmbkRpcnR5U3RhdGVQcm92aWRlcjogRnVuY3Rpb24pIHtcblx0XHR0aGlzLm9TaGVsbENvbnRhaW5lci5yZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlcihmbkRpcnR5U3RhdGVQcm92aWRlcik7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIGRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIgbWV0aG9kIHdpdGggZ2l2ZW4gZGlydHkgc3RhdGUgcHJvdmlkZXIgY2FsbGJhY2sgbWV0aG9kLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZm5EaXJ0eVN0YXRlUHJvdmlkZXIgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Ygc2FwLnVzaGVsbC5Db250YWluZXIuZGVyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlciBhcmd1bWVudHNcblx0ICovXG5cdGRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZm5EaXJ0eVN0YXRlUHJvdmlkZXI6IEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5vU2hlbGxDb250YWluZXIuZGVyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlcihmbkRpcnR5U3RhdGVQcm92aWRlcik7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIGNyZWF0ZVJlbmRlcmVyIG1ldGhvZCBvZiB1c2hlbGwgY29udGFpbmVyLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHJldHVybnMge29iamVjdH0gUmV0dXJucyByZW5kZXJlciBvYmplY3Rcblx0ICovXG5cdGNyZWF0ZVJlbmRlcmVyKCkge1xuXHRcdHJldHVybiB0aGlzLm9TaGVsbENvbnRhaW5lci5jcmVhdGVSZW5kZXJlcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBnZXRVc2VyIG1ldGhvZCBvZiB1c2hlbGwgY29udGFpbmVyLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHJldHVybnMge29iamVjdH0gUmV0dXJucyBVc2VyIG9iamVjdFxuXHQgKi9cblx0Z2V0VXNlcigpIHtcblx0XHRyZXR1cm4gKHRoaXMub1NoZWxsQ29udGFpbmVyIGFzIGFueSkuZ2V0VXNlcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2hlY2sgaWYgdXNoZWxsIGNvbnRhaW5lciBpcyBhdmFpbGFibGUgb3Igbm90LlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgdHJ1ZVxuXHQgKi9cblx0aGFzVVNoZWxsKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCByZWdpc3Rlck5hdmlnYXRpb25GaWx0ZXIgbWV0aG9kIG9mIHNoZWxsTmF2aWdhdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZm5OYXZGaWx0ZXIgVGhlIGZpbHRlciBmdW5jdGlvbiB0byByZWdpc3RlclxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRyZWdpc3Rlck5hdmlnYXRpb25GaWx0ZXIoZm5OYXZGaWx0ZXI6IEZ1bmN0aW9uKSB7XG5cdFx0KHRoaXMuc2hlbGxOYXZpZ2F0aW9uIGFzIGFueSkucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgdW5yZWdpc3Rlck5hdmlnYXRpb25GaWx0ZXIgbWV0aG9kIG9mIHNoZWxsTmF2aWdhdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZm5OYXZGaWx0ZXIgVGhlIGZpbHRlciBmdW5jdGlvbiB0byB1bnJlZ2lzdGVyXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdHVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyOiBGdW5jdGlvbikge1xuXHRcdCh0aGlzLnNoZWxsTmF2aWdhdGlvbiBhcyBhbnkpLnVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgc2V0QmFja05hdmlnYXRpb24gbWV0aG9kIG9mIFNoZWxsVUlTZXJ2aWNlXG5cdCAqIHRoYXQgZGlzcGxheXMgdGhlIGJhY2sgYnV0dG9uIGluIHRoZSBzaGVsbCBoZWFkZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbkNhbGxCYWNrXSBBIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCBpbiB0aGUgVUkuXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdHNldEJhY2tOYXZpZ2F0aW9uKGZuQ2FsbEJhY2s/OiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdHRoaXMuc2hlbGxVSVNlcnZpY2Uuc2V0QmFja05hdmlnYXRpb24oZm5DYWxsQmFjayk7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIHNldEhpZXJhcmNoeSBtZXRob2Qgb2YgU2hlbGxVSVNlcnZpY2Vcblx0ICogdGhhdCBkaXNwbGF5cyB0aGUgZ2l2ZW4gaGllcmFyY2h5IGluIHRoZSBzaGVsbCBoZWFkZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0W119IFthSGllcmFyY2h5TGV2ZWxzXSBBbiBhcnJheSByZXByZXNlbnRpbmcgaGllcmFyY2hpZXMgb2YgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgYXBwLlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRzZXRIaWVyYXJjaHkoYUhpZXJhcmNoeUxldmVsczogQXJyYXk8b2JqZWN0Pik6IHZvaWQge1xuXHRcdHRoaXMuc2hlbGxVSVNlcnZpY2Uuc2V0SGllcmFyY2h5KGFIaWVyYXJjaHlMZXZlbHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBzZXRUaXRsZSBtZXRob2Qgb2YgU2hlbGxVSVNlcnZpY2Vcblx0ICogdGhhdCBkaXNwbGF5cyB0aGUgZ2l2ZW4gdGl0bGUgaW4gdGhlIHNoZWxsIGhlYWRlci5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IFtzVGl0bGVdIFRoZSBuZXcgdGl0bGUuIFRoZSBkZWZhdWx0IHRpdGxlIGlzIHNldCBpZiB0aGlzIGFyZ3VtZW50IGlzIG5vdCBnaXZlbi5cblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0c2V0VGl0bGUoc1RpdGxlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnNoZWxsVUlTZXJ2aWNlLnNldFRpdGxlKHNUaXRsZSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjdXJyZW50bHkgZGVmaW5lZCBjb250ZW50IGRlbnNpdHkuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb250ZW50IGRlbnNpdHkgdmFsdWVcblx0ICovXG5cdGdldENvbnRlbnREZW5zaXR5KCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuICgodGhpcy5vU2hlbGxDb250YWluZXIgYXMgYW55KS5nZXRVc2VyKCkgYXMgYW55KS5nZXRDb250ZW50RGVuc2l0eSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvciBhIGdpdmVuIHNlbWFudGljIG9iamVjdCwgdGhpcyBtZXRob2QgY29uc2lkZXJzIGFsbCBhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2VtYW50aWMgb2JqZWN0IGFuZFxuXHQgKiByZXR1cm5zIHRoZSBvbmUgdGFnZ2VkIGFzIGEgXCJwcmltYXJ5QWN0aW9uXCIuIElmIG5vIGluYm91bmQgdGFnZ2VkIGFzIFwicHJpbWFyeUFjdGlvblwiIGV4aXN0cywgdGhlbiBpdCByZXR1cm5zXG5cdCAqIHRoZSBpbnRlbnQgb2YgdGhlIGZpcnN0IGluYm91bmQgKGFmdGVyIHNvcnRpbmcgaGFzIGJlZW4gYXBwbGllZCkgbWF0Y2hpbmcgdGhlIGFjdGlvbiBcImRpc3BsYXlGYWN0U2hlZXRcIi5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzU2VtYW50aWNPYmplY3QgU2VtYW50aWMgb2JqZWN0LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbVBhcmFtZXRlcnMgU2VlICNDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbiNnZXRMaW5rcyBmb3IgZGVzY3JpcHRpb24uXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgaW50ZW50IGlmIGl0IGV4aXN0cy5cblx0ICovXG5cdGdldFByaW1hcnlJbnRlbnQoc1NlbWFudGljT2JqZWN0OiBzdHJpbmcsIG1QYXJhbWV0ZXJzPzogb2JqZWN0KTogUHJvbWlzZTxhbnk+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvY2F0Y2gtb3ItcmV0dXJuXG5cdFx0XHR0aGlzLmNyb3NzQXBwTmF2U2VydmljZVxuXHRcdFx0XHQuZ2V0UHJpbWFyeUludGVudChzU2VtYW50aWNPYmplY3QsIG1QYXJhbWV0ZXJzKVxuXHRcdFx0XHQuZmFpbCgob0Vycm9yOiBhbnkpID0+IHtcblx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKG9FcnJvciArIFwiIHNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS5nZXRQcmltYXJ5SW50ZW50XCIpKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4ocmVzb2x2ZSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuLyoqXG4gKiBTZXJ2aWNlIEZhY3RvcnkgZm9yIHRoZSBTaGVsbFNlcnZpY2VzXG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgU2hlbGxTZXJ2aWNlc0ZhY3RvcnkgZXh0ZW5kcyBTZXJ2aWNlRmFjdG9yeTxTaGVsbFNlcnZpY2VzU2V0dGluZ3M+IHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgZWl0aGVyIGEgc3RhbmRhcmQgb3IgYSBtb2NrIFNoZWxsIHNlcnZpY2UgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1NlcnZpY2VDb250ZXh0PFNoZWxsU2VydmljZXNTZXR0aW5ncz59IG9TZXJ2aWNlQ29udGV4dCBUaGUgc2hlbGxzZXJ2aWNlIGNvbnRleHRcblx0ICogQHJldHVybnMge1Byb21pc2U8SVNoZWxsU2VydmljZXM+fSBBIHByb21pc2UgZm9yIGEgc2hlbGwgc2VydmljZSBpbXBsZW1lbnRhdGlvblxuXHQgKiBAc2VlIFNlcnZpY2VGYWN0b3J5I2NyZWF0ZUluc3RhbmNlXG5cdCAqL1xuXHRjcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQ6IFNlcnZpY2VDb250ZXh0PFNoZWxsU2VydmljZXNTZXR0aW5ncz4pOiBQcm9taXNlPElTaGVsbFNlcnZpY2VzPiB7XG5cdFx0b1NlcnZpY2VDb250ZXh0LnNldHRpbmdzLnNoZWxsQ29udGFpbmVyID0gc2FwLnVzaGVsbCAmJiAoc2FwLnVzaGVsbC5Db250YWluZXIgYXMgQ29udGFpbmVyKTtcblx0XHRjb25zdCBvU2hlbGxTZXJ2aWNlID0gb1NlcnZpY2VDb250ZXh0LnNldHRpbmdzLnNoZWxsQ29udGFpbmVyXG5cdFx0XHQ/IG5ldyBTaGVsbFNlcnZpY2VzKG9TZXJ2aWNlQ29udGV4dCBhcyBTZXJ2aWNlQ29udGV4dDxSZXF1aXJlZDxTaGVsbFNlcnZpY2VzU2V0dGluZ3M+Pilcblx0XHRcdDogbmV3IFNoZWxsU2VydmljZU1vY2sob1NlcnZpY2VDb250ZXh0KTtcblx0XHRyZXR1cm4gb1NoZWxsU2VydmljZS5pbml0UHJvbWlzZS50aGVuKCgpID0+IHtcblx0XHRcdC8vIEVucmljaCB0aGUgYXBwQ29tcG9uZW50IHdpdGggdGhpcyBtZXRob2Rcblx0XHRcdChvU2VydmljZUNvbnRleHQuc2NvcGVPYmplY3QgYXMgYW55KS5nZXRTaGVsbFNlcnZpY2VzID0gKCkgPT4gb1NoZWxsU2VydmljZTtcblx0XHRcdHJldHVybiBvU2hlbGxTZXJ2aWNlO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNoZWxsU2VydmljZXNGYWN0b3J5O1xuIl19
761
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoZWxsU2VydmljZXNGYWN0b3J5LnRzIl0sIm5hbWVzIjpbIlNoZWxsU2VydmljZU1vY2siLCJpbml0IiwiaW5pdFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsImluc3RhbmNlVHlwZSIsImdldExpbmtzIiwib0FyZ3MiLCJnZXRMaW5rc1dpdGhDYWNoZSIsInRvRXh0ZXJuYWwiLCJvTmF2QXJndW1lbnRzQXJyIiwib0NvbXBvbmVudCIsImdldFN0YXJ0dXBBcHBTdGF0ZSIsImJhY2tUb1ByZXZpb3VzQXBwIiwiaHJlZkZvckV4dGVybmFsIiwiYkFzeW5jIiwiZ2V0QXBwU3RhdGUiLCJzQXBwU3RhdGVLZXkiLCJjcmVhdGVFbXB0eUFwcFN0YXRlIiwiaXNOYXZpZ2F0aW9uU3VwcG9ydGVkIiwiaXNJbml0aWFsTmF2aWdhdGlvbiIsImV4cGFuZENvbXBhY3RIYXNoIiwic0hhc2hGcmFnbWVudCIsInBhcnNlU2hlbGxIYXNoIiwic0hhc2giLCJzcGxpdEhhc2giLCJjb25zdHJ1Y3RTaGVsbEhhc2giLCJvTmV3U2hlbGxIYXNoIiwic2V0RGlydHlGbGFnIiwiYkRpcnR5IiwicmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIiLCJmbkRpcnR5U3RhdGVQcm92aWRlciIsImRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIiLCJjcmVhdGVSZW5kZXJlciIsImdldFVzZXIiLCJoYXNVU2hlbGwiLCJyZWdpc3Rlck5hdmlnYXRpb25GaWx0ZXIiLCJmbk5hdkZpbHRlciIsInVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyIiwic2V0QmFja05hdmlnYXRpb24iLCJmbkNhbGxCYWNrIiwic2V0SGllcmFyY2h5IiwiYUhpZXJhcmNoeUxldmVscyIsInNldFRpdGxlIiwic1RpdGxlIiwiZ2V0Q29udGVudERlbnNpdHkiLCJkb2N1bWVudCIsImJvZHkiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImdldFByaW1hcnlJbnRlbnQiLCJzU2VtYW50aWNPYmplY3QiLCJtUGFyYW1ldGVycyIsIlNlcnZpY2UiLCJ3cmFwSlF1ZXJ5UHJvbWlzZSIsImpxdWVyeVByb21pc2UiLCJyZWplY3QiLCJkb25lIiwiZmFpbCIsIlNoZWxsU2VydmljZXMiLCJvQ29udGV4dCIsImdldENvbnRleHQiLCJzY29wZU9iamVjdCIsIm9TaGVsbENvbnRhaW5lciIsInNldHRpbmdzIiwic2hlbGxDb250YWluZXIiLCJsaW5rc0NhY2hlIiwiZm5GaW5kU2VtYW50aWNPYmplY3RzSW5DYWNoZSIsIl9vQXJncyIsImFDYWNoZWRTZW1hbnRpY09iamVjdHMiLCJhTm9uQ2FjaGVkU2VtYW50aWNPYmplY3RzIiwiaSIsImxlbmd0aCIsInNlbWFudGljT2JqZWN0IiwicHVzaCIsImxpbmtzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsIm9sZEFyZ3MiLCJuZXdBcmdzIiwiY2FjaGVkTGlua3MiLCJyZXNvbHZlRm4iLCJyZWplY3RGbiIsIm9Dcm9zc0FwcE5hdlNlcnZpY2VQcm9taXNlIiwiZ2V0U2VydmljZUFzeW5jIiwib1VybFBhcnNpbmdTZXJ2aWNlUHJvbWlzZSIsIm9TaGVsbE5hdmlnYXRpb25TZXJ2aWNlUHJvbWlzZSIsIm9TaGVsbFVJU2VydmljZVByb21pc2UiLCJnZXRTZXJ2aWNlIiwiYWxsIiwidGhlbiIsIm9Dcm9zc0FwcE5hdlNlcnZpY2UiLCJvVXJsUGFyc2luZ1NlcnZpY2UiLCJvU2hlbGxOYXZpZ2F0aW9uIiwib1NoZWxsVUlTZXJ2aWNlIiwiY3Jvc3NBcHBOYXZTZXJ2aWNlIiwidXJsUGFyc2luZ1NlcnZpY2UiLCJzaGVsbE5hdmlnYXRpb24iLCJzaGVsbFVJU2VydmljZSIsImNhdGNoIiwib0Vycm9yIiwiRXJyb3IiLCJhTGlua3MiLCJvQ2FjaGVSZXN1bHRzIiwib1NlbWFudGljT2JqZWN0c0xpbmtzIiwidW5kZWZpbmVkIiwiYXNzaWduIiwiYU1lcmdlZExpbmtzIiwiaiIsImsiLCJnZXRTaGVsbENvbnRhaW5lciIsIlNoZWxsU2VydmljZXNGYWN0b3J5IiwiY3JlYXRlSW5zdGFuY2UiLCJvU2VydmljZUNvbnRleHQiLCJzYXAiLCJ1c2hlbGwiLCJDb250YWluZXIiLCJvU2hlbGxTZXJ2aWNlIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsIlNlcnZpY2VGYWN0b3J5Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFDTUEsZ0I7Ozs7Ozs7OztXQUlMQyxJLEdBQUEsZ0JBQU87QUFDTixXQUFLQyxXQUFMLEdBQW1CQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsSUFBaEIsQ0FBbkI7QUFDQSxXQUFLQyxZQUFMLEdBQW9CLE1BQXBCO0FBQ0EsSzs7V0FFREMsUSxHQUFBLGtCQUFTQyxLQUFULEVBQXdCO0FBQ3ZCLGFBQU9KLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixFQUFoQixDQUFQO0FBQ0EsSzs7V0FFREksaUIsR0FBQSwyQkFBa0JELEtBQWxCLEVBQWlDO0FBQ2hDLGFBQU9KLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQixFQUFoQixDQUFQO0FBQ0EsSzs7V0FFREssVSxHQUFBLG9CQUFXQyxnQkFBWCxFQUE0Q0MsVUFBNUMsRUFBZ0U7QUFDL0Q7QUFDQSxLOztXQUVEQyxrQixHQUFBLDRCQUFtQkwsS0FBbkIsRUFBa0M7QUFDakMsYUFBT0osT0FBTyxDQUFDQyxPQUFSLENBQWdCLElBQWhCLENBQVA7QUFDQSxLOztXQUVEUyxpQixHQUFBLDZCQUFvQjtBQUNuQjtBQUNBLEs7O1dBRURDLGUsR0FBQSx5QkFBZ0JQLEtBQWhCLEVBQWdDSSxVQUFoQyxFQUFxREksTUFBckQsRUFBdUU7QUFDdEUsYUFBTyxFQUFQO0FBQ0EsSzs7V0FFREMsVyxHQUFBLHFCQUFZTCxVQUFaLEVBQWdDTSxZQUFoQyxFQUFzRDtBQUNyRCxhQUFPZCxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsRUFBaEIsQ0FBUDtBQUNBLEs7O1dBRURjLG1CLEdBQUEsNkJBQW9CUCxVQUFwQixFQUF3QztBQUN2QyxhQUFPUixPQUFP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QUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVb0QsTUFBVixFQUFxQjtBQUN2QztBQUNBLFFBQUEsTUFBSSxDQUFDd0Msa0JBQUwsQ0FDRTlDLGdCQURGLENBQ21CQyxlQURuQixFQUNvQ0MsV0FEcEMsRUFFRU0sSUFGRixDQUVPLFVBQUMyQyxNQUFELEVBQWlCO0FBQ3RCN0MsVUFBQUEsTUFBTSxDQUFDLElBQUk4QyxLQUFKLENBQVVELE1BQU0sR0FBRyxpRUFBbkIsQ0FBRCxDQUFOO0FBQ0EsU0FKRixFQUtFVixJQUxGLENBS092RixPQUxQO0FBTUEsT0FSTSxDQUFQO0FBU0EsSzs7O0lBN2UwQmlELE87QUFnZjVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztNQUNNMkQsb0I7Ozs7Ozs7OztBQUNMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO1lBQ0NDLGMsR0FBQSx3QkFBZUMsZUFBZixFQUFnRztBQUMvRkEsTUFBQUEsZUFBZSxDQUFDbEQsUUFBaEIsQ0FBeUJDLGNBQXpCLEdBQTBDa0QsR0FBRyxDQUFDQyxNQUFKLElBQWVELEdBQUcsQ0FBQ0MsTUFBSixDQUFXQyxTQUFwRTtBQUNBLFVBQU1DLGFBQWEsR0FBR0osZUFBZSxDQUFDbEQsUUFBaEIsQ0FBeUJDLGNBQXpCLEdBQ25CLElBQUlOLGFBQUosQ0FBa0J1RCxlQUFsQixDQURtQixHQUVuQixJQUFJbEgsZ0JBQUosQ0FBcUJrSCxlQUFyQixDQUZIO0FBR0EsYUFBT0ksYUFBYSxDQUFDcEgsV0FBZCxDQUEwQnlGLElBQTFCLENBQStCLFlBQU07QUFDM0M7QUFDQ3VCLFFBQUFBLGVBQWUsQ0FBQ3BELFdBQWpCLENBQXFDeUQsZ0JBQXJDLEdBQXdEO0FBQUEsaUJBQU1ELGFBQU47QUFBQSxTQUF4RDs7QUFDQSxlQUFPQSxhQUFQO0FBQ0EsT0FKTSxDQUFQO0FBS0EsSzs7O0lBbEJpQ0UsYzs7U0FxQnBCUixvQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmltcG9ydCBTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFNlcnZpY2UgZnJvbSBcInNhcC91aS9jb3JlL3NlcnZpY2UvU2VydmljZVwiO1xuaW1wb3J0IHsgU2VydmljZUNvbnRleHQgfSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZVwiO1xuaW1wb3J0IENvbnRhaW5lciBmcm9tIFwic2FwL3VzaGVsbC9zZXJ2aWNlcy9Db250YWluZXJcIjtcbmltcG9ydCBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbiBmcm9tIFwic2FwL3VzaGVsbC9zZXJ2aWNlcy9Dcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvblwiO1xuaW1wb3J0IFNoZWxsTmF2aWdhdGlvbiBmcm9tIFwic2FwL3VzaGVsbC9zZXJ2aWNlcy9TaGVsbE5hdmlnYXRpb25cIjtcbmltcG9ydCBVUkxQYXJzaW5nIGZyb20gXCJzYXAvdXNoZWxsL3NlcnZpY2VzL1VSTFBhcnNpbmdcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgSVNoZWxsU2VydmljZXNcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNoZWxsU2VydmljZXMge1xuXHRpbml0UHJvbWlzZTogUHJvbWlzZTxJU2hlbGxTZXJ2aWNlcz47XG5cdGluc3RhbmNlVHlwZTogc3RyaW5nO1xuXHRjcm9zc0FwcE5hdlNlcnZpY2U/OiBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbjtcblx0Z2V0TGlua3Mob0FyZ3M6IG9iamVjdCk6IFByb21pc2U8YW55PjtcblxuXHRnZXRMaW5rc1dpdGhDYWNoZShvQXJnczogb2JqZWN0KTogUHJvbWlzZTxhbnlbXT47XG5cblx0dG9FeHRlcm5hbChvTmF2QXJndW1lbnRzQXJyOiBBcnJheTxvYmplY3Q+LCBvQ29tcG9uZW50OiBvYmplY3QpOiB2b2lkO1xuXG5cdGdldFN0YXJ0dXBBcHBTdGF0ZShvQXJnczogb2JqZWN0KTogUHJvbWlzZTxhbnk+O1xuXG5cdGJhY2tUb1ByZXZpb3VzQXBwKCk6IHZvaWQ7XG5cblx0aHJlZkZvckV4dGVybmFsKG9BcmdzPzogb2JqZWN0LCBvQ29tcG9uZW50Pzogb2JqZWN0LCBiQXN5bmM/OiBib29sZWFuKTogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xuXG5cdGdldEFwcFN0YXRlKG9Db21wb25lbnQ6IENvbXBvbmVudCwgc0FwcFN0YXRlS2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG5cblx0Y3JlYXRlRW1wdHlBcHBTdGF0ZShvQ29tcG9uZW50OiBDb21wb25lbnQpOiBvYmplY3Q7XG5cblx0aXNOYXZpZ2F0aW9uU3VwcG9ydGVkKG9OYXZBcmd1bWVudHNBcnI6IEFycmF5PG9iamVjdD4sIG9Db21wb25lbnQ6IG9iamVjdCk6IFByb21pc2U8YW55PjtcblxuXHRpc0luaXRpYWxOYXZpZ2F0aW9uKCk6IGJvb2xlYW47XG5cblx0ZXhwYW5kQ29tcGFjdEhhc2goc0hhc2hGcmFnbWVudDogc3RyaW5nKTogb2JqZWN0O1xuXG5cdHBhcnNlU2hlbGxIYXNoKHNIYXNoOiBzdHJpbmcpOiBhbnk7XG5cblx0c3BsaXRIYXNoKHNIYXNoOiBzdHJpbmcpOiBvYmplY3Q7XG5cblx0Y29uc3RydWN0U2hlbGxIYXNoKG9OZXdTaGVsbEhhc2g6IG9iamVjdCk6IHN0cmluZztcblxuXHRzZXREaXJ0eUZsYWcoYkRpcnR5OiBib29sZWFuKTogdm9pZDtcblxuXHRyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlcihmbkRpcnR5U3RhdGVQcm92aWRlcjogRnVuY3Rpb24pOiB2b2lkO1xuXG5cdGRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZm5EaXJ0eVN0YXRlUHJvdmlkZXI6IEZ1bmN0aW9uKTogdm9pZDtcblxuXHRjcmVhdGVSZW5kZXJlcigpOiBvYmplY3Q7XG5cblx0Z2V0VXNlcigpOiBhbnk7XG5cblx0aGFzVVNoZWxsKCk6IGJvb2xlYW47XG5cblx0cmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyOiBGdW5jdGlvbik6IHZvaWQ7XG5cblx0dW5yZWdpc3Rlck5hdmlnYXRpb25GaWx0ZXIoZm5OYXZGaWx0ZXI6IEZ1bmN0aW9uKTogdm9pZDtcblxuXHRzZXRCYWNrTmF2aWdhdGlvbihmbkNhbGxCYWNrPzogRnVuY3Rpb24pOiB2b2lkO1xuXG5cdHNldEhpZXJhcmNoeShhSGllcmFyY2h5TGV2ZWxzOiBBcnJheTxvYmplY3Q+KTogdm9pZDtcblxuXHRzZXRUaXRsZShzVGl0bGU6IHN0cmluZyk6IHZvaWQ7XG5cblx0Z2V0Q29udGVudERlbnNpdHkoKTogc3RyaW5nO1xuXG5cdGdldFByaW1hcnlJbnRlbnQoc1NlbWFudGljT2JqZWN0OiBzdHJpbmcsIG1QYXJhbWV0ZXJzPzogb2JqZWN0KTogUHJvbWlzZTxhbnk+O1xufVxuXG4vKipcbiAqIE1vY2sgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoZWxsU2VydmljZSBmb3IgT3BlbkZFXG4gKlxuICogQGltcGxlbWVudHMge0lTaGVsbFNlcnZpY2VzfVxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgU2hlbGxTZXJ2aWNlTW9jayBleHRlbmRzIFNlcnZpY2U8U2hlbGxTZXJ2aWNlc1NldHRpbmdzPiBpbXBsZW1lbnRzIElTaGVsbFNlcnZpY2VzIHtcblx0aW5pdFByb21pc2UhOiBQcm9taXNlPGFueT47XG5cdGluc3RhbmNlVHlwZSE6IHN0cmluZztcblxuXHRpbml0KCkge1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodGhpcyk7XG5cdFx0dGhpcy5pbnN0YW5jZVR5cGUgPSBcIm1vY2tcIjtcblx0fVxuXG5cdGdldExpbmtzKG9BcmdzOiBvYmplY3QpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcblx0fVxuXG5cdGdldExpbmtzV2l0aENhY2hlKG9BcmdzOiBvYmplY3QpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcblx0fVxuXG5cdHRvRXh0ZXJuYWwob05hdkFyZ3VtZW50c0FycjogQXJyYXk8b2JqZWN0Piwgb0NvbXBvbmVudDogb2JqZWN0KSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Z2V0U3RhcnR1cEFwcFN0YXRlKG9BcmdzOiBvYmplY3QpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuXHR9XG5cblx0YmFja1RvUHJldmlvdXNBcHAoKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aHJlZkZvckV4dGVybmFsKG9BcmdzPzogb2JqZWN0LCBvQ29tcG9uZW50Pzogb2JqZWN0LCBiQXN5bmM/OiBib29sZWFuKSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblxuXHRnZXRBcHBTdGF0ZShvQ29tcG9uZW50OiBvYmplY3QsIHNBcHBTdGF0ZUtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG5cdH1cblxuXHRjcmVhdGVFbXB0eUFwcFN0YXRlKG9Db21wb25lbnQ6IG9iamVjdCkge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuXHR9XG5cblx0aXNOYXZpZ2F0aW9uU3VwcG9ydGVkKG9OYXZBcmd1bWVudHNBcnI6IEFycmF5PG9iamVjdD4sIG9Db21wb25lbnQ6IG9iamVjdCkge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuXHR9XG5cblx0aXNJbml0aWFsTmF2aWdhdGlvbigpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRleHBhbmRDb21wYWN0SGFzaChzSGFzaEZyYWdtZW50OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcblx0fVxuXG5cdHBhcnNlU2hlbGxIYXNoKHNIYXNoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4ge307XG5cdH1cblxuXHRzcGxpdEhhc2goc0hhc2g6IHN0cmluZykge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuXHR9XG5cblx0Y29uc3RydWN0U2hlbGxIYXNoKG9OZXdTaGVsbEhhc2g6IG9iamVjdCkge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG5cblx0c2V0RGlydHlGbGFnKGJEaXJ0eTogYm9vbGVhbikge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyKGZuRGlydHlTdGF0ZVByb3ZpZGVyOiBGdW5jdGlvbikge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZm5EaXJ0eVN0YXRlUHJvdmlkZXI6IEZ1bmN0aW9uKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y3JlYXRlUmVuZGVyZXIoKSB7XG5cdFx0cmV0dXJuIHt9O1xuXHR9XG5cblx0Z2V0VXNlcigpIHtcblx0XHRyZXR1cm4ge307XG5cdH1cblxuXHRoYXNVU2hlbGwoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHNldEJhY2tOYXZpZ2F0aW9uKGZuQ2FsbEJhY2s/OiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHNldEhpZXJhcmNoeShhSGllcmFyY2h5TGV2ZWxzOiBBcnJheTxvYmplY3Q+KTogdm9pZCB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0c2V0VGl0bGUoc1RpdGxlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRnZXRDb250ZW50RGVuc2l0eSgpOiBzdHJpbmcge1xuXHRcdC8vIGluIGNhc2UgdGhlcmUgaXMgbm8gc2hlbGwgd2UgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHRoZSBjbGFzc2VzIGJlaW5nIGRlZmluZWQgb24gdGhlIGJvZHlcblx0XHRpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoXCJzYXBVaVNpemVDb3p5XCIpKSB7XG5cdFx0XHRyZXR1cm4gXCJjb3p5XCI7XG5cdFx0fSBlbHNlIGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucyhcInNhcFVpU2l6ZUNvbXBhY3RcIikpIHtcblx0XHRcdHJldHVybiBcImNvbXBhY3RcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9XG5cblx0Z2V0UHJpbWFyeUludGVudChzU2VtYW50aWNPYmplY3Q6IHN0cmluZywgbVBhcmFtZXRlcnM/OiBvYmplY3QpOiBQcm9taXNlPGFueT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIFNoZWxsU2VydmljZXNTZXR0aW5nc1xuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IHR5cGUgU2hlbGxTZXJ2aWNlc1NldHRpbmdzID0ge1xuXHRzaGVsbENvbnRhaW5lcj86IENvbnRhaW5lcjtcbn07XG5cbi8qKlxuICogV3JhcCBhIEpRdWVyeSBQcm9taXNlIHdpdGhpbiBhIG5hdGl2ZSB7UHJvbWlzZX0uXG4gKlxuICogQHRlbXBsYXRlIHtvYmplY3R9IFRcbiAqIEBwYXJhbSB7alF1ZXJ5LlByb21pc2U8VD59IGpxdWVyeVByb21pc2UgVGhlIG9yaWdpbmFsIGpxdWVyeSBwcm9taXNlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxUPn0gQSBuYXRpdmUgcHJvbWlzZSB3cmFwcGluZyB0aGUgc2FtZSBvYmplY3RcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHdyYXBKUXVlcnlQcm9taXNlPFQ+KGpxdWVyeVByb21pc2U6IGpRdWVyeS5Qcm9taXNlKTogUHJvbWlzZTxUPiB7XG5cdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvY2F0Y2gtb3ItcmV0dXJuXG5cdFx0anF1ZXJ5UHJvbWlzZS5kb25lKHJlc29sdmUgYXMgYW55KS5mYWlsKHJlamVjdCk7XG5cdH0pO1xufVxuXG4vKipcbiAqIEJhc2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoZWxsU2VydmljZXNcbiAqXG4gKiBAaW1wbGVtZW50cyB7SVNoZWxsU2VydmljZXN9XG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBTaGVsbFNlcnZpY2VzIGV4dGVuZHMgU2VydmljZTxSZXF1aXJlZDxTaGVsbFNlcnZpY2VzU2V0dGluZ3M+PiBpbXBsZW1lbnRzIElTaGVsbFNlcnZpY2VzIHtcblx0cmVzb2x2ZUZuOiBhbnk7XG5cdHJlamVjdEZuOiBhbnk7XG5cdGluaXRQcm9taXNlITogUHJvbWlzZTxhbnk+O1xuXHQvLyAhOiBtZWFucyB0aGF0IHdlIGtub3cgaXQgd2lsbCBiZSBhc3NpZ25lZCBiZWZvcmUgdXNhZ2Vcblx0Y3Jvc3NBcHBOYXZTZXJ2aWNlITogQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb247XG5cdHVybFBhcnNpbmdTZXJ2aWNlITogVVJMUGFyc2luZztcblx0c2hlbGxOYXZpZ2F0aW9uITogU2hlbGxOYXZpZ2F0aW9uO1xuXHRvU2hlbGxDb250YWluZXIhOiBDb250YWluZXI7XG5cdHNoZWxsVUlTZXJ2aWNlITogYW55O1xuXHRpbnN0YW5jZVR5cGUhOiBzdHJpbmc7XG5cdGxpbmtzQ2FjaGUhOiBhbnk7XG5cdGZuRmluZFNlbWFudGljT2JqZWN0c0luQ2FjaGU6IGFueTtcblxuXHRpbml0KCkge1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db250ZXh0LnNjb3BlT2JqZWN0IGFzIGFueTtcblx0XHR0aGlzLm9TaGVsbENvbnRhaW5lciA9IG9Db250ZXh0LnNldHRpbmdzLnNoZWxsQ29udGFpbmVyO1xuXHRcdHRoaXMuaW5zdGFuY2VUeXBlID0gXCJyZWFsXCI7XG5cdFx0dGhpcy5saW5rc0NhY2hlID0ge307XG5cdFx0dGhpcy5mbkZpbmRTZW1hbnRpY09iamVjdHNJbkNhY2hlID0gZnVuY3Rpb24ob0FyZ3M6IGFueSk6IG9iamVjdCB7XG5cdFx0XHRjb25zdCBfb0FyZ3M6IGFueSA9IG9BcmdzO1xuXHRcdFx0Y29uc3QgYUNhY2hlZFNlbWFudGljT2JqZWN0cyA9IFtdO1xuXHRcdFx0Y29uc3QgYU5vbkNhY2hlZFNlbWFudGljT2JqZWN0cyA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBfb0FyZ3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKCEhX29BcmdzW2ldWzBdICYmICEhX29BcmdzW2ldWzBdLnNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMubGlua3NDYWNoZVtfb0FyZ3NbaV1bMF0uc2VtYW50aWNPYmplY3RdKSB7XG5cdFx0XHRcdFx0XHRhQ2FjaGVkU2VtYW50aWNPYmplY3RzLnB1c2godGhpcy5saW5rc0NhY2hlW19vQXJnc1tpXVswXS5zZW1hbnRpY09iamVjdF0ubGlua3MpO1xuXHRcdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG9BcmdzW2ldWzBdLCBcImxpbmtzXCIsIHtcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHRoaXMubGlua3NDYWNoZVtfb0FyZ3NbaV1bMF0uc2VtYW50aWNPYmplY3RdLmxpbmtzXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YU5vbkNhY2hlZFNlbWFudGljT2JqZWN0cy5wdXNoKF9vQXJnc1tpXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4geyBvbGRBcmdzOiBvQXJncywgbmV3QXJnczogYU5vbkNhY2hlZFNlbWFudGljT2JqZWN0cywgY2FjaGVkTGlua3M6IGFDYWNoZWRTZW1hbnRpY09iamVjdHMgfTtcblx0XHR9O1xuXHRcdHRoaXMuaW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLnJlc29sdmVGbiA9IHJlc29sdmU7XG5cdFx0XHR0aGlzLnJlamVjdEZuID0gcmVqZWN0O1xuXHRcdH0pO1xuXHRcdGNvbnN0IG9Dcm9zc0FwcE5hdlNlcnZpY2VQcm9taXNlID0gdGhpcy5vU2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb25cIik7XG5cdFx0Y29uc3Qgb1VybFBhcnNpbmdTZXJ2aWNlUHJvbWlzZSA9IHRoaXMub1NoZWxsQ29udGFpbmVyLmdldFNlcnZpY2VBc3luYyhcIlVSTFBhcnNpbmdcIik7XG5cdFx0Y29uc3Qgb1NoZWxsTmF2aWdhdGlvblNlcnZpY2VQcm9taXNlID0gdGhpcy5vU2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiU2hlbGxOYXZpZ2F0aW9uXCIpO1xuXHRcdGNvbnN0IG9TaGVsbFVJU2VydmljZVByb21pc2UgPSBvQ29tcG9uZW50LmdldFNlcnZpY2UoXCJTaGVsbFVJU2VydmljZVwiKTtcblx0XHRQcm9taXNlLmFsbChbb0Nyb3NzQXBwTmF2U2VydmljZVByb21pc2UsIG9VcmxQYXJzaW5nU2VydmljZVByb21pc2UsIG9TaGVsbE5hdmlnYXRpb25TZXJ2aWNlUHJvbWlzZSwgb1NoZWxsVUlTZXJ2aWNlUHJvbWlzZV0pXG5cdFx0XHQudGhlbigoW29Dcm9zc0FwcE5hdlNlcnZpY2UsIG9VcmxQYXJzaW5nU2VydmljZSwgb1NoZWxsTmF2aWdhdGlvbiwgb1NoZWxsVUlTZXJ2aWNlXSkgPT4ge1xuXHRcdFx0XHR0aGlzLmNyb3NzQXBwTmF2U2VydmljZSA9IG9Dcm9zc0FwcE5hdlNlcnZpY2U7XG5cdFx0XHRcdHRoaXMudXJsUGFyc2luZ1NlcnZpY2UgPSBvVXJsUGFyc2luZ1NlcnZpY2U7XG5cdFx0XHRcdHRoaXMuc2hlbGxOYXZpZ2F0aW9uID0gb1NoZWxsTmF2aWdhdGlvbjtcblx0XHRcdFx0dGhpcy5zaGVsbFVJU2VydmljZSA9IG9TaGVsbFVJU2VydmljZTtcblx0XHRcdFx0dGhpcy5yZXNvbHZlRm4oKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2godGhpcy5yZWplY3RGbik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB0YXJnZXQgbGlua3MgY29uZmlndXJlZCBmb3IgYSBnaXZlbiBzZW1hbnRpYyBvYmplY3QgJiBhY3Rpb25cblx0ICogV2lsbCByZXRyaWV2ZSB0aGUgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb25cblx0ICogc2VydmljZSByZWZlcmVuY2UgY2FsbCB0aGUgZ2V0TGlua3MgbWV0aG9kLiBJbiBjYXNlIHNlcnZpY2UgaXMgbm90IGF2YWlsYWJsZSBvciBhbnkgZXhjZXB0aW9uXG5cdCAqIG1ldGhvZCB0aHJvd3MgZXhjZXB0aW9uIGVycm9yIGluIGNvbnNvbGUuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb0FyZ3MgQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5Dcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbj0+Z2V0TGlua3MgYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gdGFyZ2V0IGxpbmtzIGFycmF5XG5cdCAqL1xuXHRnZXRMaW5rcyhvQXJnczogb2JqZWN0KSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL2NhdGNoLW9yLXJldHVyblxuXHRcdFx0dGhpcy5jcm9zc0FwcE5hdlNlcnZpY2Vcblx0XHRcdFx0LmdldExpbmtzKG9BcmdzKVxuXHRcdFx0XHQuZmFpbCgob0Vycm9yOiBhbnkpID0+IHtcblx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKG9FcnJvciArIFwiIHNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeS5nZXRMaW5rc1wiKSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKHJlc29sdmUpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgdGFyZ2V0IGxpbmtzIGNvbmZpZ3VyZWQgZm9yIGEgZ2l2ZW4gc2VtYW50aWMgb2JqZWN0ICYgYWN0aW9uIGluIGNhY2hlXG5cdCAqIFdpbGwgcmV0cmlldmUgdGhlIENyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uXG5cdCAqIHNlcnZpY2UgcmVmZXJlbmNlIGNhbGwgdGhlIGdldExpbmtzIG1ldGhvZC4gSW4gY2FzZSBzZXJ2aWNlIGlzIG5vdCBhdmFpbGFibGUgb3IgYW55IGV4Y2VwdGlvblxuXHQgKiBtZXRob2QgdGhyb3dzIGV4Y2VwdGlvbiBlcnJvciBpbiBjb25zb2xlLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9BcmdzIENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb249PmdldExpbmtzIGFyZ3VtZW50c1xuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIHRhcmdldCBsaW5rcyBhcnJheVxuXHQgKi9cblx0Z2V0TGlua3NXaXRoQ2FjaGUob0FyZ3M6IG9iamVjdCk6IFByb21pc2U8YW55W10+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvY2F0Y2gtb3ItcmV0dXJuXG5cdFx0XHRpZiAoKG9BcmdzIGFzIE9iamVjdFtdKS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0cmVzb2x2ZShbXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgYUxpbmtzO1xuXHRcdFx0XHRjb25zdCBvQ2FjaGVSZXN1bHRzID0gdGhpcy5mbkZpbmRTZW1hbnRpY09iamVjdHNJbkNhY2hlKG9BcmdzKTtcblxuXHRcdFx0XHRpZiAob0NhY2hlUmVzdWx0cy5uZXdBcmdzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdHJlc29sdmUob0NhY2hlUmVzdWx0cy5jYWNoZWRMaW5rcyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvY2F0Y2gtb3ItcmV0dXJuXG5cdFx0XHRcdFx0dGhpcy5jcm9zc0FwcE5hdlNlcnZpY2Vcblx0XHRcdFx0XHRcdC5nZXRMaW5rcyhvQ2FjaGVSZXN1bHRzLm5ld0FyZ3MpXG5cdFx0XHRcdFx0XHQuZmFpbCgob0Vycm9yOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KG5ldyBFcnJvcihvRXJyb3IgKyBcIiBzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnkuZ2V0TGlua3NXaXRoQ2FjaGVcIikpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC50aGVuKChhTGlua3M6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoYUxpbmtzLmxlbmd0aCAhPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9TZW1hbnRpY09iamVjdHNMaW5rczogYW55ID0ge307XG5cblx0XHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFMaW5rcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFMaW5rc1tpXS5sZW5ndGggPiAwICYmIG9DYWNoZVJlc3VsdHMubmV3QXJnc1tpXVswXS5saW5rcyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9TZW1hbnRpY09iamVjdHNMaW5rc1tvQ2FjaGVSZXN1bHRzLm5ld0FyZ3NbaV1bMF0uc2VtYW50aWNPYmplY3RdID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxpbmtzOiBhTGlua3NbaV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5saW5rc0NhY2hlID0gT2JqZWN0LmFzc2lnbih0aGlzLmxpbmtzQ2FjaGUsIG9TZW1hbnRpY09iamVjdHNMaW5rcyk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aWYgKG9DYWNoZVJlc3VsdHMuY2FjaGVkTGlua3MubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZShhTGlua3MpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGFNZXJnZWRMaW5rcyA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdGxldCBqID0gMDtcblxuXHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGsgPSAwOyBrIDwgb0NhY2hlUmVzdWx0cy5vbGRBcmdzLmxlbmd0aDsgaysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaiA8IGFMaW5rcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFMaW5rc1tqXS5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b0NhY2hlUmVzdWx0cy5vbGRBcmdzW2tdWzBdLnNlbWFudGljT2JqZWN0ID09PSBvQ2FjaGVSZXN1bHRzLm5ld0FyZ3Nbal1bMF0uc2VtYW50aWNPYmplY3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YU1lcmdlZExpbmtzLnB1c2goYUxpbmtzW2pdKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqKys7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YU1lcmdlZExpbmtzLnB1c2gob0NhY2hlUmVzdWx0cy5vbGRBcmdzW2tdWzBdLmxpbmtzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YU1lcmdlZExpbmtzLnB1c2gob0NhY2hlUmVzdWx0cy5vbGRBcmdzW2tdWzBdLmxpbmtzKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZShhTWVyZ2VkTGlua3MpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgcmV0cmlldmUgdGhlIFNoZWxsQ29udGFpbmVyLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogc2FwLnVzaGVsbC5jb250YWluZXJcblx0ICogQHJldHVybnMge29iamVjdH0gT2JqZWN0IHdpdGggcHJlZGVmaW5lZCBzaGVsbENvbnRhaW5lciBtZXRob2RzXG5cdCAqL1xuXHRnZXRTaGVsbENvbnRhaW5lcigpIHtcblx0XHRyZXR1cm4gdGhpcy5vU2hlbGxDb250YWluZXI7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIHRvRXh0ZXJuYWwgbWV0aG9kIG9mIENyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uIHNlcnZpY2Ugd2l0aCBOYXZpZ2F0aW9uIEFyZ3VtZW50cyBhbmQgb0NvbXBvbmVudC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7QXJyYXl9IG9OYXZBcmd1bWVudHNBcnIgQW5kXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvQ29tcG9uZW50IENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb249PnRvRXh0ZXJuYWwgYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0dG9FeHRlcm5hbChvTmF2QXJndW1lbnRzQXJyOiBBcnJheTxvYmplY3Q+LCBvQ29tcG9uZW50OiBvYmplY3QpOiB2b2lkIHtcblx0XHR0aGlzLmNyb3NzQXBwTmF2U2VydmljZS50b0V4dGVybmFsKG9OYXZBcmd1bWVudHNBcnIsIG9Db21wb25lbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgdGFyZ2V0IHN0YXJ0dXBBcHBTdGF0ZVxuXHQgKiBXaWxsIGNoZWNrIHRoZSBleGlzdGFuY2Ugb2YgdGhlIFNoZWxsQ29udGFpbmVyIGFuZCByZXRyaWV2ZSB0aGUgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb25cblx0ICogc2VydmljZSByZWZlcmVuY2UgY2FsbCB0aGUgZ2V0U3RhcnR1cEFwcFN0YXRlIG1ldGhvZC4gSW4gY2FzZSBzZXJ2aWNlIGlzIG5vdCBhdmFpbGFibGUgb3IgYW55IGV4Y2VwdGlvblxuXHQgKiBtZXRob2QgdGhyb3dzIGV4Y2VwdGlvbiBlcnJvciBpbiBjb25zb2xlLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9BcmdzIENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb249PmdldFN0YXJ0dXBBcHBTdGF0ZSBhcmd1bWVudHNcblx0ICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2hpY2ggd2lsbCBiZSByZXNvbHZlZCB0byBPYmplY3Rcblx0ICovXG5cdGdldFN0YXJ0dXBBcHBTdGF0ZShvQXJnczogQ29tcG9uZW50KSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdC8vIEpRdWVyeSBQcm9taXNlIGJlaGF2ZXMgZGlmZmVyZW50bHlcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL2NhdGNoLW9yLXJldHVyblxuXHRcdFx0KHRoaXMuY3Jvc3NBcHBOYXZTZXJ2aWNlIGFzIGFueSlcblx0XHRcdFx0LmdldFN0YXJ0dXBBcHBTdGF0ZShvQXJncylcblx0XHRcdFx0LmZhaWwoKG9FcnJvcjogYW55KSA9PiB7XG5cdFx0XHRcdFx0cmVqZWN0KG5ldyBFcnJvcihvRXJyb3IgKyBcIiBzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnkuZ2V0U3RhcnR1cEFwcFN0YXRlXCIpKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4ocmVzb2x2ZSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIGJhY2tUb1ByZXZpb3VzQXBwIG1ldGhvZCBvZiBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbiBzZXJ2aWNlLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRiYWNrVG9QcmV2aW91c0FwcCgpIHtcblx0XHRyZXR1cm4gdGhpcy5jcm9zc0FwcE5hdlNlcnZpY2UuYmFja1RvUHJldmlvdXNBcHAoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgaHJlZkZvckV4dGVybmFsIG1ldGhvZCBvZiBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbiBzZXJ2aWNlLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9BcmdzIENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvQ29tcG9uZW50IFRoZSBhcHBDb21wb25lbnRcblx0ICogQHBhcmFtIHtib29sZWFufSBiQXN5bmMgV2hldGhlciB0aGlzIGNhbGwgc2hvdWxkIGJlIGFzeW5jIG9yIG5vdFxuXHQgKiBzYXAudXNoZWxsLnNlcnZpY2VzLkNyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uPT5ocmVmRm9yRXh0ZXJuYWwgYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFByb21pc2Ugd2hpY2ggd2lsbCBiZSByZXNvbHZlZCB0byBzdHJpbmdcblx0ICovXG5cdGhyZWZGb3JFeHRlcm5hbChvQXJnczogb2JqZWN0LCBvQ29tcG9uZW50Pzogb2JqZWN0LCBiQXN5bmM/OiBib29sZWFuKSB7XG5cdFx0cmV0dXJuIHRoaXMuY3Jvc3NBcHBOYXZTZXJ2aWNlLmhyZWZGb3JFeHRlcm5hbChvQXJncywgb0NvbXBvbmVudCBhcyBvYmplY3QsICEhYkFzeW5jKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgZ2V0QXBwU3RhdGUgbWV0aG9kIG9mIENyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uIHNlcnZpY2Ugd2l0aCBvQ29tcG9uZW50IGFuZCBvQXBwU3RhdGVLZXkuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb0NvbXBvbmVudFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0FwcFN0YXRlS2V5IENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb249PmdldEFwcFN0YXRlIGFyZ3VtZW50c1xuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIG9iamVjdFxuXHQgKi9cblx0Z2V0QXBwU3RhdGUob0NvbXBvbmVudDogQ29tcG9uZW50LCBzQXBwU3RhdGVLZXk6IHN0cmluZykge1xuXHRcdHJldHVybiB3cmFwSlF1ZXJ5UHJvbWlzZSgodGhpcy5jcm9zc0FwcE5hdlNlcnZpY2UgYXMgYW55KS5nZXRBcHBTdGF0ZShvQ29tcG9uZW50LCBzQXBwU3RhdGVLZXkpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgY3JlYXRlRW1wdHlBcHBTdGF0ZSBtZXRob2Qgb2YgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb24gc2VydmljZSB3aXRoIG9Db21wb25lbnQuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gb0NvbXBvbmVudCBDaGVjayB0aGUgZGVmaW5pdGlvbiBvZlxuXHQgKiBzYXAudXNoZWxsLnNlcnZpY2VzLkNyb3NzQXBwbGljYXRpb25OYXZpZ2F0aW9uPT5jcmVhdGVFbXB0eUFwcFN0YXRlIGFyZ3VtZW50c1xuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIG9iamVjdFxuXHQgKi9cblx0Y3JlYXRlRW1wdHlBcHBTdGF0ZShvQ29tcG9uZW50OiBDb21wb25lbnQpIHtcblx0XHRyZXR1cm4gKHRoaXMuY3Jvc3NBcHBOYXZTZXJ2aWNlIGFzIGFueSkuY3JlYXRlRW1wdHlBcHBTdGF0ZShvQ29tcG9uZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgaXNOYXZpZ2F0aW9uU3VwcG9ydGVkIG1ldGhvZCBvZiBDcm9zc0FwcGxpY2F0aW9uTmF2aWdhdGlvbiBzZXJ2aWNlIHdpdGggTmF2aWdhdGlvbiBBcmd1bWVudHMgYW5kIG9Db21wb25lbnQuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge0FycmF5fSBvTmF2QXJndW1lbnRzQXJyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvQ29tcG9uZW50IENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb249PmlzTmF2aWdhdGlvblN1cHBvcnRlZCBhcmd1bWVudHNcblx0ICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2hpY2ggd2lsbCBiZSByZXNvbHZlZCB0byBvYmplY3Rcblx0ICovXG5cdGlzTmF2aWdhdGlvblN1cHBvcnRlZChvTmF2QXJndW1lbnRzQXJyOiBBcnJheTxvYmplY3Q+LCBvQ29tcG9uZW50OiBvYmplY3QpIHtcblx0XHRyZXR1cm4gd3JhcEpRdWVyeVByb21pc2UodGhpcy5jcm9zc0FwcE5hdlNlcnZpY2UuaXNOYXZpZ2F0aW9uU3VwcG9ydGVkKG9OYXZBcmd1bWVudHNBcnIsIG9Db21wb25lbnQpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgaXNJbml0aWFsTmF2aWdhdGlvbiBtZXRob2Qgb2YgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb24gc2VydmljZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gYm9vbGVhblxuXHQgKi9cblx0aXNJbml0aWFsTmF2aWdhdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5jcm9zc0FwcE5hdlNlcnZpY2UuaXNJbml0aWFsTmF2aWdhdGlvbigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBleHBhbmRDb21wYWN0SGFzaCBtZXRob2Qgb2YgQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb24gc2VydmljZS5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNIYXNoRnJhZ21lbnQgQW4gKGludGVybmFsIGZvcm1hdCkgc2hlbGwgaGFzaFxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gQSBwcm9taXNlIHRoZSBzdWNjZXNzIGhhbmRsZXIgb2YgdGhlIHJlc29sdmUgcHJvbWlzZSBnZXQgYW4gZXhwYW5kZWQgc2hlbGwgaGFzaCBhcyBmaXJzdCBhcmd1bWVudFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdGV4cGFuZENvbXBhY3RIYXNoKHNIYXNoRnJhZ21lbnQ6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLmNyb3NzQXBwTmF2U2VydmljZS5leHBhbmRDb21wYWN0SGFzaChzSGFzaEZyYWdtZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgcGFyc2VTaGVsbEhhc2ggbWV0aG9kIG9mIFVSTFBhcnNpbmcgc2VydmljZSB3aXRoIGdpdmVuIHNIYXNoLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNIYXNoIENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuVVJMUGFyc2luZz0+cGFyc2VTaGVsbEhhc2ggYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9XG5cdCAqL1xuXHRwYXJzZVNoZWxsSGFzaChzSGFzaDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMudXJsUGFyc2luZ1NlcnZpY2UucGFyc2VTaGVsbEhhc2goc0hhc2gpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBzcGxpdEhhc2ggbWV0aG9kIG9mIFVSTFBhcnNpbmcgc2VydmljZSB3aXRoIGdpdmVuIHNIYXNoLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNIYXNoIENoZWNrIHRoZSBkZWZpbml0aW9uIG9mXG5cdCAqIHNhcC51c2hlbGwuc2VydmljZXMuVVJMUGFyc2luZz0+c3BsaXRIYXNoIGFyZ3VtZW50c1xuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHRvIG9iamVjdFxuXHQgKi9cblx0c3BsaXRIYXNoKHNIYXNoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy51cmxQYXJzaW5nU2VydmljZS5zcGxpdEhhc2goc0hhc2gpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBjb25zdHJ1Y3RTaGVsbEhhc2ggbWV0aG9kIG9mIFVSTFBhcnNpbmcgc2VydmljZSB3aXRoIGdpdmVuIHNIYXNoLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG9OZXdTaGVsbEhhc2ggQ2hlY2sgdGhlIGRlZmluaXRpb24gb2Zcblx0ICogc2FwLnVzaGVsbC5zZXJ2aWNlcy5VUkxQYXJzaW5nPT5jb25zdHJ1Y3RTaGVsbEhhc2ggYXJndW1lbnRzXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFNoZWxsIEhhc2ggc3RyaW5nXG5cdCAqL1xuXHRjb25zdHJ1Y3RTaGVsbEhhc2gob05ld1NoZWxsSGFzaDogb2JqZWN0KSB7XG5cdFx0cmV0dXJuIHRoaXMudXJsUGFyc2luZ1NlcnZpY2UuY29uc3RydWN0U2hlbGxIYXNoKG9OZXdTaGVsbEhhc2gpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBzZXREaXJ0eUZsYWcgbWV0aG9kIHdpdGggZ2l2ZW4gZGlydHkgc3RhdGUuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJEaXJ0eSBDaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBzYXAudXNoZWxsLkNvbnRhaW5lci5zZXREaXJ0eUZsYWcgYXJndW1lbnRzXG5cdCAqL1xuXHRzZXREaXJ0eUZsYWcoYkRpcnR5OiBib29sZWFuKSB7XG5cdFx0dGhpcy5vU2hlbGxDb250YWluZXIuc2V0RGlydHlGbGFnKGJEaXJ0eSk7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIHJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyIG1ldGhvZCB3aXRoIGdpdmVuIGRpcnR5IHN0YXRlIHByb3ZpZGVyIGNhbGxiYWNrIG1ldGhvZC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZuRGlydHlTdGF0ZVByb3ZpZGVyIENoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHNhcC51c2hlbGwuQ29udGFpbmVyLnJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyIGFyZ3VtZW50c1xuXHQgKi9cblx0cmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZm5EaXJ0eVN0YXRlUHJvdmlkZXI6IEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5vU2hlbGxDb250YWluZXIucmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZm5EaXJ0eVN0YXRlUHJvdmlkZXIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBkZXJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyIG1ldGhvZCB3aXRoIGdpdmVuIGRpcnR5IHN0YXRlIHByb3ZpZGVyIGNhbGxiYWNrIG1ldGhvZC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZuRGlydHlTdGF0ZVByb3ZpZGVyIENoZWNrIHRoZSBkZWZpbml0aW9uIG9mIHNhcC51c2hlbGwuQ29udGFpbmVyLmRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIgYXJndW1lbnRzXG5cdCAqL1xuXHRkZXJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyKGZuRGlydHlTdGF0ZVByb3ZpZGVyOiBGdW5jdGlvbikge1xuXHRcdHRoaXMub1NoZWxsQ29udGFpbmVyLmRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZm5EaXJ0eVN0YXRlUHJvdmlkZXIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBjcmVhdGVSZW5kZXJlciBtZXRob2Qgb2YgdXNoZWxsIGNvbnRhaW5lci5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IFJldHVybnMgcmVuZGVyZXIgb2JqZWN0XG5cdCAqL1xuXHRjcmVhdGVSZW5kZXJlcigpIHtcblx0XHRyZXR1cm4gdGhpcy5vU2hlbGxDb250YWluZXIuY3JlYXRlUmVuZGVyZXIoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgZ2V0VXNlciBtZXRob2Qgb2YgdXNoZWxsIGNvbnRhaW5lci5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IFJldHVybnMgVXNlciBvYmplY3Rcblx0ICovXG5cdGdldFVzZXIoKSB7XG5cdFx0cmV0dXJuICh0aGlzLm9TaGVsbENvbnRhaW5lciBhcyBhbnkpLmdldFVzZXIoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNoZWNrIGlmIHVzaGVsbCBjb250YWluZXIgaXMgYXZhaWxhYmxlIG9yIG5vdC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWVcblx0ICovXG5cdGhhc1VTaGVsbCgpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgcmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyIG1ldGhvZCBvZiBzaGVsbE5hdmlnYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZuTmF2RmlsdGVyIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gcmVnaXN0ZXJcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0cmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyKGZuTmF2RmlsdGVyOiBGdW5jdGlvbikge1xuXHRcdCh0aGlzLnNoZWxsTmF2aWdhdGlvbiBhcyBhbnkpLnJlZ2lzdGVyTmF2aWdhdGlvbkZpbHRlcihmbk5hdkZpbHRlcik7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIHVucmVnaXN0ZXJOYXZpZ2F0aW9uRmlsdGVyIG1ldGhvZCBvZiBzaGVsbE5hdmlnYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZuTmF2RmlsdGVyIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gdW5yZWdpc3RlclxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHR1bnJlZ2lzdGVyTmF2aWdhdGlvbkZpbHRlcihmbk5hdkZpbHRlcjogRnVuY3Rpb24pIHtcblx0XHQodGhpcy5zaGVsbE5hdmlnYXRpb24gYXMgYW55KS51bnJlZ2lzdGVyTmF2aWdhdGlvbkZpbHRlcihmbk5hdkZpbHRlcik7XG5cdH1cblxuXHQvKipcblx0ICogV2lsbCBjYWxsIHNldEJhY2tOYXZpZ2F0aW9uIG1ldGhvZCBvZiBTaGVsbFVJU2VydmljZVxuXHQgKiB0aGF0IGRpc3BsYXlzIHRoZSBiYWNrIGJ1dHRvbiBpbiB0aGUgc2hlbGwgaGVhZGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5DYWxsQmFja10gQSBjYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIFVJLlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICogQHByaXZhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRzZXRCYWNrTmF2aWdhdGlvbihmbkNhbGxCYWNrPzogRnVuY3Rpb24pOiB2b2lkIHtcblx0XHR0aGlzLnNoZWxsVUlTZXJ2aWNlLnNldEJhY2tOYXZpZ2F0aW9uKGZuQ2FsbEJhY2spO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdpbGwgY2FsbCBzZXRIaWVyYXJjaHkgbWV0aG9kIG9mIFNoZWxsVUlTZXJ2aWNlXG5cdCAqIHRoYXQgZGlzcGxheXMgdGhlIGdpdmVuIGhpZXJhcmNoeSBpbiB0aGUgc2hlbGwgaGVhZGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdFtdfSBbYUhpZXJhcmNoeUxldmVsc10gQW4gYXJyYXkgcmVwcmVzZW50aW5nIGhpZXJhcmNoaWVzIG9mIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIGFwcC5cblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0c2V0SGllcmFyY2h5KGFIaWVyYXJjaHlMZXZlbHM6IEFycmF5PG9iamVjdD4pOiB2b2lkIHtcblx0XHR0aGlzLnNoZWxsVUlTZXJ2aWNlLnNldEhpZXJhcmNoeShhSGllcmFyY2h5TGV2ZWxzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBXaWxsIGNhbGwgc2V0VGl0bGUgbWV0aG9kIG9mIFNoZWxsVUlTZXJ2aWNlXG5cdCAqIHRoYXQgZGlzcGxheXMgdGhlIGdpdmVuIHRpdGxlIGluIHRoZSBzaGVsbCBoZWFkZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBbc1RpdGxlXSBUaGUgbmV3IHRpdGxlLiBUaGUgZGVmYXVsdCB0aXRsZSBpcyBzZXQgaWYgdGhpcyBhcmd1bWVudCBpcyBub3QgZ2l2ZW4uXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdHNldFRpdGxlKHNUaXRsZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5zaGVsbFVJU2VydmljZS5zZXRUaXRsZShzVGl0bGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY3VycmVudGx5IGRlZmluZWQgY29udGVudCBkZW5zaXR5LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGVudCBkZW5zaXR5IHZhbHVlXG5cdCAqL1xuXHRnZXRDb250ZW50RGVuc2l0eSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiAoKHRoaXMub1NoZWxsQ29udGFpbmVyIGFzIGFueSkuZ2V0VXNlcigpIGFzIGFueSkuZ2V0Q29udGVudERlbnNpdHkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb3IgYSBnaXZlbiBzZW1hbnRpYyBvYmplY3QsIHRoaXMgbWV0aG9kIGNvbnNpZGVycyBhbGwgYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHNlbWFudGljIG9iamVjdCBhbmRcblx0ICogcmV0dXJucyB0aGUgb25lIHRhZ2dlZCBhcyBhIFwicHJpbWFyeUFjdGlvblwiLiBJZiBubyBpbmJvdW5kIHRhZ2dlZCBhcyBcInByaW1hcnlBY3Rpb25cIiBleGlzdHMsIHRoZW4gaXQgcmV0dXJuc1xuXHQgKiB0aGUgaW50ZW50IG9mIHRoZSBmaXJzdCBpbmJvdW5kIChhZnRlciBzb3J0aW5nIGhhcyBiZWVuIGFwcGxpZWQpIG1hdGNoaW5nIHRoZSBhY3Rpb24gXCJkaXNwbGF5RmFjdFNoZWV0XCIuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1NlbWFudGljT2JqZWN0IFNlbWFudGljIG9iamVjdC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG1QYXJhbWV0ZXJzIFNlZSAjQ3Jvc3NBcHBsaWNhdGlvbk5hdmlnYXRpb24jZ2V0TGlua3MgZm9yIGRlc2NyaXB0aW9uLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGludGVudCBpZiBpdCBleGlzdHMuXG5cdCAqL1xuXHRnZXRQcmltYXJ5SW50ZW50KHNTZW1hbnRpY09iamVjdDogc3RyaW5nLCBtUGFyYW1ldGVycz86IG9iamVjdCk6IFByb21pc2U8YW55PiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL2NhdGNoLW9yLXJldHVyblxuXHRcdFx0dGhpcy5jcm9zc0FwcE5hdlNlcnZpY2Vcblx0XHRcdFx0LmdldFByaW1hcnlJbnRlbnQoc1NlbWFudGljT2JqZWN0LCBtUGFyYW1ldGVycylcblx0XHRcdFx0LmZhaWwoKG9FcnJvcjogYW55KSA9PiB7XG5cdFx0XHRcdFx0cmVqZWN0KG5ldyBFcnJvcihvRXJyb3IgKyBcIiBzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnkuZ2V0UHJpbWFyeUludGVudFwiKSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKHJlc29sdmUpO1xuXHRcdH0pO1xuXHR9XG59XG5cbi8qKlxuICogU2VydmljZSBGYWN0b3J5IGZvciB0aGUgU2hlbGxTZXJ2aWNlc1xuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIFNoZWxsU2VydmljZXNGYWN0b3J5IGV4dGVuZHMgU2VydmljZUZhY3Rvcnk8U2hlbGxTZXJ2aWNlc1NldHRpbmdzPiB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGVpdGhlciBhIHN0YW5kYXJkIG9yIGEgbW9jayBTaGVsbCBzZXJ2aWNlIGRlcGVuZGluZyBvbiB0aGUgY29uZmlndXJhdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHtTZXJ2aWNlQ29udGV4dDxTaGVsbFNlcnZpY2VzU2V0dGluZ3M+fSBvU2VydmljZUNvbnRleHQgVGhlIHNoZWxsc2VydmljZSBjb250ZXh0XG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPElTaGVsbFNlcnZpY2VzPn0gQSBwcm9taXNlIGZvciBhIHNoZWxsIHNlcnZpY2UgaW1wbGVtZW50YXRpb25cblx0ICogQHNlZSBTZXJ2aWNlRmFjdG9yeSNjcmVhdGVJbnN0YW5jZVxuXHQgKi9cblx0Y3JlYXRlSW5zdGFuY2Uob1NlcnZpY2VDb250ZXh0OiBTZXJ2aWNlQ29udGV4dDxTaGVsbFNlcnZpY2VzU2V0dGluZ3M+KTogUHJvbWlzZTxJU2hlbGxTZXJ2aWNlcz4ge1xuXHRcdG9TZXJ2aWNlQ29udGV4dC5zZXR0aW5ncy5zaGVsbENvbnRhaW5lciA9IHNhcC51c2hlbGwgJiYgKHNhcC51c2hlbGwuQ29udGFpbmVyIGFzIENvbnRhaW5lcik7XG5cdFx0Y29uc3Qgb1NoZWxsU2VydmljZSA9IG9TZXJ2aWNlQ29udGV4dC5zZXR0aW5ncy5zaGVsbENvbnRhaW5lclxuXHRcdFx0PyBuZXcgU2hlbGxTZXJ2aWNlcyhvU2VydmljZUNvbnRleHQgYXMgU2VydmljZUNvbnRleHQ8UmVxdWlyZWQ8U2hlbGxTZXJ2aWNlc1NldHRpbmdzPj4pXG5cdFx0XHQ6IG5ldyBTaGVsbFNlcnZpY2VNb2NrKG9TZXJ2aWNlQ29udGV4dCk7XG5cdFx0cmV0dXJuIG9TaGVsbFNlcnZpY2UuaW5pdFByb21pc2UudGhlbigoKSA9PiB7XG5cdFx0XHQvLyBFbnJpY2ggdGhlIGFwcENvbXBvbmVudCB3aXRoIHRoaXMgbWV0aG9kXG5cdFx0XHQob1NlcnZpY2VDb250ZXh0LnNjb3BlT2JqZWN0IGFzIGFueSkuZ2V0U2hlbGxTZXJ2aWNlcyA9ICgpID0+IG9TaGVsbFNlcnZpY2U7XG5cdFx0XHRyZXR1cm4gb1NoZWxsU2VydmljZTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaGVsbFNlcnZpY2VzRmFjdG9yeTtcbiJdfQ==