@sapui5/sap.fe.macros 1.141.2 → 1.143.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 (257) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
  14. package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
  15. package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
  16. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
  17. package/src/sap/fe/macros/Field.js +34 -17
  18. package/src/sap/fe/macros/Field.ts +64 -32
  19. package/src/sap/fe/macros/FooterContent.js +7 -3
  20. package/src/sap/fe/macros/FooterContent.tsx +8 -13
  21. package/src/sap/fe/macros/KPITag.js +6 -6
  22. package/src/sap/fe/macros/KPITag.tsx +8 -6
  23. package/src/sap/fe/macros/MacroAPI.js +4 -3
  24. package/src/sap/fe/macros/MacroAPI.ts +3 -3
  25. package/src/sap/fe/macros/MessageButton.js +4 -3
  26. package/src/sap/fe/macros/MessageButton.tsx +7 -3
  27. package/src/sap/fe/macros/MicroChart.js +12 -7
  28. package/src/sap/fe/macros/MicroChart.tsx +9 -3
  29. package/src/sap/fe/macros/MultiValueField.js +22 -36
  30. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  31. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  32. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  33. package/src/sap/fe/macros/Share.js +7 -7
  34. package/src/sap/fe/macros/Share.tsx +9 -6
  35. package/src/sap/fe/macros/Status.js +39 -11
  36. package/src/sap/fe/macros/Status.tsx +25 -5
  37. package/src/sap/fe/macros/ValueHelp.js +5 -2
  38. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  39. package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
  40. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
  41. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  42. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  43. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  44. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  45. package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
  46. package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
  47. package/src/sap/fe/macros/chart/Action.js +25 -2
  48. package/src/sap/fe/macros/chart/Action.ts +13 -0
  49. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  50. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  51. package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
  52. package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
  53. package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
  54. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
  55. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  56. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  57. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
  58. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
  59. package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
  60. package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
  61. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  62. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  63. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
  64. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
  65. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  66. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  67. package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
  68. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
  69. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
  70. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
  71. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  72. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  73. package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
  74. package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
  75. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  76. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  77. package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
  78. package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
  79. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  80. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  81. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  82. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  83. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  84. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  85. package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
  86. package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
  87. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  88. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  89. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  90. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  91. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
  92. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
  93. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
  94. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
  95. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
  96. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
  97. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  98. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  99. package/src/sap/fe/macros/form/Form.block.js +27 -2
  100. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  101. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  102. package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
  103. package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
  104. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  105. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  106. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  107. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  108. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  109. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  110. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  111. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  112. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  113. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  114. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  115. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  116. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  117. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  118. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  119. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  120. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  121. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  122. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  123. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  124. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  125. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  126. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  127. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  128. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  129. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  130. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  131. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
  132. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
  133. package/src/sap/fe/macros/library.js +5 -6
  134. package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
  135. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  136. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  137. package/src/sap/fe/macros/messagebundle.properties +13 -5
  138. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  140. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  143. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  144. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  145. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  146. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  147. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  148. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  149. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
  150. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  155. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  158. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  159. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  160. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  162. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  164. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  167. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  168. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  169. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  170. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  171. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  172. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  173. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  174. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  175. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  176. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  177. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  178. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  179. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  180. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  181. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  182. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  183. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  184. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  185. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  186. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  187. package/src/sap/fe/macros/messages/MessageButton.js +21 -12
  188. package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
  189. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
  190. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
  191. package/src/sap/fe/macros/quickView/QuickView.js +5 -4
  192. package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
  193. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  194. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  195. package/src/sap/fe/macros/table/Action.js +21 -5
  196. package/src/sap/fe/macros/table/Action.ts +14 -4
  197. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  198. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  199. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  200. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  201. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  202. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  203. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  204. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  205. package/src/sap/fe/macros/table/Column.js +3 -2
  206. package/src/sap/fe/macros/table/Column.ts +1 -1
  207. package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
  208. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
  209. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  210. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  211. package/src/sap/fe/macros/table/Table.block.js +74 -30
  212. package/src/sap/fe/macros/table/Table.block.tsx +77 -14
  213. package/src/sap/fe/macros/table/TableAPI.js +175 -132
  214. package/src/sap/fe/macros/table/TableAPI.ts +67 -30
  215. package/src/sap/fe/macros/table/TableDefinition.js +20 -3
  216. package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
  217. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
  218. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
  219. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  220. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  221. package/src/sap/fe/macros/table/TableRuntime.js +25 -13
  222. package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
  223. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  224. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  225. package/src/sap/fe/macros/table/Utils.js +9 -3
  226. package/src/sap/fe/macros/table/Utils.ts +14 -8
  227. package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
  228. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
  229. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
  230. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
  231. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
  232. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
  233. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  234. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  235. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
  236. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
  237. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
  238. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
  239. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  240. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  241. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  242. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  243. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
  244. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
  245. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
  246. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
  247. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
  248. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
  249. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  250. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  251. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  252. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  253. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  254. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  255. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  256. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  257. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -32,6 +32,7 @@ import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
32
32
  import { convertTypes, getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
33
33
  import {
34
34
  getCustomFunctionInfo,
35
+ type CreateBehavior,
35
36
  type ExternalMethodConfig,
36
37
  type TableType,
37
38
  type TableVisualization
@@ -53,8 +54,9 @@ import {
53
54
  } from "sap/fe/core/templating/DataModelPathHelper";
54
55
  import { type DisplayMode } from "sap/fe/core/templating/DisplayModeFormatter";
55
56
  import * as UIFormatters from "sap/fe/core/templating/UIFormatters";
56
- import type { CollectionBindingInfo, EventHandler } from "sap/fe/macros/CollectionBindingInfo";
57
+ import type { EventHandler, SerializedCollectionBindingInfo } from "sap/fe/macros/CollectionBindingInfo";
57
58
  import MacroAPI from "sap/fe/macros/MacroAPI";
59
+ import type FilterBar from "sap/fe/macros/controls/FilterBar";
58
60
  import type ISingleSectionContributor from "sap/fe/macros/controls/section/ISingleSectionContributor";
59
61
  import type { ConsumerData } from "sap/fe/macros/controls/section/ISingleSectionContributor";
60
62
  import * as FieldTemplating from "sap/fe/macros/field/FieldTemplating";
@@ -67,6 +69,7 @@ import type ActionGroup from "sap/fe/macros/table/ActionGroup";
67
69
  import type BasicSearch from "sap/fe/macros/table/BasicSearch";
68
70
  import type Column from "sap/fe/macros/table/Column";
69
71
  import * as MdcTableTemplate from "sap/fe/macros/table/MdcTableTemplate";
72
+ import type OverflowGroup from "sap/fe/macros/table/OverflowGroups";
70
73
  import type QuickFilterSelector from "sap/fe/macros/table/QuickFilterSelector";
71
74
  import TableCreationOptions from "sap/fe/macros/table/TableCreationOptions";
72
75
  import TableHelper from "sap/fe/macros/table/TableHelper";
@@ -78,6 +81,7 @@ import type { PvProperties } from "sap/fe/navigation/PresentationVariant";
78
81
  import PresentationVariantClass from "sap/fe/navigation/PresentationVariant";
79
82
  import type SelectionVariant from "sap/fe/navigation/SelectionVariant";
80
83
  import type Dialog from "sap/m/Dialog";
84
+ import FlexItemData from "sap/m/FlexItemData";
81
85
  import IllustratedMessage from "sap/m/IllustratedMessage";
82
86
  import IllustratedMessageType from "sap/m/IllustratedMessageType";
83
87
  import type Menu from "sap/m/Menu";
@@ -100,7 +104,6 @@ import { TitleLevel } from "sap/ui/core/library";
100
104
  import Message from "sap/ui/core/message/Message";
101
105
  import type MessageType from "sap/ui/core/message/MessageType";
102
106
  import XMLPreprocessor from "sap/ui/core/util/XMLPreprocessor";
103
- import type FilterBar from "sap/ui/mdc/FilterBar";
104
107
  import type {
105
108
  default as MDCTable,
106
109
  MDCTablePropertyInfo as PropertyInfo,
@@ -254,7 +257,9 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
254
257
  constructor(mSettings?: PropertiesOf<TableAPI> & { id?: string }, ...others: $ControlSettings[]) {
255
258
  super(mSettings, ...others);
256
259
  this.originalTableDefinition = this.tableDefinition;
257
-
260
+ if (!this.getLayoutData()) {
261
+ this.setLayoutData(new FlexItemData({ maxWidth: "100%" }));
262
+ }
258
263
  this.attachStateChangeHandler();
259
264
  this.attachManifestEvents();
260
265
  this.overrideRowPress = this.hasListeners("rowPress");
@@ -339,7 +344,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
339
344
  if (metaPath) {
340
345
  suffix = metaPath.startsWith("/") ? metaPath.substring(1) : metaPath;
341
346
  }
342
- title = resourceModel.getText("T_ILLUSTRATED_MESSAGE_TITLE_BEFORESEARCH");
347
+ title = resourceModel.getText("T_ILLUSTRATED_MESSAGE_TITLE_BEFORESEARCH", undefined, suffix);
343
348
  description = resourceModel.getText("T_TABLE_AND_CHART_NO_DATA_TEXT", undefined, suffix);
344
349
  }
345
350
  } else {
@@ -474,6 +479,12 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
474
479
  })
475
480
  actions?: (Action | ActionGroup | ActionOverride | ActionGroupOverride)[];
476
481
 
482
+ @aggregation({
483
+ type: "sap.fe.macros.table.OverflowGroup",
484
+ multiple: true
485
+ })
486
+ actionOverflowGroups?: OverflowGroup[];
487
+
477
488
  @aggregation({
478
489
  type: "sap.fe.macros.table.Column",
479
490
  altTypes: ["sap.fe.macros.table.ColumnOverride"],
@@ -551,8 +562,8 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
551
562
  @property({ type: "string" })
552
563
  id!: string;
553
564
 
554
- @property({ type: "string" })
555
- fieldMode?: string;
565
+ @property({ type: "string", defaultValue: "" })
566
+ fieldMode!: string;
556
567
 
557
568
  @property({ type: "sap.ui.core.TitleLevel", defaultValue: TitleLevel.Auto })
558
569
  headerLevel!: TitleLevel;
@@ -607,8 +618,8 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
607
618
  @property({ type: "boolean", isBindingInfo: true })
608
619
  headerVisible?: boolean;
609
620
 
610
- @property({ type: "string" })
611
- tabTitle?: string;
621
+ @property({ type: "string", defaultValue: "" })
622
+ tabTitle!: string;
612
623
 
613
624
  @property({ type: "string" })
614
625
  associatedSelectionVariantPath?: string;
@@ -730,6 +741,10 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
730
741
 
731
742
  overrideRowPress = false;
732
743
 
744
+ init(): void {
745
+ return super.init(true);
746
+ }
747
+
733
748
  getIgnoreContextChangeEvent(): boolean {
734
749
  return this.ignoreContextChangeEvent;
735
750
  }
@@ -781,7 +796,28 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
781
796
  // the corresponding action shall be applied.
782
797
  return this.isContextMenuActive()
783
798
  ? this.getBindingContext("internal")?.getProperty("contextmenu/selectedContexts") ?? []
784
- : this.content.getSelectedContexts();
799
+ : (this.content.getSelectedContexts() as unknown as Context[]);
800
+ }
801
+
802
+ /**
803
+ * Returns all contexts that are loaded in the table.
804
+ *
805
+ * See also the {@link sap.ui.model.odata.v4.ODataListBinding#getAllCurrentContexts} method.
806
+ * @returns All contexts of the table's list binding, or undefined if the table data is not yet loaded.
807
+ * @public
808
+ * @since 1.142.0
809
+ */
810
+ getAllCurrentContexts(): Context[] | undefined {
811
+ return this.content?.getRowBinding()?.getAllCurrentContexts();
812
+ }
813
+
814
+ /**
815
+ * Clears the selection.
816
+ * @public
817
+ * @since 1.142.0
818
+ */
819
+ clearSelection(): void {
820
+ this.content?.clearSelection();
785
821
  }
786
822
 
787
823
  /**
@@ -1162,6 +1198,11 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
1162
1198
  this.fireEvent("rowPress", oEvent.getParameters());
1163
1199
  }
1164
1200
 
1201
+ @xmlEventHandler()
1202
+ onNoop(): void {
1203
+ // Do nothing, this is used to ensure the table action are fired in responsive table
1204
+ }
1205
+
1165
1206
  isTableRowNavigationPossible(context: Context): boolean {
1166
1207
  // prevent navigation to an empty row
1167
1208
  const emptyRow = context.isInactive() == true && context.isTransient() === true;
@@ -1355,7 +1396,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
1355
1396
  ]);
1356
1397
  } catch (error: unknown) {
1357
1398
  MessageToast.show(this.getTranslatedText("M_TABLEDROP_FAILED", [""]));
1358
- Log.error(`The ${action} operation is unsuccessful. ` + (error as Error).message ?? "");
1399
+ Log.error(`The ${action} operation is unsuccessful. ` + ((error as Error).message ?? ""));
1359
1400
  }
1360
1401
  table.setBusy(false);
1361
1402
  internalContext.setProperty(`nodeUpdatesInfo/pastableContexts`, []);
@@ -1556,6 +1597,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
1556
1597
  contexts: Context[];
1557
1598
  applicableContexts: Context[];
1558
1599
  entitySetName: string;
1600
+ disableStrictHandling?: boolean;
1559
1601
  }
1560
1602
  ): Promise<unknown> {
1561
1603
  parameters.model = oEvent.getSource().getModel() as ODataModel;
@@ -1653,24 +1695,11 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
1653
1695
  * @alias sap.fe.macros.TableAPI
1654
1696
  */
1655
1697
  getFilterBarControl(filterBarRefId: string): UI5Element | undefined {
1656
- // 'filterBar' property of macros:Table(passed as customData) might be
1657
- // 1. A localId wrt View(FPM explorer example).
1658
- // 2. Absolute Id(this was not supported in older versions).
1659
- // 3. A localId wrt FragmentId(when an XMLComposite or Fragment is independently processed) instead of ViewId.
1660
- // 'filterBar' was supported earlier as an 'association' to the 'mdc:Table' control inside 'macros:Table' in prior versions.
1661
- // In newer versions 'filterBar' is used like an association to 'macros:TableAPI'.
1662
- // This means that the Id is relative to 'macros:TableAPI'.
1663
- // This scenario happens in case of FilterBar and Table in a custom sections in OP of FEV4.
1664
-
1665
- const tableAPIId = this?.getId();
1666
- const tableAPILocalId = this.data("tableAPILocalId");
1667
- const potentialfilterBarId =
1668
- tableAPILocalId && filterBarRefId && tableAPIId && tableAPIId.replace(new RegExp(tableAPILocalId + "$"), filterBarRefId); // 3
1669
1698
  return (
1670
- this.getPageController()?.byId(filterBarRefId) ||
1671
- UI5Element.getElementById(filterBarRefId) ||
1672
- UI5Element.getElementById(potentialfilterBarId)
1673
- );
1699
+ this.getPageController()?.byId(filterBarRefId) || // Local id wrt View(FPM explorer example)
1700
+ UI5Element.getElementById(filterBarRefId) || // Absolute Id(this was not supported in older versions)
1701
+ UI5Element.getElementById(`${this.getId().substring(0, this.getId().lastIndexOf("--") + 2)}${filterBarRefId}`)
1702
+ ); // Local id wrt FragmentId(when an XMLComposite or Fragment is independently processed) instead of ViewId
1674
1703
  }
1675
1704
 
1676
1705
  /**
@@ -2080,7 +2109,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
2080
2109
 
2081
2110
  destroy(suppressInvalidate?: boolean): void {
2082
2111
  // We release hold on messageHandler by the control if there is one.
2083
- this.getPageController(false)?.messageHandler?.releaseHoldByControl(this);
2112
+ this.getPageController()?.messageHandler?.releaseHoldByControl(this);
2084
2113
  super.destroy(suppressInvalidate);
2085
2114
  }
2086
2115
 
@@ -2198,10 +2227,10 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
2198
2227
  * Gets the binding info used when creating the list binding for the MDC table.
2199
2228
  * @returns The table binding info
2200
2229
  */
2201
- getTableTemplateBindingInfo(): CollectionBindingInfo {
2230
+ getTableTemplateBindingInfo(): SerializedCollectionBindingInfo {
2202
2231
  const controller = this.getPageController()!;
2203
2232
  const path = this.getRowCollectionPath();
2204
- const rowBindingInfo: CollectionBindingInfo = {
2233
+ const rowBindingInfo: SerializedCollectionBindingInfo = {
2205
2234
  suspended: false,
2206
2235
  path,
2207
2236
  parameters: {
@@ -2378,8 +2407,16 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
2378
2407
  const metaPathContext = metaModel.createBindingContext(fullMetaPath)!;
2379
2408
 
2380
2409
  this.tableDefinition = createTableDefinition(this);
2410
+ // Set Default values for properties based on table definition
2411
+ this.threshold ??= this.tableDefinition.annotation.threshold ?? this.tableDefinition.control.threshold;
2381
2412
  this.updatePropertiesFromTableDefinition();
2382
2413
 
2414
+ // default creation mode
2415
+ this.creationMode ??= new TableCreationOptions({
2416
+ name: this.tableDefinition.annotation.create.mode as TableCreationOptions["name"],
2417
+ createAtEnd: (this.tableDefinition.annotation.create as CreateBehavior).append
2418
+ });
2419
+
2383
2420
  this.updateColumnsVisibility(this.tableDefinition.control.ignoredFields, this.tableDefinition);
2384
2421
 
2385
2422
  const collectionEntity = this.contextObjectPath.convertedTypes.resolvePath(this.tableDefinition.annotation.collection)
@@ -33,6 +33,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
33
33
  const visualizationPath = getVisualizationPath(tableAPI.contextObjectPath, initialConverterContext);
34
34
  const tableSettings = tableAPI.getSettingsForManifest();
35
35
  const extraManifestSettings = {
36
+ overflowGroups: {},
36
37
  actions: {},
37
38
  columns: {},
38
39
  tableSettings
@@ -41,6 +42,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
41
42
  // Process custom actions and columns
42
43
  addSlotColumnsToExtraManifest(tableAPI, extraManifestSettings);
43
44
  addSlotActionsToExtraManifest(tableAPI, extraManifestSettings);
45
+ addSlotOverflowGroupsToExtraManifest(tableAPI, extraManifestSettings);
44
46
  const extraParams = {};
45
47
  extraParams[visualizationPath] = extraManifestSettings;
46
48
  const converterContext = MacroAPI.getConverterContext(tableAPI.contextObjectPath, tableAPI.contextPath, {
@@ -182,14 +184,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
182
184
  enabled: action.enabled,
183
185
  isAIOperation: action.isAIOperation,
184
186
  priority: action.priority,
185
- group: action.group ?? 0 // Default group to 0 if not defined
187
+ group: action.group ?? 0,
188
+ // Default group to 0 if not defined
189
+ overflowGroup: action.overflowGroup
186
190
  };
187
191
  if (action.isA("sap.fe.macros.table.Action")) {
188
192
  actions[key] = {
189
193
  ...actions[key],
190
194
  text: action.text,
191
195
  __noWrap: true,
192
- press: "some handler",
196
+ press: "someHandler",
193
197
  // The real handler will be triggered by firing the event on the Action object
194
198
  requiresSelection: action.requiresSelection
195
199
  };
@@ -234,6 +238,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
234
238
  }
235
239
  });
236
240
  }
241
+
242
+ /**
243
+ * Adds the slot actionOverflowGroups to the extra manifest settings.
244
+ * @param tableAPI
245
+ * @param extraManifestSettings
246
+ */
247
+ function addSlotOverflowGroupsToExtraManifest(tableAPI, extraManifestSettings) {
248
+ tableAPI.actionOverflowGroups?.forEach(overflowGroup => {
249
+ extraManifestSettings.overflowGroups[overflowGroup.overflowGroup] = {
250
+ showSeparator: overflowGroup.showSeparator ?? true
251
+ };
252
+ });
253
+ }
237
254
  return _exports;
238
255
  }, false);
239
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZUFQSSIsIm93bmVyIiwiX2dldE93bmVyIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiTG9nIiwiZXJyb3IiLCJFcnJvciIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0RnVsbE1ldGFQYXRoIiwiY29udGV4dFBhdGhDb250ZXh0IiwiY29udGV4dFBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJNYWNyb0FQSSIsImdldENvbnZlcnRlckNvbnRleHQiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJtb2RlbHMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwidmlzdWFsaXphdGlvblBhdGgiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsInRhYmxlU2V0dGluZ3MiLCJnZXRTZXR0aW5nc0Zvck1hbmlmZXN0IiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwiYWN0aW9ucyIsImNvbHVtbnMiLCJhZGRTbG90Q29sdW1uc1RvRXh0cmFNYW5pZmVzdCIsImFkZFNsb3RBY3Rpb25zVG9FeHRyYU1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiaXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudCIsInVzZUNvbmRlbnNlZExheW91dCIsImlzTWFjcm9Pck11bHRpcGxlVmlldyIsInZpc3VhbGl6YXRpb25zIiwiZmluZCIsInZpeiIsInR5cGUiLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiX2V4cG9ydHMiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbiIsInRlcm0iLCJsaW5lSXRlbVZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInVuZGVmaW5lZCIsImN1c3RvbUNvbHVtbkRlZmluaXRpb24iLCJjb2x1bW4iLCJpc0NvbHVtbiIsImlzQSIsImhlYWRlciIsIndpZHRoIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiZXhwb3J0U2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwidG9vbHRpcCIsInRlbXBsYXRlIiwiYXZhaWxhYmlsaXR5IiwicmVxdWlyZWQiLCJhbmNob3IiLCJwbGFjZW1lbnQiLCJwb3NpdGlvbiIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsImFjdGlvbiIsImNvbW1hbmQiLCJlbmFibGVPblNlbGVjdCIsInZpc2libGUiLCJlbmFibGVkIiwiaXNBSU9wZXJhdGlvbiIsInByaW9yaXR5IiwiZ3JvdXAiLCJ0ZXh0IiwiX19ub1dyYXAiLCJwcmVzcyIsInJlcXVpcmVzU2VsZWN0aW9uIiwiYWZ0ZXJFeGVjdXRpb24iLCJlbmFibGVBdXRvU2Nyb2xsIiwibmF2aWdhdGVUb0luc3RhbmNlIiwiZW50cmllcyIsImxlbmd0aCIsImRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsImFjdGlvbnNTZXR0aW5ncyIsIm1lbnUiLCJtYXAiLCJzdWJBY3Rpb24iLCJkZWZhdWx0QWN0aW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZURlZmluaXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0VUlBbm5vdGF0aW9uVGVybXMsXG5cdHR5cGUgTGluZUl0ZW0sXG5cdHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCxcblx0dHlwZSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHR0eXBlIFNlbGVjdGlvblZhcmlhbnQsXG5cdHR5cGUgU2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHtcblx0VmlzdWFsaXphdGlvblR5cGUsXG5cdHR5cGUgQXZhaWxhYmlsaXR5VHlwZSxcblx0dHlwZSBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4sXG5cdHR5cGUgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUsXG5cdHR5cGUgSW1wb3J0YW5jZSxcblx0dHlwZSBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0NoYXJ0XCI7XG5pbXBvcnQge1xuXHRnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG5cdGdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24sXG5cdHR5cGUgVmlzdWFsaXphdGlvbkFuZFBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyB0eXBlIFRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBQbGFjZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uT2ZUZXJtIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCwgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCIuLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uIGZyb20gXCIuL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXAgZnJvbSBcIi4vQWN0aW9uR3JvdXBcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcIi4vQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwiLi9UYWJsZUFQSVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFibGVEZWZpbml0aW9uKHRhYmxlQVBJOiBUYWJsZUFQSSk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IG93bmVyID0gdGFibGVBUEkuX2dldE93bmVyKCk7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0aWYgKCFvd25lciB8fCAhbWV0YU1vZGVsKSB7XG5cdFx0TG9nLmVycm9yKFwiQ2Fubm90IGNyZWF0ZSBhIHRhYmxlIGRlZmluaXRpb24gZm9yIGEgVGFibGVBUEkgd2l0aG91dCBhbiBvd25lciBvciBhIG1ldGFtb2RlbFwiKTtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGEgdGFibGUgZGVmaW5pdGlvbiBmb3IgYSBUYWJsZUFQSSB3aXRob3V0IGFuIG93bmVyIG9yIGEgbWV0YW1vZGVsXCIpO1xuXHR9XG5cdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5nZXRGdWxsTWV0YVBhdGgoKSk7XG5cdGNvbnN0IGNvbnRleHRQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5jb250ZXh0UGF0aCk7XG5cdGlmICghbWV0YVBhdGhDb250ZXh0IHx8ICFjb250ZXh0UGF0aENvbnRleHQpIHtcblx0XHRMb2cuZXJyb3IoYEluY29ycmVjdCBtZXRhUGF0aCAoJHt0YWJsZUFQSS5tZXRhUGF0aH0pIG9yIGNvbnRleHRQYXRoICgke3RhYmxlQVBJLmNvbnRleHRQYXRofSkgZm9yIHRhYmxlQVBJYCk7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5jb3JyZWN0IG1ldGFQYXRoIG9yIGNvbnRleHRQYXRoIGZvciB0YWJsZUFQSVwiKTtcblx0fVxuXG5cdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdG1ldGFQYXRoQ29udGV4dCxcblx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0KTtcblxuXHRjb25zdCBpbml0aWFsQ29udmVydGVyQ29udGV4dCA9IE1hY3JvQVBJLmdldENvbnZlcnRlckNvbnRleHQodGFibGVBUEkuY29udGV4dE9iamVjdFBhdGgsIHRhYmxlQVBJLmNvbnRleHRQYXRoLCB7XG5cdFx0YXBwQ29tcG9uZW50OiBvd25lci5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRtb2RlbHM6IG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHR9IGFzIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRjb25zdCB2aXN1YWxpemF0aW9uUGF0aCA9IGdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0Y29uc3QgdGFibGVTZXR0aW5ncyA9IHRhYmxlQVBJLmdldFNldHRpbmdzRm9yTWFuaWZlc3QoKTtcblxuXHRjb25zdCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRcdGFjdGlvbnM6IHt9LFxuXHRcdGNvbHVtbnM6IHt9LFxuXHRcdHRhYmxlU2V0dGluZ3Ncblx0fTtcblxuXHQvLyBQcm9jZXNzIGN1c3RvbSBhY3Rpb25zIGFuZCBjb2x1bW5zXG5cdGFkZFNsb3RDb2x1bW5zVG9FeHRyYU1hbmlmZXN0KHRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3MpO1xuXHRhZGRTbG90QWN0aW9uc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSSwgZXh0cmFNYW5pZmVzdFNldHRpbmdzKTtcblxuXHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzO1xuXHRjb25zdCBjb252ZXJ0ZXJDb250ZXh0ID0gTWFjcm9BUEkuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHR0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHR0YWJsZUFQSS5jb250ZXh0UGF0aCxcblx0XHR7XG5cdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyPy5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdG1vZGVsczogb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHRcdH0gYXMgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRleHRyYVBhcmFtc1xuXHQpO1xuXG5cdGxldCBhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdGlmICh0YWJsZUFQSS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgpIHtcblx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGFibGVBUEkuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSEsXG5cdFx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0XHQpO1xuXHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXG5cdGNvbnN0IHZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKFxuXHRcdCh0YWJsZUFQSS5pbk11bHRpVmlldyAmJiB0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdC5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdCAgKVxuXHRcdFx0OiBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoKSkgYXMgc3RyaW5nLFxuXHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0e1xuXHRcdFx0aXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudDogdGFibGVBUEkudXNlQ29uZGVuc2VkTGF5b3V0LFxuXHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRpc01hY3JvT3JNdWx0aXBsZVZpZXc6IHRhYmxlQVBJLmluTXVsdGlWaWV3ID8/IHRydWVcblx0XHR9XG5cdCk7XG5cblx0Ly8gdGFrZSB0aGUgKGZpcnN0KSBUYWJsZSB2aXN1YWxpemF0aW9uXG5cdHJldHVybiB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbi52aXN1YWxpemF0aW9ucy5maW5kKFxuXHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdCkgYXMgVGFibGVWaXN1YWxpemF0aW9uO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG4gKiBAcGFyYW0gY29udGV4dE9iamVjdFBhdGggVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIHRhYmxlXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcbiAqL1xuZnVuY3Rpb24gZ2V0VmlzdWFsaXphdGlvblBhdGgoXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IHN0cmluZyB7XG5cdGNvbnN0IG1ldGFQYXRoID0gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChjb250ZXh0T2JqZWN0UGF0aCkgYXMgc3RyaW5nO1xuXG5cdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRpZiAoIW1ldGFQYXRoKSB7XG5cdFx0TG9nLmVycm9yKGBNaXNzaW5nIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtYCk7XG5cdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHR9XG5cblx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxMaW5lSXRlbT4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSkpIHtcblx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHR9XG5cdC8vTmVlZCB0byBzd2l0Y2ggdG8gdGhlIGNvbnRleHQgcmVsYXRlZCB0aGUgUFYgb3IgU1BWXG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0bGV0IHZpc3VhbGl6YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdGlmIChcblx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB8fFxuXHRcdGlzQW5ub3RhdGlvbk9mVGVybTxQcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpXG5cdCkge1xuXHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIG1ldGFQYXRoLCByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTtcblx0fSBlbHNlIHtcblx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhcGF0aCBwYXJhbWV0ZXIgZm9yIHRhYmxlIDogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdH1cblxuXHRjb25zdCBsaW5lSXRlbVZpeiA9IHZpc3VhbGl6YXRpb25zLmZpbmQoKHZpeikgPT4ge1xuXHRcdHJldHVybiB2aXoudmlzdWFsaXphdGlvbi50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTtcblx0fSk7XG5cblx0aWYgKGxpbmVJdGVtVml6KSB7XG5cdFx0cmV0dXJuIGxpbmVJdGVtVml6LmFubm90YXRpb25QYXRoO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgYW5ub3RhdGlvbiBtaXNzaW5nIGluIFBWXG5cdFx0TG9nLmVycm9yKGBCYWQgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW06ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgY29sdW1ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdENvbHVtbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXG5cdHRhYmxlQVBJLmNvbHVtbnM/LmZvckVhY2goKGNvbHVtbikgPT4ge1xuXHRcdGNvbnN0IGlzQ29sdW1uID0gY29sdW1uLmlzQTxDb2x1bW4+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIik7XG5cdFx0aWYgKGlzQ29sdW1uKSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRoZWFkZXI6IGNvbHVtbi5oZWFkZXIsXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdHRvb2x0aXA6IGNvbHVtbi50b29sdGlwLFxuXHRcdFx0XHR0ZW1wbGF0ZTogY29sdW1uLnRlbXBsYXRlISxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG5cdFx0XHRcdHR5cGU6IFwiU2xvdFwiXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRrZXk6IGNvbHVtbi5rZXksXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGFsbCB1bmRlZmluZWQgcHJvcGVydGllcywgc28gdGhhdCB0aGV5IGRvbid0IGVyYXNlIHdoYXQgaXMgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdC8vIGFsbCB0aGVpciBwcm9wZXJ0aWVzIGluIHRoZSBYTUwpXG5cdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhjdXN0b21Db2x1bW5EZWZpbml0aW9uKTtcblxuXHRcdGlmIChpc0NvbHVtbiAmJiAoY29sdW1uLmFuY2hvciB8fCBjb2x1bW4ucGxhY2VtZW50KSkge1xuXHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0YW5jaG9yOiBjb2x1bW4uYW5jaG9yLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IChjb2x1bW4ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5jb2x1bW5zIVtjb2x1bW4ua2V5XSA9IGN1c3RvbUNvbHVtbkRlZmluaXRpb247XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgYWN0aW9ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGZ1bmN0aW9uIGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb246IEFjdGlvbiB8IEFjdGlvbk92ZXJyaWRlKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0aW9ucyA9IGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5hY3Rpb25zITtcblx0XHRjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0fSxcblx0XHRcdGNvbW1hbmQ6IGFjdGlvbi5jb21tYW5kLFxuXHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdHZpc2libGU6IGFjdGlvbi52aXNpYmxlLFxuXHRcdFx0ZW5hYmxlZDogYWN0aW9uLmVuYWJsZWQsXG5cdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHksXG5cdFx0XHRncm91cDogYWN0aW9uLmdyb3VwID8/IDAgLy8gRGVmYXVsdCBncm91cCB0byAwIGlmIG5vdCBkZWZpbmVkXG5cdFx0fTtcblx0XHRpZiAoYWN0aW9uLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikpIHtcblx0XHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdFx0Li4uYWN0aW9uc1trZXldLFxuXHRcdFx0XHR0ZXh0OiBhY3Rpb24udGV4dCxcblx0XHRcdFx0X19ub1dyYXA6IHRydWUsXG5cdFx0XHRcdHByZXNzOiBcInNvbWUgaGFuZGxlclwiLCAvLyBUaGUgcmVhbCBoYW5kbGVyIHdpbGwgYmUgdHJpZ2dlcmVkIGJ5IGZpcmluZyB0aGUgZXZlbnQgb24gdGhlIEFjdGlvbiBvYmplY3Rcblx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0fTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgYWZ0ZXJFeGVjdXRpb24gPSB7XG5cdFx0XHRlbmFibGVBdXRvU2Nyb2xsOiBhY3Rpb25bXCJlbmFibGVBdXRvU2Nyb2xsXCJdLFxuXHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHR9O1xuXHRcdHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMoYWZ0ZXJFeGVjdXRpb24pO1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdC4uLmFjdGlvbnNba2V5XSxcblx0XHRcdGFmdGVyRXhlY3V0aW9uOiBPYmplY3QuZW50cmllcyhhZnRlckV4ZWN1dGlvbikubGVuZ3RoID8gYWZ0ZXJFeGVjdXRpb24gOiB1bmRlZmluZWQsXG5cdFx0XHRkZWZhdWx0VmFsdWVzRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb25cblx0XHR9O1xuXHR9XG5cblx0dGFibGVBUEkuYWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0aWYgKGFjdGlvbi5pc0E8QWN0aW9uPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIpIHx8IGFjdGlvbi5pc0E8QWN0aW9uT3ZlcnJpZGU+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiKSkge1xuXHRcdFx0Ly8gQWN0aW9uIG9yIEFjdGlvbk92ZXJyaWRlXG5cdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYWN0aW9uc1NldHRpbmdzID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzLmFjdGlvbnMhO1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdFx0YW5jaG9yOiBhY3Rpb24uYW5jaG9yXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1lbnU6IGFjdGlvbi5hY3Rpb25zLm1hcCgoc3ViQWN0aW9uKSA9PiBzdWJBY3Rpb24ua2V5KVxuXHRcdFx0fTtcblx0XHRcdGlmIChhY3Rpb24uaXNBPEFjdGlvbkdyb3VwPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIikpIHtcblx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0Li4uYWN0aW9uc1NldHRpbmdzW2tleV0sXG5cdFx0XHRcdFx0dGV4dDogYWN0aW9uLnRleHQsXG5cdFx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogYWN0aW9uLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0X19ub1dyYXA6IHRydWVcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGFjdGlvbi5hY3Rpb25zLmZvckVhY2goKHN1YkFjdGlvbikgPT4ge1xuXHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3Qoc3ViQWN0aW9uKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBc0NPLFNBQVNBLHFCQUFxQkEsQ0FBQ0MsUUFBa0IsRUFBc0I7SUFDN0UsTUFBTUMsS0FBSyxHQUFHRCxRQUFRLENBQUNFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLE1BQU1DLFNBQVMsR0FBR0YsS0FBSyxFQUFFRyxZQUFZLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUNILEtBQUssSUFBSSxDQUFDRSxTQUFTLEVBQUU7TUFDekJFLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLGlGQUFpRixDQUFDO01BQzVGLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlGQUFpRixDQUFDO0lB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
256
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZUFQSSIsIm93bmVyIiwiX2dldE93bmVyIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiTG9nIiwiZXJyb3IiLCJFcnJvciIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0RnVsbE1ldGFQYXRoIiwiY29udGV4dFBhdGhDb250ZXh0IiwiY29udGV4dFBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJNYWNyb0FQSSIsImdldENvbnZlcnRlckNvbnRleHQiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJtb2RlbHMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwidmlzdWFsaXphdGlvblBhdGgiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsInRhYmxlU2V0dGluZ3MiLCJnZXRTZXR0aW5nc0Zvck1hbmlmZXN0IiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwib3ZlcmZsb3dHcm91cHMiLCJhY3Rpb25zIiwiY29sdW1ucyIsImFkZFNsb3RDb2x1bW5zVG9FeHRyYU1hbmlmZXN0IiwiYWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QiLCJhZGRTbG90T3ZlcmZsb3dHcm91cHNUb0V4dHJhTWFuaWZlc3QiLCJleHRyYVBhcmFtcyIsImNvbnZlcnRlckNvbnRleHQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCIsImFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCIsInN2T2JqZWN0UGF0aCIsInRhcmdldE9iamVjdCIsInZpc3VhbGl6YXRpb25EZWZpbml0aW9uIiwiZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIiwiaW5NdWx0aVZpZXciLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50IiwidXNlQ29uZGVuc2VkTGF5b3V0IiwiaXNNYWNyb09yTXVsdGlwbGVWaWV3IiwidmlzdWFsaXphdGlvbnMiLCJmaW5kIiwidml6IiwidHlwZSIsIlZpc3VhbGl6YXRpb25UeXBlIiwiVGFibGUiLCJfZXhwb3J0cyIsImlzQW5ub3RhdGlvbk9mVGVybSIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwidmlzdWFsaXphdGlvbiIsImFubm90YXRpb25QYXRoIiwicmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyIsIm9iaiIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwidW5kZWZpbmVkIiwiY3VzdG9tQ29sdW1uRGVmaW5pdGlvbiIsImNvbHVtbiIsImlzQ29sdW1uIiwiaXNBIiwiaGVhZGVyIiwid2lkdGgiLCJpbXBvcnRhbmNlIiwiaG9yaXpvbnRhbEFsaWduIiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJleHBvcnRTZXR0aW5ncyIsInByb3BlcnRpZXMiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJhdmFpbGFiaWxpdHkiLCJyZXF1aXJlZCIsImFuY2hvciIsInBsYWNlbWVudCIsInBvc2l0aW9uIiwiYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0IiwiYWN0aW9uIiwiY29tbWFuZCIsImVuYWJsZU9uU2VsZWN0IiwidmlzaWJsZSIsImVuYWJsZWQiLCJpc0FJT3BlcmF0aW9uIiwicHJpb3JpdHkiLCJncm91cCIsIm92ZXJmbG93R3JvdXAiLCJ0ZXh0IiwiX19ub1dyYXAiLCJwcmVzcyIsInJlcXVpcmVzU2VsZWN0aW9uIiwiYWZ0ZXJFeGVjdXRpb24iLCJlbmFibGVBdXRvU2Nyb2xsIiwibmF2aWdhdGVUb0luc3RhbmNlIiwiZW50cmllcyIsImxlbmd0aCIsImRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsImFjdGlvbnNTZXR0aW5ncyIsIm1lbnUiLCJtYXAiLCJzdWJBY3Rpb24iLCJkZWZhdWx0QWN0aW9uIiwiYWN0aW9uT3ZlcmZsb3dHcm91cHMiLCJzaG93U2VwYXJhdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZURlZmluaXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0VUlBbm5vdGF0aW9uVGVybXMsXG5cdHR5cGUgTGluZUl0ZW0sXG5cdHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCxcblx0dHlwZSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHR0eXBlIFNlbGVjdGlvblZhcmlhbnQsXG5cdHR5cGUgU2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHtcblx0VmlzdWFsaXphdGlvblR5cGUsXG5cdHR5cGUgQXZhaWxhYmlsaXR5VHlwZSxcblx0dHlwZSBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4sXG5cdHR5cGUgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUsXG5cdHR5cGUgSW1wb3J0YW5jZSxcblx0dHlwZSBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0NoYXJ0XCI7XG5pbXBvcnQge1xuXHRnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG5cdGdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24sXG5cdHR5cGUgVmlzdWFsaXphdGlvbkFuZFBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyB0eXBlIFRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBQbGFjZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uT2ZUZXJtIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCwgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCIuLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uIGZyb20gXCIuL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXAgZnJvbSBcIi4vQWN0aW9uR3JvdXBcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcIi4vQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwiLi9UYWJsZUFQSVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFibGVEZWZpbml0aW9uKHRhYmxlQVBJOiBUYWJsZUFQSSk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IG93bmVyID0gdGFibGVBUEkuX2dldE93bmVyKCk7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0aWYgKCFvd25lciB8fCAhbWV0YU1vZGVsKSB7XG5cdFx0TG9nLmVycm9yKFwiQ2Fubm90IGNyZWF0ZSBhIHRhYmxlIGRlZmluaXRpb24gZm9yIGEgVGFibGVBUEkgd2l0aG91dCBhbiBvd25lciBvciBhIG1ldGFtb2RlbFwiKTtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGEgdGFibGUgZGVmaW5pdGlvbiBmb3IgYSBUYWJsZUFQSSB3aXRob3V0IGFuIG93bmVyIG9yIGEgbWV0YW1vZGVsXCIpO1xuXHR9XG5cdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5nZXRGdWxsTWV0YVBhdGgoKSk7XG5cdGNvbnN0IGNvbnRleHRQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5jb250ZXh0UGF0aCk7XG5cdGlmICghbWV0YVBhdGhDb250ZXh0IHx8ICFjb250ZXh0UGF0aENvbnRleHQpIHtcblx0XHRMb2cuZXJyb3IoYEluY29ycmVjdCBtZXRhUGF0aCAoJHt0YWJsZUFQSS5tZXRhUGF0aH0pIG9yIGNvbnRleHRQYXRoICgke3RhYmxlQVBJLmNvbnRleHRQYXRofSkgZm9yIHRhYmxlQVBJYCk7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5jb3JyZWN0IG1ldGFQYXRoIG9yIGNvbnRleHRQYXRoIGZvciB0YWJsZUFQSVwiKTtcblx0fVxuXG5cdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdG1ldGFQYXRoQ29udGV4dCxcblx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0KTtcblxuXHRjb25zdCBpbml0aWFsQ29udmVydGVyQ29udGV4dCA9IE1hY3JvQVBJLmdldENvbnZlcnRlckNvbnRleHQodGFibGVBUEkuY29udGV4dE9iamVjdFBhdGgsIHRhYmxlQVBJLmNvbnRleHRQYXRoLCB7XG5cdFx0YXBwQ29tcG9uZW50OiBvd25lci5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRtb2RlbHM6IG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHR9IGFzIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRjb25zdCB2aXN1YWxpemF0aW9uUGF0aCA9IGdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0Y29uc3QgdGFibGVTZXR0aW5ncyA9IHRhYmxlQVBJLmdldFNldHRpbmdzRm9yTWFuaWZlc3QoKTtcblxuXHRjb25zdCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRcdG92ZXJmbG93R3JvdXBzOiB7fSxcblx0XHRhY3Rpb25zOiB7fSxcblx0XHRjb2x1bW5zOiB7fSxcblx0XHR0YWJsZVNldHRpbmdzXG5cdH07XG5cblx0Ly8gUHJvY2VzcyBjdXN0b20gYWN0aW9ucyBhbmQgY29sdW1uc1xuXHRhZGRTbG90Q29sdW1uc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSSwgZXh0cmFNYW5pZmVzdFNldHRpbmdzKTtcblx0YWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEksIGV4dHJhTWFuaWZlc3RTZXR0aW5ncyk7XG5cdGFkZFNsb3RPdmVyZmxvd0dyb3Vwc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSSwgZXh0cmFNYW5pZmVzdFNldHRpbmdzKTtcblxuXHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzO1xuXHRjb25zdCBjb252ZXJ0ZXJDb250ZXh0ID0gTWFjcm9BUEkuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHR0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHR0YWJsZUFQSS5jb250ZXh0UGF0aCxcblx0XHR7XG5cdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyPy5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdG1vZGVsczogb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHRcdH0gYXMgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRleHRyYVBhcmFtc1xuXHQpO1xuXG5cdGxldCBhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdGlmICh0YWJsZUFQSS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgpIHtcblx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGFibGVBUEkuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSEsXG5cdFx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0XHQpO1xuXHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXG5cdGNvbnN0IHZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKFxuXHRcdCh0YWJsZUFQSS5pbk11bHRpVmlldyAmJiB0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdC5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdCAgKVxuXHRcdFx0OiBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoKSkgYXMgc3RyaW5nLFxuXHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0e1xuXHRcdFx0aXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudDogdGFibGVBUEkudXNlQ29uZGVuc2VkTGF5b3V0LFxuXHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRpc01hY3JvT3JNdWx0aXBsZVZpZXc6IHRhYmxlQVBJLmluTXVsdGlWaWV3ID8/IHRydWVcblx0XHR9XG5cdCk7XG5cblx0Ly8gdGFrZSB0aGUgKGZpcnN0KSBUYWJsZSB2aXN1YWxpemF0aW9uXG5cdHJldHVybiB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbi52aXN1YWxpemF0aW9ucy5maW5kKFxuXHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdCkgYXMgVGFibGVWaXN1YWxpemF0aW9uO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG4gKiBAcGFyYW0gY29udGV4dE9iamVjdFBhdGggVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIHRhYmxlXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcbiAqL1xuZnVuY3Rpb24gZ2V0VmlzdWFsaXphdGlvblBhdGgoXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IHN0cmluZyB7XG5cdGNvbnN0IG1ldGFQYXRoID0gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChjb250ZXh0T2JqZWN0UGF0aCkgYXMgc3RyaW5nO1xuXG5cdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRpZiAoIW1ldGFQYXRoKSB7XG5cdFx0TG9nLmVycm9yKGBNaXNzaW5nIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtYCk7XG5cdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHR9XG5cblx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxMaW5lSXRlbT4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSkpIHtcblx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHR9XG5cdC8vTmVlZCB0byBzd2l0Y2ggdG8gdGhlIGNvbnRleHQgcmVsYXRlZCB0aGUgUFYgb3IgU1BWXG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0bGV0IHZpc3VhbGl6YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdGlmIChcblx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB8fFxuXHRcdGlzQW5ub3RhdGlvbk9mVGVybTxQcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpXG5cdCkge1xuXHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIG1ldGFQYXRoLCByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTtcblx0fSBlbHNlIHtcblx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhcGF0aCBwYXJhbWV0ZXIgZm9yIHRhYmxlIDogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdH1cblxuXHRjb25zdCBsaW5lSXRlbVZpeiA9IHZpc3VhbGl6YXRpb25zLmZpbmQoKHZpeikgPT4ge1xuXHRcdHJldHVybiB2aXoudmlzdWFsaXphdGlvbi50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTtcblx0fSk7XG5cblx0aWYgKGxpbmVJdGVtVml6KSB7XG5cdFx0cmV0dXJuIGxpbmVJdGVtVml6LmFubm90YXRpb25QYXRoO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgYW5ub3RhdGlvbiBtaXNzaW5nIGluIFBWXG5cdFx0TG9nLmVycm9yKGBCYWQgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW06ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgY29sdW1ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdENvbHVtbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXG5cdHRhYmxlQVBJLmNvbHVtbnM/LmZvckVhY2goKGNvbHVtbikgPT4ge1xuXHRcdGNvbnN0IGlzQ29sdW1uID0gY29sdW1uLmlzQTxDb2x1bW4+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIik7XG5cdFx0aWYgKGlzQ29sdW1uKSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRoZWFkZXI6IGNvbHVtbi5oZWFkZXIsXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdHRvb2x0aXA6IGNvbHVtbi50b29sdGlwLFxuXHRcdFx0XHR0ZW1wbGF0ZTogY29sdW1uLnRlbXBsYXRlISxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG5cdFx0XHRcdHR5cGU6IFwiU2xvdFwiXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRrZXk6IGNvbHVtbi5rZXksXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGFsbCB1bmRlZmluZWQgcHJvcGVydGllcywgc28gdGhhdCB0aGV5IGRvbid0IGVyYXNlIHdoYXQgaXMgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdC8vIGFsbCB0aGVpciBwcm9wZXJ0aWVzIGluIHRoZSBYTUwpXG5cdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhjdXN0b21Db2x1bW5EZWZpbml0aW9uKTtcblxuXHRcdGlmIChpc0NvbHVtbiAmJiAoY29sdW1uLmFuY2hvciB8fCBjb2x1bW4ucGxhY2VtZW50KSkge1xuXHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0YW5jaG9yOiBjb2x1bW4uYW5jaG9yLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IChjb2x1bW4ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5jb2x1bW5zIVtjb2x1bW4ua2V5XSA9IGN1c3RvbUNvbHVtbkRlZmluaXRpb247XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgYWN0aW9ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGZ1bmN0aW9uIGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb246IEFjdGlvbiB8IEFjdGlvbk92ZXJyaWRlKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0aW9ucyA9IGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5hY3Rpb25zITtcblx0XHRjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0fSxcblx0XHRcdGNvbW1hbmQ6IGFjdGlvbi5jb21tYW5kLFxuXHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdHZpc2libGU6IGFjdGlvbi52aXNpYmxlLFxuXHRcdFx0ZW5hYmxlZDogYWN0aW9uLmVuYWJsZWQsXG5cdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHksXG5cdFx0XHRncm91cDogYWN0aW9uLmdyb3VwID8/IDAsIC8vIERlZmF1bHQgZ3JvdXAgdG8gMCBpZiBub3QgZGVmaW5lZFxuXHRcdFx0b3ZlcmZsb3dHcm91cDogYWN0aW9uLm92ZXJmbG93R3JvdXBcblx0XHR9O1xuXHRcdGlmIChhY3Rpb24uaXNBPEFjdGlvbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiKSkge1xuXHRcdFx0YWN0aW9uc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zW2tleV0sXG5cdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRfX25vV3JhcDogdHJ1ZSxcblx0XHRcdFx0cHJlc3M6IFwic29tZUhhbmRsZXJcIiwgLy8gVGhlIHJlYWwgaGFuZGxlciB3aWxsIGJlIHRyaWdnZXJlZCBieSBmaXJpbmcgdGhlIGV2ZW50IG9uIHRoZSBBY3Rpb24gb2JqZWN0XG5cdFx0XHRcdHJlcXVpcmVzU2VsZWN0aW9uOiBhY3Rpb24ucmVxdWlyZXNTZWxlY3Rpb25cblx0XHRcdH07XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGFmdGVyRXhlY3V0aW9uID0ge1xuXHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdG5hdmlnYXRlVG9JbnN0YW5jZTogYWN0aW9uW1wibmF2aWdhdGVUb0luc3RhbmNlXCJdXG5cdFx0fTtcblx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRhY3Rpb25zW2tleV0gPSB7XG5cdFx0XHQuLi5hY3Rpb25zW2tleV0sXG5cdFx0XHRhZnRlckV4ZWN1dGlvbjogT2JqZWN0LmVudHJpZXMoYWZ0ZXJFeGVjdXRpb24pLmxlbmd0aCA/IGFmdGVyRXhlY3V0aW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0fTtcblx0fVxuXG5cdHRhYmxlQVBJLmFjdGlvbnM/LmZvckVhY2goKGFjdGlvbikgPT4ge1xuXHRcdGlmIChhY3Rpb24uaXNBPEFjdGlvbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiKSB8fCBhY3Rpb24uaXNBPEFjdGlvbk92ZXJyaWRlPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uT3ZlcnJpZGVcIikpIHtcblx0XHRcdC8vIEFjdGlvbiBvciBBY3Rpb25PdmVycmlkZVxuXHRcdFx0YWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0KGFjdGlvbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGFjdGlvbnNTZXR0aW5ncyA9IGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5hY3Rpb25zITtcblx0XHRcdGNvbnN0IGtleSA9IGFjdGlvbi5rZXk7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtZW51OiBhY3Rpb24uYWN0aW9ucy5tYXAoKHN1YkFjdGlvbikgPT4gc3ViQWN0aW9uLmtleSlcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLmlzQTxBY3Rpb25Hcm91cD4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwXCIpKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdGRlZmF1bHRBY3Rpb246IGFjdGlvbi5kZWZhdWx0QWN0aW9uLFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRhY3Rpb24uYWN0aW9ucy5mb3JFYWNoKChzdWJBY3Rpb24pID0+IHtcblx0XHRcdFx0YWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0KHN1YkFjdGlvbik7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgYWN0aW9uT3ZlcmZsb3dHcm91cHMgdG8gdGhlIGV4dHJhIG1hbmlmZXN0IHNldHRpbmdzLlxuICogQHBhcmFtIHRhYmxlQVBJXG4gKiBAcGFyYW0gZXh0cmFNYW5pZmVzdFNldHRpbmdzXG4gKi9cbmZ1bmN0aW9uIGFkZFNsb3RPdmVyZmxvd0dyb3Vwc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSTogVGFibGVBUEksIGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24pOiB2b2lkIHtcblx0dGFibGVBUEkuYWN0aW9uT3ZlcmZsb3dHcm91cHM/LmZvckVhY2goKG92ZXJmbG93R3JvdXApID0+IHtcblx0XHRleHRyYU1hbmlmZXN0U2V0dGluZ3Mub3ZlcmZsb3dHcm91cHMhW292ZXJmbG93R3JvdXAub3ZlcmZsb3dHcm91cF0gPSB7XG5cdFx0XHRzaG93U2VwYXJhdG9yOiBvdmVyZmxvd0dyb3VwLnNob3dTZXBhcmF0b3IgPz8gdHJ1ZVxuXHRcdH07XG5cdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztFQXNDTyxTQUFTQSxxQkFBcUJBLENBQUNDLFFBQWtCLEVBQXNCO0lBQzdFLE1BQU1DLEtBQUssR0FBR0QsUUFBUSxDQUFDRSxTQUFTLENBQUMsQ0FBQztJQUNsQyxNQUFNQyxTQUFTLEdBQUdGLEtBQUssRUFBRUcsWUFBWSxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDSCxLQUFLLElBQUksQ0FBQ0UsU0FBUyxFQUFFO01BQ3pCRSxHQUFHLENBQUNDLEtBQUssQ0FBQyxpRkFBaUYsQ0FBQztNQUM1RixNQUFNLElBQUlDLEtBQUssQ0FBQyxpRkFBaUYsQ0FBQztJQUNuRztJQUNBLE1BQU1DLGVBQWUsR0FBR0wsU0FBUyxDQUFDTSxvQkFBb0IsQ0FBQ1QsUUFBUSxDQUFDVSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLE1BQU1DLGtCQUFrQixHQUFHUixTQUFTLENBQUNNLG9CQUFvQixDQUFDVCxRQUFRLENBQUNZLFdBQVcsQ0FBQztJQUMvRSxJQUFJLENBQUNKLGVB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
@@ -64,6 +64,7 @@ export function createTableDefinition(tableAPI: TableAPI): TableVisualization {
64
64
  const tableSettings = tableAPI.getSettingsForManifest();
65
65
 
66
66
  const extraManifestSettings: TableManifestConfiguration = {
67
+ overflowGroups: {},
67
68
  actions: {},
68
69
  columns: {},
69
70
  tableSettings
@@ -72,6 +73,7 @@ export function createTableDefinition(tableAPI: TableAPI): TableVisualization {
72
73
  // Process custom actions and columns
73
74
  addSlotColumnsToExtraManifest(tableAPI, extraManifestSettings);
74
75
  addSlotActionsToExtraManifest(tableAPI, extraManifestSettings);
76
+ addSlotOverflowGroupsToExtraManifest(tableAPI, extraManifestSettings);
75
77
 
76
78
  const extraParams: Record<string, unknown> = {};
77
79
  extraParams[visualizationPath] = extraManifestSettings;
@@ -247,14 +249,15 @@ function addSlotActionsToExtraManifest(tableAPI: TableAPI, extraManifestSettings
247
249
  enabled: action.enabled,
248
250
  isAIOperation: action.isAIOperation,
249
251
  priority: action.priority,
250
- group: action.group ?? 0 // Default group to 0 if not defined
252
+ group: action.group ?? 0, // Default group to 0 if not defined
253
+ overflowGroup: action.overflowGroup
251
254
  };
252
255
  if (action.isA<Action>("sap.fe.macros.table.Action")) {
253
256
  actions[key] = {
254
257
  ...actions[key],
255
258
  text: action.text,
256
259
  __noWrap: true,
257
- press: "some handler", // The real handler will be triggered by firing the event on the Action object
260
+ press: "someHandler", // The real handler will be triggered by firing the event on the Action object
258
261
  requiresSelection: action.requiresSelection
259
262
  };
260
263
  return;
@@ -299,3 +302,16 @@ function addSlotActionsToExtraManifest(tableAPI: TableAPI, extraManifestSettings
299
302
  }
300
303
  });
301
304
  }
305
+
306
+ /**
307
+ * Adds the slot actionOverflowGroups to the extra manifest settings.
308
+ * @param tableAPI
309
+ * @param extraManifestSettings
310
+ */
311
+ function addSlotOverflowGroupsToExtraManifest(tableAPI: TableAPI, extraManifestSettings: TableManifestConfiguration): void {
312
+ tableAPI.actionOverflowGroups?.forEach((overflowGroup) => {
313
+ extraManifestSettings.overflowGroups![overflowGroup.overflowGroup] = {
314
+ showSeparator: overflowGroup.showSeparator ?? true
315
+ };
316
+ });
317
+ }