@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
@@ -6,10 +6,12 @@ import type ChartChart from "sap/chart/Chart";
6
6
  import type { PropertiesOf } from "sap/fe/base/ClassSupport";
7
7
  import { aggregation, association, defineUI5Class, event, implementInterface, property, xmlEventHandler } from "sap/fe/base/ClassSupport";
8
8
  import { controllerExtensionHandler } from "sap/fe/base/HookSupport";
9
+ import type { StartupParameters } from "sap/fe/core/AppComponent";
9
10
  import CommonUtils from "sap/fe/core/CommonUtils";
10
11
  import type TemplateComponent from "sap/fe/core/TemplateComponent";
11
12
  import type { NavigationParameter } from "sap/fe/core/controllerextensions/ViewState";
12
13
  import type IViewStateContributor from "sap/fe/core/controllerextensions/viewState/IViewStateContributor";
14
+ import type { OverflowGroupsConfiguration } from "sap/fe/core/converters/ManifestSettings";
13
15
  import { getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
14
16
  import type { BaseAction } from "sap/fe/core/converters/controls/Common/Action";
15
17
  import type { ChartVisualization } from "sap/fe/core/converters/controls/Common/Chart";
@@ -23,6 +25,7 @@ import Action from "sap/fe/macros/chart/Action";
23
25
  import type ActionGroup from "sap/fe/macros/chart/ActionGroup";
24
26
  import ChartRuntime from "sap/fe/macros/chart/ChartRuntime";
25
27
  import ChartUtils from "sap/fe/macros/chart/ChartUtils";
28
+ import type FilterBar from "sap/fe/macros/controls/FilterBar";
26
29
  import type ISingleSectionContributor from "sap/fe/macros/controls/section/ISingleSectionContributor";
27
30
  import type { ConsumerData } from "sap/fe/macros/controls/section/ISingleSectionContributor";
28
31
  import FilterUtils from "sap/fe/macros/filter/FilterUtils";
@@ -40,7 +43,6 @@ import type LayoutData from "sap/ui/core/LayoutData";
40
43
  import { TitleLevel } from "sap/ui/core/library";
41
44
  import type MDCChart from "sap/ui/mdc/Chart";
42
45
  import type ChartDelegate from "sap/ui/mdc/ChartDelegate";
43
- import type FilterBar from "sap/ui/mdc/FilterBar";
44
46
  import type ActionToolbarAction from "sap/ui/mdc/actiontoolbar/ActionToolbarAction";
45
47
  import type { AppState, Items, Sorters } from "sap/ui/mdc/p13n/StateUtil";
46
48
  import StateUtil from "sap/ui/mdc/p13n/StateUtil";
@@ -49,10 +51,12 @@ import Filter from "sap/ui/model/Filter";
49
51
  import type Context from "sap/ui/model/odata/v4/Context";
50
52
  import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
51
53
  import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
54
+ import type { EventHandler } from "types/extension_types";
52
55
  import type { PropertyInfo } from "./DelegateUtil";
53
56
  import MacroAPI from "./MacroAPI";
54
57
  import type { ActionOrActionGroup, ChartContextObjectPath, ChartCustomData, CommandAction } from "./chart/MdcChartTemplate";
55
58
  import { getMdcChartTemplate } from "./chart/MdcChartTemplate";
59
+ import type OverflowGroup from "./chart/OverflowGroup";
56
60
  import PresentationVariantToStateUtilsPV from "./chart/adapter/ChartPvToStateUtils";
57
61
  import { createChartCardParams } from "./insights/AnalyticalInsightsHelper";
58
62
  import type { ControlState } from "./insights/CommonInsightsHelper";
@@ -262,6 +266,8 @@ export default class Chart extends MacroAPI implements ISingleSectionContributor
262
266
 
263
267
  chartActions?: BaseAction[] = [];
264
268
 
269
+ overflowGroups?: OverflowGroupsConfiguration;
270
+
265
271
  filter?: string;
266
272
 
267
273
  visible?: string;
@@ -322,6 +328,16 @@ export default class Chart extends MacroAPI implements ISingleSectionContributor
322
328
  })
323
329
  actions!: Action[] | ActionGroup[];
324
330
 
331
+ /**
332
+ * Aggregate overflowGroups of the chart.
333
+ * @public
334
+ */
335
+ @aggregation({
336
+ type: "sap.fe.macros.chart.OverflowGroup",
337
+ multiple: true
338
+ })
339
+ actionOverflowGroups?: OverflowGroup[];
340
+
325
341
  /**
326
342
  * Gets contexts from the chart that have been selected by the user.
327
343
  * @returns Contexts of the rows selected by the user
@@ -336,7 +352,7 @@ export default class Chart extends MacroAPI implements ISingleSectionContributor
336
352
  * @public
337
353
  */
338
354
  @event()
339
- selectionChange!: Function;
355
+ selectionChange!: EventHandler<UI5Event<{ data: unknown[]; selected: boolean }, Chart>>;
340
356
 
341
357
  /**
342
358
  * An event triggered when the chart requests data.
@@ -847,13 +863,13 @@ export default class Chart extends MacroAPI implements ISingleSectionContributor
847
863
  * @returns A promise that resolves when the variant has been applied.
848
864
  */
849
865
  async handleVariantIdPassedViaURLParams(): Promise<unknown> {
850
- const urlParams = this.getStartupParameters();
851
- const chartVariantId = urlParams?.["sap-ui-fe-chart-variant-id"]?.[0];
866
+ const urlParams = await this.getStartupParameters();
867
+ const chartVariantId = urlParams["sap-ui-fe-chart-variant-id"]?.[0];
852
868
  const view = CommonUtils.getTargetView(this);
853
869
  const viewData = view.getViewData();
854
870
  const vmType = viewData.variantManagement;
855
871
  const vm = (this.getContent() as MDCChart)?.getVariant();
856
- if (vm && chartVariantId && vmType === "Control") {
872
+ if (vm && chartVariantId && typeof chartVariantId === "string" && vmType === "Control") {
857
873
  const variantToApply = vm.getVariants().find((variant) => variant.getKey() === chartVariantId);
858
874
  const ControlVariantApplyAPI = (await import("sap/ui/fl/apply/api/ControlVariantApplyAPI")).default;
859
875
  return ControlVariantApplyAPI.activateVariant({
@@ -866,14 +882,12 @@ export default class Chart extends MacroAPI implements ISingleSectionContributor
866
882
  /**
867
883
  * Retrieves the startup parameters from the application component data.
868
884
  * These parameters contain URL query parameters that were passed when the application was started.
869
- * @returns The startup parameters as a key-value mapping where each key can have multiple values,
870
- * or undefined if no parameters are available or if the component chain is not accessible.
885
+ * @returns The startup parameters.
871
886
  */
872
- getStartupParameters(): Record<string, string[]> | undefined {
887
+ async getStartupParameters(): Promise<StartupParameters> {
873
888
  const controller = this.getPageController();
874
- const appComponent = controller?.getAppComponent();
875
- const componentData = appComponent?.getComponentData();
876
- return componentData?.startupParameters as unknown as Record<string, string[]>;
889
+ const appComponent = controller.getAppComponent();
890
+ return appComponent.getStartupParameters();
877
891
  }
878
892
 
879
893
  /**
@@ -2,11 +2,12 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/formatters/CollaborationFormatter", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/ResourceModelHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/UIFormatters", "sap/m/Avatar", "sap/m/Label", "sap/m/ResponsivePopover", "sap/ui/core/Element", "sap/fe/base/jsx-runtime/jsx"], function (BindingToolkit, ClassSupport, EventDelegateHook, BuildingBlock, CollaborationFormatters, ModelHelper, ResourceModelHelper, TypeGuards, UIFormatters, Avatar, Label, ResponsivePopover, UI5Element, _jsx) {
5
+ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/formatters/CollaborationFormatter", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/ResourceModelHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters", "sap/m/Avatar", "sap/m/Label", "sap/m/ResponsivePopover", "sap/ui/core/Element", "sap/fe/base/jsx-runtime/jsx"], function (BindingToolkit, ClassSupport, EventDelegateHook, BuildingBlock, CollaborationFormatters, ModelHelper, ResourceModelHelper, TypeGuards, DataModelPathHelper, UIFormatters, Avatar, Label, ResponsivePopover, UI5Element, _jsx) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;
9
9
  var _exports = {};
10
+ var getTargetObjectPath = DataModelPathHelper.getTargetObjectPath;
10
11
  var isProperty = TypeGuards.isProperty;
11
12
  var property = ClassSupport.property;
12
13
  var event = ClassSupport.event;
@@ -20,17 +21,16 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
20
21
  /**
21
22
  * A BuildingBlock to watch the lock status of a property and to react on changes.
22
23
  * @public
23
- * @ui5-experimental-since 1.141.0
24
24
  * @since 1.141.0
25
25
  */
26
26
  let CollaborativeDraftHandler = (_dec = defineUI5Class("sap.fe.macros.CollaborativeDraftHandler"), _dec2 = property({
27
27
  type: "string"
28
28
  }), _dec3 = property({
29
29
  type: "string"
30
- }), _dec4 = event(), _dec5 = property({
30
+ }), _dec4 = event(), _dec5 = event(), _dec6 = property({
31
31
  type: "boolean",
32
32
  defaultValue: false
33
- }), _dec6 = property({
33
+ }), _dec7 = property({
34
34
  type: "object"
35
35
  }), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
36
36
  function CollaborativeDraftHandler(idOrSettings, settings) {
@@ -40,14 +40,12 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
40
40
  * Defines the path of the context used in the current page or block.
41
41
  * This setting is defined by the framework, and can be overwritten.
42
42
  * @public
43
- * @ui5-experimental-since 1.141.0
44
43
  * @since 1.141.0
45
44
  */
46
45
  _initializerDefineProperty(_this, "contextPath", _descriptor, _this);
47
46
  /**
48
47
  * Defines the relative path of the property in the metamodel, based on the current contextPath.
49
48
  * @public
50
- * @ui5-experimental-since 1.141.0
51
49
  * @since 1.141.0
52
50
  */
53
51
  _initializerDefineProperty(_this, "metaPath", _descriptor2, _this);
@@ -55,42 +53,43 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
55
53
  * Event fired when the lock status changes.
56
54
  *
57
55
  * Parameters:<BR>
58
- * - isLocked : true if the property is locked, false otherwise<BR>
59
- * - lockingUserID: the ID of the user locking the property (undefined if not locked)<BR>
60
- * - lockingUserName: the name of the user locking the property (undefined if not locked)<BR>
61
- * - lockingUserInitials: the initials of the user locking the property (undefined if not locked)<BR>
62
- * - lockingUserColor: the color associated to the user locking the property (undefined if not locked)<BR>
56
+ * - isLocked : True if the property is locked, false otherwise<BR>
57
+ * - lockingUserID: The ID of the user locking the property (undefined if not locked)<BR>
58
+ * - lockingUserName: The name of the user locking the property (undefined if not locked)<BR>
59
+ * - lockingUserInitials: The initials of the user locking the property (undefined if not locked)<BR>
60
+ * - lockingUserColor: The color associated to the user locking the property (undefined if not locked)<BR>
63
61
  * @public
64
- * @ui5-experimental-since 1.141.0
65
62
  * @since 1.141.0
66
63
  */
67
64
  _initializerDefineProperty(_this, "lockChange", _descriptor3, _this);
65
+ /**
66
+ * Event fired when the user clicks on the avatar.
67
+ *
68
+ * Parameters:<BR>
69
+ * - lockingUserID: The ID of the user locking the property<BR>
70
+ * - lockingUserName: The name of the user locking the property<BR>
71
+ * - lockingUserInitials: The initials of the user locking the property<BR>
72
+ * - lockingUserColor: The color associated to the user locking the property<BR>
73
+ * @public
74
+ * @since 1.142.0
75
+ */
76
+ _initializerDefineProperty(_this, "avatarPress", _descriptor4, _this);
68
77
  /**
69
78
  * If set to true, the standard Avatar control is displayed to indicate the lock status.
70
79
  * If set to false, nothing is displayed.
71
80
  * @public
72
- * @ui5-experimental-since 1.141.0
73
81
  * @since 1.141.0
74
82
  */
75
- _initializerDefineProperty(_this, "showAvatar", _descriptor4, _this);
83
+ _initializerDefineProperty(_this, "showAvatar", _descriptor5, _this);
76
84
  /**
77
85
  * Internal property to receive the lock data
78
86
  */
79
- _initializerDefineProperty(_this, "lockInfo", _descriptor5, _this);
87
+ _initializerDefineProperty(_this, "lockInfo", _descriptor6, _this);
80
88
  return _this;
81
89
  }
82
90
  _exports = CollaborativeDraftHandler;
83
91
  _inheritsLoose(CollaborativeDraftHandler, _BuildingBlock);
84
92
  var _proto = CollaborativeDraftHandler.prototype;
85
- _proto.getFullMetaPath = function getFullMetaPath() {
86
- if (this.metaPath.startsWith("/")) {
87
- return this.metaPath;
88
- } else if (this.contextPath.endsWith("/")) {
89
- return `${this.contextPath}${this.metaPath}`;
90
- } else {
91
- return `${this.contextPath}/${this.metaPath}`;
92
- }
93
- };
94
93
  _proto.onMetadataAvailable = function onMetadataAvailable() {
95
94
  const owner = this._getOwner();
96
95
  if (!owner) {
@@ -99,15 +98,13 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
99
98
  if (!ModelHelper.isCollaborationDraftSupported(owner.getAppComponent().getModel().getMetaModel())) {
100
99
  return;
101
100
  }
102
- this.contextPath ??= this.getOwnerContextPath();
103
- const fullMetaPath = this.getFullMetaPath();
104
- const objectPath = this.getDataModelObjectPath(fullMetaPath);
101
+ const objectPath = this.getDataModelObjectForMetaPath(this.metaPath, this.contextPath);
105
102
  if (!objectPath || !isProperty(objectPath.targetObject)) {
106
- throw new Error(`CollaborativeDraftHandler: the provided metaPath '${fullMetaPath}' does not point to a valid property`);
103
+ throw new Error(`CollaborativeDraftHandler: the provided metaPath '${this.metaPath}' does not point to a valid property`);
107
104
  }
108
105
 
109
106
  // Bind the lockInfo property to the corresponding lockInfo in the internal model
110
- const keysBindingParts = objectPath.targetEntityType.keys.map(key => {
107
+ const keysBindingParts = objectPath.contextLocation?.targetEntityType.keys.map(key => {
111
108
  return {
112
109
  path: key.name,
113
110
  targetType: "any"
@@ -115,7 +112,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
115
112
  });
116
113
  const bindingInfo = {
117
114
  parts: [{
118
- path: `internal>/collaboration/activities${fullMetaPath}`,
115
+ path: `internal>/collaboration/activities${getTargetObjectPath(objectPath)}`,
119
116
  targetType: "any"
120
117
  }, ...keysBindingParts],
121
118
  formatter: CollaborationFormatters.getCollaborationInfo
@@ -149,8 +146,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
149
146
  * @returns The Avatar control
150
147
  */;
151
148
  _proto.createCollaborationAvatar = function createCollaborationAvatar(objectPath) {
152
- const collaborationExpression = UIFormatters.getCollaborationExpression(objectPath, CollaborationFormatters.hasCollaborationActivity);
153
- const collaborationHasActivityExpression = compileExpression(collaborationExpression);
149
+ const collaborationHasActivityExpression = compileExpression(UIFormatters.getCollaborationExpression(objectPath, CollaborationFormatters.hasCollaborationActivity));
154
150
  const collaborationInitialsExpression = compileExpression(UIFormatters.getCollaborationExpression(objectPath, CollaborationFormatters.getCollaborationActivityInitials));
155
151
  const collaborationColorExpression = compileExpression(UIFormatters.getCollaborationExpression(objectPath, CollaborationFormatters.getCollaborationActivityColor));
156
152
  return _jsx(Avatar, {
@@ -178,6 +174,16 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
178
174
  _proto.onAvatarPress = function onAvatarPress(evt) {
179
175
  const avatar = evt.getSource();
180
176
  const block = avatar.getParent();
177
+ if (block.hasListeners("avatarPress")) {
178
+ // If the event is handled by the application, do not open the popover
179
+ block.fireEvent("avatarPress", {
180
+ lockingUserID: block.lockInfo?.id,
181
+ lockingUserName: block.lockInfo?.name,
182
+ lockingUserInitials: block.lockInfo?.initials,
183
+ lockingUserColor: block.lockInfo?.color
184
+ });
185
+ return;
186
+ }
181
187
  const view = this.getPageController().getView();
182
188
  const resourceModel = ResourceModelHelper.getResourceModel(view);
183
189
  let popover = UI5Element.getElementById(`manageCollaborationDraft--editUser`);
@@ -211,14 +217,19 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
211
217
  enumerable: true,
212
218
  writable: true,
213
219
  initializer: null
214
- }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "showAvatar", [_dec5], {
220
+ }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "avatarPress", [_dec5], {
221
+ configurable: true,
222
+ enumerable: true,
223
+ writable: true,
224
+ initializer: null
225
+ }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "showAvatar", [_dec6], {
215
226
  configurable: true,
216
227
  enumerable: true,
217
228
  writable: true,
218
229
  initializer: function () {
219
230
  return false;
220
231
  }
221
- }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "lockInfo", [_dec6], {
232
+ }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "lockInfo", [_dec7], {
222
233
  configurable: true,
223
234
  enumerable: true,
224
235
  writable: true,
@@ -227,4 +238,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
227
238
  _exports = CollaborativeDraftHandler;
228
239
  return _exports;
229
240
  }, false);
230
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2xsYWJvcmF0aXZlRHJhZnRIYW5kbGVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiZXZlbnQiLCJfZGVjNSIsImRlZmF1bHRWYWx1ZSIsIl9kZWM2IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwiaWRPclNldHRpbmdzIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldEZ1bGxNZXRhUGF0aCIsIm1ldGFQYXRoIiwic3RhcnRzV2l0aCIsImNvbnRleHRQYXRoIiwiZW5kc1dpdGgiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwib3duZXIiLCJfZ2V0T3duZXIiLCJNb2RlbEhlbHBlciIsImlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZnVsbE1ldGFQYXRoIiwib2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJpc1Byb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwiRXJyb3IiLCJrZXlzQmluZGluZ1BhcnRzIiwidGFyZ2V0RW50aXR5VHlwZSIsImtleXMiLCJtYXAiLCJrZXkiLCJwYXRoIiwibmFtZSIsInRhcmdldFR5cGUiLCJiaW5kaW5nSW5mbyIsInBhcnRzIiwiZm9ybWF0dGVyIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMiLCJnZXRDb2xsYWJvcmF0aW9uSW5mbyIsImJpbmRQcm9wZXJ0eSIsImNvbnRlbnQiLCJzaG93QXZhdGFyIiwiY3JlYXRlQ29sbGFib3JhdGlvbkF2YXRhciIsInNldExvY2tJbmZvIiwibG9ja0luZm8iLCJmaXJlRXZlbnQiLCJpc0xvY2tlZCIsInVuZGVmaW5lZCIsImxvY2tpbmdVc2VySUQiLCJpZCIsImxvY2tpbmdVc2VyTmFtZSIsImxvY2tpbmdVc2VySW5pdGlhbHMiLCJpbml0aWFscyIsImxvY2tpbmdVc2VyQ29sb3IiLCJjb2xvciIsImNvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiVUlGb3JtYXR0ZXJzIiwiZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24iLCJoYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHkiLCJjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJfanN4IiwiQXZhdGFyIiwidmlzaWJsZSIsImRpc3BsYXlTaXplIiwiY3VzdG9tRGlzcGxheVNpemUiLCJjdXN0b21Gb250U2l6ZSIsImJhY2tncm91bmRDb2xvciIsInByZXNzIiwiZXZ0Iiwib25BdmF0YXJQcmVzcyIsImNoaWxkcmVuIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwic3RvcFRhcFByb3BhZ2F0aW9uIiwiYXZhdGFyIiwiZ2V0U291cmNlIiwiYmxvY2siLCJnZXRQYXJlbnQiLCJ2aWV3IiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwicmVzb3VyY2VNb2RlbCIsIlJlc291cmNlTW9kZWxIZWxwZXIiLCJnZXRSZXNvdXJjZU1vZGVsIiwicG9wb3ZlciIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIlJlc3BvbnNpdmVQb3BvdmVyIiwic2hvd0hlYWRlciIsInBsYWNlbWVudCIsImFkZFN0eWxlQ2xhc3MiLCJhZGREZXBlbmRlbnQiLCJkZXN0cm95Q29udGVudCIsImFkZENvbnRlbnQiLCJMYWJlbCIsInRleHQiLCJnZXRUZXh0Iiwib3BlbkJ5IiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29sbGFib3JhdGl2ZURyYWZ0SGFuZGxlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHksIHR5cGUgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEV2ZW50RGVsZWdhdGVIb29rIGZyb20gXCJzYXAvZmUvYmFzZS9FdmVudERlbGVnYXRlSG9va1wiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IHR5cGUgVXNlckFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0ICogYXMgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IEF2YXRhciwgeyB0eXBlIEF2YXRhciRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IFJlc3BvbnNpdmVQb3BvdmVyIGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQSBCdWlsZGluZ0Jsb2NrIHRvIHdhdGNoIHRoZSBsb2NrIHN0YXR1cyBvZiBhIHByb3BlcnR5IGFuZCB0byByZWFjdCBvbiBjaGFuZ2VzLlxuICogQHB1YmxpY1xuICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xNDEuMFxuICogQHNpbmNlIDEuMTQxLjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5Db2xsYWJvcmF0aXZlRHJhZnRIYW5kbGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2xsYWJvcmF0aXZlRHJhZnRIYW5kbGVyIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxBdmF0YXI+IHtcblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdXNlZCBpbiB0aGUgY3VycmVudCBwYWdlIG9yIGJsb2NrLlxuXHQgKiBUaGlzIHNldHRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZnJhbWV3b3JrLCBhbmQgY2FuIGJlIG92ZXJ3cml0dGVuLlxuXHQgKiBAcHVibGljXG5cdCAqIEB1aTUtZXhwZXJpbWVudGFsLXNpbmNlIDEuMTQxLjBcblx0ICogQHNpbmNlIDEuMTQxLjBcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIHByb3BlcnR5IGluIHRoZSBtZXRhbW9kZWwsIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnRleHRQYXRoLlxuXHQgKiBAcHVibGljXG5cdCAqIEB1aTUtZXhwZXJpbWVudGFsLXNpbmNlIDEuMTQxLjBcblx0ICogQHNpbmNlIDEuMTQxLjBcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGZpcmVkIHdoZW4gdGhlIGxvY2sgc3RhdHVzIGNoYW5nZXMuXG5cdCAqXG5cdCAqIFBhcmFtZXRlcnM6PEJSPlxuXHQgKiAtIGlzTG9ja2VkIDogdHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgbG9ja2VkLCBmYWxzZSBvdGhlcndpc2U8QlI+XG5cdCAqIC0gbG9ja2luZ1VzZXJJRDogdGhlIElEIG9mIHRoZSB1c2VyIGxvY2tpbmcgdGhlIHByb3BlcnR5ICh1bmRlZmluZWQgaWYgbm90IGxvY2tlZCk8QlI+XG5cdCAqIC0gbG9ja2luZ1VzZXJOYW1lOiB0aGUgbmFtZSBvZiB0aGUgdXNlciBsb2NraW5nIHRoZSBwcm9wZXJ0eSAodW5kZWZpbmVkIGlmIG5vdCBsb2NrZWQpPEJSPlxuXHQgKiAtIGxvY2tpbmdVc2VySW5pdGlhbHM6IHRoZSBpbml0aWFscyBvZiB0aGUgdXNlciBsb2NraW5nIHRoZSBwcm9wZXJ0eSAodW5kZWZpbmVkIGlmIG5vdCBsb2NrZWQpPEJSPlxuXHQgKiAtIGxvY2tpbmdVc2VyQ29sb3I6IHRoZSBjb2xvciBhc3NvY2lhdGVkIHRvIHRoZSB1c2VyIGxvY2tpbmcgdGhlIHByb3BlcnR5ICh1bmRlZmluZWQgaWYgbm90IGxvY2tlZCk8QlI+XG5cdCAqIEBwdWJsaWNcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xNDEuMFxuXHQgKiBAc2luY2UgMS4xNDEuMFxuXHQgKi9cblx0QGV2ZW50KClcblx0bG9ja0NoYW5nZT86IEV2ZW50SGFuZGxlcjxcblx0XHRVSTVFdmVudDxcblx0XHRcdHtcblx0XHRcdFx0aXNMb2NrZWQ6IGJvb2xlYW47XG5cdFx0XHRcdGxvY2tpbmdVc2VySUQ/OiBzdHJpbmc7XG5cdFx0XHRcdGxvY2tpbmdVc2VyTmFtZT86IHN0cmluZztcblx0XHRcdFx0bG9ja2luZ1VzZXJJbml0aWFscz86IHN0cmluZztcblx0XHRcdFx0bG9ja2luZ1VzZXJDb2xvcj86IHN0cmluZztcblx0XHRcdH0sXG5cdFx0XHRDb2xsYWJvcmF0aXZlRHJhZnRIYW5kbGVyXG5cdFx0PlxuXHQ+O1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHN0YW5kYXJkIEF2YXRhciBjb250cm9sIGlzIGRpc3BsYXllZCB0byBpbmRpY2F0ZSB0aGUgbG9jayBzdGF0dXMuXG5cdCAqIElmIHNldCB0byBmYWxzZSwgbm90aGluZyBpcyBkaXNwbGF5ZWQuXG5cdCAqIEBwdWJsaWNcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xNDEuMFxuXHQgKiBAc2luY2UgMS4xNDEuMFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0c2hvd0F2YXRhciA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBwcm9wZXJ0eSB0byByZWNlaXZlIHRoZSBsb2NrIGRhdGFcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0bG9ja0luZm8/OiBVc2VyQWN0aXZpdHk7XG5cblx0Y29uc3RydWN0b3IoaWRPclNldHRpbmdzOiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8Q29sbGFib3JhdGl2ZURyYWZ0SGFuZGxlcj4sIHNldHRpbmdzPzogUHJvcGVydGllc09mPENvbGxhYm9yYXRpdmVEcmFmdEhhbmRsZXI+KSB7XG5cdFx0c3VwZXIoaWRPclNldHRpbmdzLCBzZXR0aW5ncyk7XG5cdH1cblxuXHRwcml2YXRlIGdldEZ1bGxNZXRhUGF0aCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLm1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5tZXRhUGF0aDtcblx0XHR9IGVsc2UgaWYgKHRoaXMuY29udGV4dFBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRyZXR1cm4gYCR7dGhpcy5jb250ZXh0UGF0aH0ke3RoaXMubWV0YVBhdGh9YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGAke3RoaXMuY29udGV4dFBhdGh9LyR7dGhpcy5tZXRhUGF0aH1gO1xuXHRcdH1cblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmICghb3duZXIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCFNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvd25lci5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuY29udGV4dFBhdGggPz89IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpIGFzIHN0cmluZztcblx0XHRjb25zdCBmdWxsTWV0YVBhdGggPSB0aGlzLmdldEZ1bGxNZXRhUGF0aCgpO1xuXHRcdGNvbnN0IG9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KGZ1bGxNZXRhUGF0aCk7XG5cdFx0aWYgKCFvYmplY3RQYXRoIHx8ICFpc1Byb3BlcnR5KG9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBDb2xsYWJvcmF0aXZlRHJhZnRIYW5kbGVyOiB0aGUgcHJvdmlkZWQgbWV0YVBhdGggJyR7ZnVsbE1ldGFQYXRofScgZG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBwcm9wZXJ0eWApO1xuXHRcdH1cblxuXHRcdC8vIEJpbmQgdGhlIGxvY2tJbmZvIHByb3BlcnR5IHRvIHRoZSBjb3JyZXNwb25kaW5nIGxvY2tJbmZvIGluIHRoZSBpbnRlcm5hbCBtb2RlbFxuXHRcdGNvbnN0IGtleXNCaW5kaW5nUGFydHMgPSBvYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUua2V5cy5tYXAoKGtleSkgPT4ge1xuXHRcdFx0cmV0dXJuIHsgcGF0aDoga2V5Lm5hbWUsIHRhcmdldFR5cGU6IFwiYW55XCIgfTtcblx0XHR9KTtcblx0XHRjb25zdCBiaW5kaW5nSW5mbyA9IHtcblx0XHRcdHBhcnRzOiBbeyBwYXRoOiBgaW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vYWN0aXZpdGllcyR7ZnVsbE1ldGFQYXRofWAsIHRhcmdldFR5cGU6IFwiYW55XCIgfSwgLi4ua2V5c0JpbmRpbmdQYXJ0c10sXG5cdFx0XHRmb3JtYXR0ZXI6IENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25JbmZvXG5cdFx0fTtcblxuXHRcdHRoaXMuYmluZFByb3BlcnR5KFwibG9ja0luZm9cIiwgYmluZGluZ0luZm8pO1xuXG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQgJiYgdGhpcy5zaG93QXZhdGFyKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbGxhYm9yYXRpb25BdmF0YXIob2JqZWN0UGF0aCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgbG9ja0luZm8gcHJvcGVydHkgYW5kIGZpcmUgdGhlIGxvY2tDaGFuZ2UgZXZlbnQgaWYgdGhlcmUgaXMgYSBjaGFuZ2UuXG5cdCAqIEBwYXJhbSBsb2NrSW5mb1xuXHQgKi9cblx0c2V0TG9ja0luZm8obG9ja0luZm86IG9iamVjdCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmxvY2tJbmZvICE9PSBsb2NrSW5mbykge1xuXHRcdFx0dGhpcy5sb2NrSW5mbyA9IGxvY2tJbmZvIGFzIFVzZXJBY3Rpdml0eSB8IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibG9ja0NoYW5nZVwiLCB7XG5cdFx0XHRcdGlzTG9ja2VkOiB0aGlzLmxvY2tJbmZvICE9PSB1bmRlZmluZWQsXG5cdFx0XHRcdGxvY2tpbmdVc2VySUQ6IHRoaXMubG9ja0luZm8/LmlkLFxuXHRcdFx0XHRsb2NraW5nVXNlck5hbWU6IHRoaXMubG9ja0luZm8/Lm5hbWUsXG5cdFx0XHRcdGxvY2tpbmdVc2VySW5pdGlhbHM6IHRoaXMubG9ja0luZm8/LmluaXRpYWxzLFxuXHRcdFx0XHRsb2NraW5nVXNlckNvbG9yOiB0aGlzLmxvY2tJbmZvPy5jb2xvclxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrIChBdmF0YXIpLlxuXHQgKiBAcGFyYW0gb2JqZWN0UGF0aFxuXHQgKiBAcmV0dXJucyBUaGUgQXZhdGFyIGNvbnRyb2xcblx0ICovXG5cdGNyZWF0ZUNvbGxhYm9yYXRpb25BdmF0YXIob2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4pOiBBdmF0YXIge1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKFxuXHRcdFx0b2JqZWN0UGF0aCxcblx0XHRcdENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmhhc0NvbGxhYm9yYXRpb25BY3Rpdml0eVxuXHRcdCk7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbkhhc0FjdGl2aXR5RXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGNvbGxhYm9yYXRpb25FeHByZXNzaW9uKTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRVSUZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24ob2JqZWN0UGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMpXG5cdFx0KTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRVSUZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24ob2JqZWN0UGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IpXG5cdFx0KTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8QXZhdGFyXG5cdFx0XHRcdHZpc2libGU9e2NvbGxhYm9yYXRpb25IYXNBY3Rpdml0eUV4cHJlc3Npb259XG5cdFx0XHRcdGluaXRpYWxzPXtjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9ufVxuXHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdGN1c3RvbURpc3BsYXlTaXplPVwiMS41cmVtXCJcblx0XHRcdFx0Y3VzdG9tRm9udFNpemU9XCIwLjhyZW1cIlxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e2NvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHByZXNzPXsoZXZ0OiBBdmF0YXIkUHJlc3NFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMub25BdmF0YXJQcmVzcyhldnQpO1xuXHRcdFx0XHR9fVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGRlcGVuZGVudHM6IDxFdmVudERlbGVnYXRlSG9vayBzdG9wVGFwUHJvcGFnYXRpb249e3RydWV9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0F2YXRhcj5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgZm9yIHRoZSBwcmVzcyBldmVudCBvZiB0aGUgQXZhdGFyLlxuXHQgKiBAcGFyYW0gZXZ0XG5cdCAqL1xuXHRvbkF2YXRhclByZXNzKGV2dDogQXZhdGFyJFByZXNzRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBhdmF0YXIgPSBldnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmxvY2sgPSBhdmF0YXIuZ2V0UGFyZW50KCkgYXMgQ29sbGFib3JhdGl2ZURyYWZ0SGFuZGxlcjtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldFZpZXcoKTtcblx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gUmVzb3VyY2VNb2RlbEhlbHBlci5nZXRSZXNvdXJjZU1vZGVsKHZpZXcpO1xuXHRcdGxldCBwb3BvdmVyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChgbWFuYWdlQ29sbGFib3JhdGlvbkRyYWZ0LS1lZGl0VXNlcmApIGFzIFJlc3BvbnNpdmVQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKCFwb3BvdmVyKSB7XG5cdFx0XHRwb3BvdmVyID0gbmV3IFJlc3BvbnNpdmVQb3BvdmVyKFwibWFuYWdlQ29sbGFib3JhdGlvbkRyYWZ0LS1lZGl0VXNlclwiLCB7XG5cdFx0XHRcdHNob3dIZWFkZXI6IGZhbHNlLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IFwiQm90dG9tXCJcblx0XHRcdH0pO1xuXHRcdFx0cG9wb3Zlci5hZGRTdHlsZUNsYXNzKFwic2FwVWlDb250ZW50UGFkZGluZ1wiKTtcblx0XHRcdHZpZXcuYWRkRGVwZW5kZW50KHBvcG92ZXIpO1xuXHRcdH1cblxuXHRcdHBvcG92ZXIuZGVzdHJveUNvbnRlbnQoKTtcblx0XHRwb3BvdmVyLmFkZENvbnRlbnQoXG5cdFx0XHRuZXcgTGFiZWwoe1xuXHRcdFx0XHR0ZXh0OiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05BVkFUQVJfVVNFUl9FRElUX0ZJRUxEXCIsIFtgJHtibG9jay5sb2NrSW5mbz8ubmFtZX1gXSlcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRwb3BvdmVyLm9wZW5CeShhdmF0YXIpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEEsSUFPcUJBLHlCQUF5QixJQUFBQyxJQUFBLEdBRDdDQyxjQUFjLENBQUMseUNBQXlDLENBQUMsRUFBQUMsS0FBQSxHQVN4REMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBUzVCRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FnQjVCQyxLQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBcUJQTCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUssWUFBWSxFQUFFO0VBQU0sQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNbERQLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBVyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGNBQUE7SUFHN0IsU0FBQWQsMEJBQVllLFlBQThELEVBQUVDLFFBQWtELEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQy9IQSxLQUFBLEdBQUFILGNBQUEsQ0FBQUksSUFBQSxPQUFNSCxZQUFZLEVBQUVDLFFBQVEsQ0FBQztNQS9EOUI7QUFDRDtBQUNBO0FBQ0E7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QWlCLENBQUMsb0NBQW9DLEVBQUU7VUFDckVDLFVBQVUsRUFBRSxLQUFLO1VBQ2pCQyxTQUFTLEVBQUU7UUFDWixDQUFDLENBQUM7UUFDRkwsT0FBTyxDQUFDTSxhQUFhLENBQUMscUJBQXFCLENBQUM7UUFDNUNaLElBQUksQ0FBQ2EsWUFBWSxDQUFDUCxPQUFPLENBQUM7TUFDM0I7TUFFQUEsT0FBTyxDQUFDUSxjQUFjLENBQUMsQ0FBQztNQUN4QlIsT0FBTyxDQUFDUyxVQUFVLENBQ2pCLElBQUlDLEtBQUssQ0FBQztRQUNUQyxJQUFJLEVBQUVkLGFBQWEsQ0FBQ2UsT0FBTyxDQUFDLHVDQUF1QyxFQUFFLENBQUMsR0FBR3BCLEtBQUssQ0FBQ3JDLFFBQVEsRUFBRVosSUFBSSxFQUFFLENBQUM7TUFDakcsQ0FBQyxDQUNGLENBQUM7TUFDRHlELE9BQU8sQ0FBQ2EsTUFBTSxDQUFDdkIsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFBQSxPQUFBdEcseUJBQUE7RUFBQSxFQTlMcUQ4SCxhQUFhLEdBQUExRyxXQUFBLEdBQUEyRyx5QkFBQSxDQUFBbEgsT0FBQSxDQUFBZSxTQUFBLGtCQUFBekIsS0FBQTtJQUFBNkgsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5RyxZQUFBLEdBQUEwRyx5QkFBQSxDQUFBbEgsT0FBQSxDQUFBZSxTQUFBLGVBQUF0QixLQUFBO0lBQUEwSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTdHLFlBQUEsR0FBQXlHLHlCQUFBLENBQUFsSCxPQUFBLENBQUFlLFNBQUEsaUJBQUFyQixLQUFBO0lBQUF5SCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVHLFlBQUEsR0FBQXdHLHlCQUFBLENBQUFsSCxPQUFBLENBQUFlLFNBQUEsaUJBQUFuQixLQUFBO0lBQUF1SCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQXVEdEQsS0FBSztJQUFBO0VBQUEsSUFBQTNHLFlBQUEsR0FBQXVHLHlCQUFBLENBQUFsSCxPQUFBLENBQUFlLFNBQUEsZUFBQWpCLEtBQUE7SUFBQXFILFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdEgsT0FBQSxNQUFBRCxNQUFBO0VBQUFhLFFBQUEsR0FBQXpCLHlCQUFBO0VBQUEsT0FBQXlCLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
241
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2xsYWJvcmF0aXZlRHJhZnRIYW5kbGVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiZXZlbnQiLCJfZGVjNSIsIl9kZWM2IiwiZGVmYXVsdFZhbHVlIiwiX2RlYzciLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJpZE9yU2V0dGluZ3MiLCJzZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsIm93bmVyIiwiX2dldE93bmVyIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsImdldEFwcENvbXBvbmVudCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwib2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YVBhdGgiLCJjb250ZXh0UGF0aCIsImlzUHJvcGVydHkiLCJ0YXJnZXRPYmplY3QiLCJFcnJvciIsImtleXNCaW5kaW5nUGFydHMiLCJjb250ZXh0TG9jYXRpb24iLCJ0YXJnZXRFbnRpdHlUeXBlIiwia2V5cyIsIm1hcCIsImtleSIsInBhdGgiLCJuYW1lIiwidGFyZ2V0VHlwZSIsImJpbmRpbmdJbmZvIiwicGFydHMiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiZm9ybWF0dGVyIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMiLCJnZXRDb2xsYWJvcmF0aW9uSW5mbyIsImJpbmRQcm9wZXJ0eSIsImNvbnRlbnQiLCJzaG93QXZhdGFyIiwiY3JlYXRlQ29sbGFib3JhdGlvbkF2YXRhciIsInNldExvY2tJbmZvIiwibG9ja0luZm8iLCJmaXJlRXZlbnQiLCJpc0xvY2tlZCIsInVuZGVmaW5lZCIsImxvY2tpbmdVc2VySUQiLCJpZCIsImxvY2tpbmdVc2VyTmFtZSIsImxvY2tpbmdVc2VySW5pdGlhbHMiLCJpbml0aWFscyIsImxvY2tpbmdVc2VyQ29sb3IiLCJjb2xvciIsImNvbGxhYm9yYXRpb25IYXNBY3Rpdml0eUV4cHJlc3Npb24iLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJRm9ybWF0dGVycyIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiaGFzQ29sbGFib3JhdGlvbkFjdGl2aXR5IiwiY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiIsImdldENvbGxhYm9yYXRpb25BY3Rpdml0eUluaXRpYWxzIiwiY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbiIsImdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yIiwiX2pzeCIsIkF2YXRhciIsInZpc2libGUiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsImV2dCIsIm9uQXZhdGFyUHJlc3MiLCJjaGlsZHJlbiIsImRlcGVuZGVudHMiLCJFdmVudERlbGVnYXRlSG9vayIsInN0b3BUYXBQcm9wYWdhdGlvbiIsImF2YXRhciIsImdldFNvdXJjZSIsImJsb2NrIiwiZ2V0UGFyZW50IiwiaGFzTGlzdGVuZXJzIiwidmlldyIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsInJlc291cmNlTW9kZWwiLCJSZXNvdXJjZU1vZGVsSGVscGVyIiwiZ2V0UmVzb3VyY2VNb2RlbCIsInBvcG92ZXIiLCJVSTVFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJSZXNwb25zaXZlUG9wb3ZlciIsInNob3dIZWFkZXIiLCJwbGFjZW1lbnQiLCJhZGRTdHlsZUNsYXNzIiwiYWRkRGVwZW5kZW50IiwiZGVzdHJveUNvbnRlbnQiLCJhZGRDb250ZW50IiwiTGFiZWwiLCJ0ZXh0IiwiZ2V0VGV4dCIsIm9wZW5CeSIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbGxhYm9yYXRpdmVEcmFmdEhhbmRsZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFdmVudERlbGVnYXRlSG9vayBmcm9tIFwic2FwL2ZlL2Jhc2UvRXZlbnREZWxlZ2F0ZUhvb2tcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgeyB0eXBlIFVzZXJBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCAqIGFzIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NvbGxhYm9yYXRpb25Gb3JtYXR0ZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFJlc291cmNlTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgaXNQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB7IGdldFRhcmdldE9iamVjdFBhdGgsIHR5cGUgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBBdmF0YXIsIHsgdHlwZSBBdmF0YXIkUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCBSZXNwb25zaXZlUG9wb3ZlciBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIEEgQnVpbGRpbmdCbG9jayB0byB3YXRjaCB0aGUgbG9jayBzdGF0dXMgb2YgYSBwcm9wZXJ0eSBhbmQgdG8gcmVhY3Qgb24gY2hhbmdlcy5cbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjE0MS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuQ29sbGFib3JhdGl2ZURyYWZ0SGFuZGxlclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGl2ZURyYWZ0SGFuZGxlciBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8QXZhdGFyPiB7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBwYXRoIG9mIHRoZSBjb250ZXh0IHVzZWQgaW4gdGhlIGN1cnJlbnQgcGFnZSBvciBibG9jay5cblx0ICogVGhpcyBzZXR0aW5nIGlzIGRlZmluZWQgYnkgdGhlIGZyYW1ld29yaywgYW5kIGNhbiBiZSBvdmVyd3JpdHRlbi5cblx0ICogQHB1YmxpY1xuXHQgKiBAc2luY2UgMS4xNDEuMFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuMTQxLjBcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGZpcmVkIHdoZW4gdGhlIGxvY2sgc3RhdHVzIGNoYW5nZXMuXG5cdCAqXG5cdCAqIFBhcmFtZXRlcnM6PEJSPlxuXHQgKiAtIGlzTG9ja2VkIDogVHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgbG9ja2VkLCBmYWxzZSBvdGhlcndpc2U8QlI+XG5cdCAqIC0gbG9ja2luZ1VzZXJJRDogVGhlIElEIG9mIHRoZSB1c2VyIGxvY2tpbmcgdGhlIHByb3BlcnR5ICh1bmRlZmluZWQgaWYgbm90IGxvY2tlZCk8QlI+XG5cdCAqIC0gbG9ja2luZ1VzZXJOYW1lOiBUaGUgbmFtZSBvZiB0aGUgdXNlciBsb2NraW5nIHRoZSBwcm9wZXJ0eSAodW5kZWZpbmVkIGlmIG5vdCBsb2NrZWQpPEJSPlxuXHQgKiAtIGxvY2tpbmdVc2VySW5pdGlhbHM6IFRoZSBpbml0aWFscyBvZiB0aGUgdXNlciBsb2NraW5nIHRoZSBwcm9wZXJ0eSAodW5kZWZpbmVkIGlmIG5vdCBsb2NrZWQpPEJSPlxuXHQgKiAtIGxvY2tpbmdVc2VyQ29sb3I6IFRoZSBjb2xvciBhc3NvY2lhdGVkIHRvIHRoZSB1c2VyIGxvY2tpbmcgdGhlIHByb3BlcnR5ICh1bmRlZmluZWQgaWYgbm90IGxvY2tlZCk8QlI+XG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuMTQxLjBcblx0ICovXG5cdEBldmVudCgpXG5cdGxvY2tDaGFuZ2U/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8XG5cdFx0XHR7XG5cdFx0XHRcdGlzTG9ja2VkOiBib29sZWFuO1xuXHRcdFx0XHRsb2NraW5nVXNlcklEPzogc3RyaW5nO1xuXHRcdFx0XHRsb2NraW5nVXNlck5hbWU/OiBzdHJpbmc7XG5cdFx0XHRcdGxvY2tpbmdVc2VySW5pdGlhbHM/OiBzdHJpbmc7XG5cdFx0XHRcdGxvY2tpbmdVc2VyQ29sb3I/OiBzdHJpbmc7XG5cdFx0XHR9LFxuXHRcdFx0Q29sbGFib3JhdGl2ZURyYWZ0SGFuZGxlclxuXHRcdD5cblx0PjtcblxuXHQvKipcblx0ICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGF2YXRhci5cblx0ICpcblx0ICogUGFyYW1ldGVyczo8QlI+XG5cdCAqIC0gbG9ja2luZ1VzZXJJRDogVGhlIElEIG9mIHRoZSB1c2VyIGxvY2tpbmcgdGhlIHByb3BlcnR5PEJSPlxuXHQgKiAtIGxvY2tpbmdVc2VyTmFtZTogVGhlIG5hbWUgb2YgdGhlIHVzZXIgbG9ja2luZyB0aGUgcHJvcGVydHk8QlI+XG5cdCAqIC0gbG9ja2luZ1VzZXJJbml0aWFsczogVGhlIGluaXRpYWxzIG9mIHRoZSB1c2VyIGxvY2tpbmcgdGhlIHByb3BlcnR5PEJSPlxuXHQgKiAtIGxvY2tpbmdVc2VyQ29sb3I6IFRoZSBjb2xvciBhc3NvY2lhdGVkIHRvIHRoZSB1c2VyIGxvY2tpbmcgdGhlIHByb3BlcnR5PEJSPlxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjE0Mi4wXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRhdmF0YXJQcmVzcz86IEV2ZW50SGFuZGxlcjxcblx0XHRVSTVFdmVudDxcblx0XHRcdHtcblx0XHRcdFx0bG9ja2luZ1VzZXJJRDogc3RyaW5nO1xuXHRcdFx0XHRsb2NraW5nVXNlck5hbWU6IHN0cmluZztcblx0XHRcdFx0bG9ja2luZ1VzZXJJbml0aWFsczogc3RyaW5nO1xuXHRcdFx0XHRsb2NraW5nVXNlckNvbG9yOiBzdHJpbmc7XG5cdFx0XHR9LFxuXHRcdFx0Q29sbGFib3JhdGl2ZURyYWZ0SGFuZGxlclxuXHRcdD5cblx0PjtcblxuXHQvKipcblx0ICogSWYgc2V0IHRvIHRydWUsIHRoZSBzdGFuZGFyZCBBdmF0YXIgY29udHJvbCBpcyBkaXNwbGF5ZWQgdG8gaW5kaWNhdGUgdGhlIGxvY2sgc3RhdHVzLlxuXHQgKiBJZiBzZXQgdG8gZmFsc2UsIG5vdGhpbmcgaXMgZGlzcGxheWVkLlxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjE0MS4wXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRzaG93QXZhdGFyID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEludGVybmFsIHByb3BlcnR5IHRvIHJlY2VpdmUgdGhlIGxvY2sgZGF0YVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRsb2NrSW5mbz86IFVzZXJBY3Rpdml0eTtcblxuXHRjb25zdHJ1Y3RvcihpZE9yU2V0dGluZ3M6IHN0cmluZyB8IFByb3BlcnRpZXNPZjxDb2xsYWJvcmF0aXZlRHJhZnRIYW5kbGVyPiwgc2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8Q29sbGFib3JhdGl2ZURyYWZ0SGFuZGxlcj4pIHtcblx0XHRzdXBlcihpZE9yU2V0dGluZ3MsIHNldHRpbmdzKTtcblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmICghb3duZXIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCFNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvd25lci5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPFByb3BlcnR5Pih0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRpZiAoIW9iamVjdFBhdGggfHwgIWlzUHJvcGVydHkob2JqZWN0UGF0aC50YXJnZXRPYmplY3QpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYENvbGxhYm9yYXRpdmVEcmFmdEhhbmRsZXI6IHRoZSBwcm92aWRlZCBtZXRhUGF0aCAnJHt0aGlzLm1ldGFQYXRofScgZG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBwcm9wZXJ0eWApO1xuXHRcdH1cblxuXHRcdC8vIEJpbmQgdGhlIGxvY2tJbmZvIHByb3BlcnR5IHRvIHRoZSBjb3JyZXNwb25kaW5nIGxvY2tJbmZvIGluIHRoZSBpbnRlcm5hbCBtb2RlbFxuXHRcdGNvbnN0IGtleXNCaW5kaW5nUGFydHMgPSBvYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8udGFyZ2V0RW50aXR5VHlwZS5rZXlzLm1hcCgoa2V5KSA9PiB7XG5cdFx0XHRyZXR1cm4geyBwYXRoOiBrZXkubmFtZSwgdGFyZ2V0VHlwZTogXCJhbnlcIiB9O1xuXHRcdH0pO1xuXHRcdGNvbnN0IGJpbmRpbmdJbmZvID0ge1xuXHRcdFx0cGFydHM6IFtcblx0XHRcdFx0eyBwYXRoOiBgaW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vYWN0aXZpdGllcyR7Z2V0VGFyZ2V0T2JqZWN0UGF0aChvYmplY3RQYXRoKX1gLCB0YXJnZXRUeXBlOiBcImFueVwiIH0sXG5cdFx0XHRcdC4uLmtleXNCaW5kaW5nUGFydHMhXG5cdFx0XHRdLFxuXHRcdFx0Zm9ybWF0dGVyOiBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uSW5mb1xuXHRcdH07XG5cblx0XHR0aGlzLmJpbmRQcm9wZXJ0eShcImxvY2tJbmZvXCIsIGJpbmRpbmdJbmZvKTtcblxuXHRcdGlmICghdGhpcy5jb250ZW50ICYmIHRoaXMuc2hvd0F2YXRhcikge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb2xsYWJvcmF0aW9uQXZhdGFyKG9iamVjdFBhdGgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgdGhlIGxvY2tJbmZvIHByb3BlcnR5IGFuZCBmaXJlIHRoZSBsb2NrQ2hhbmdlIGV2ZW50IGlmIHRoZXJlIGlzIGEgY2hhbmdlLlxuXHQgKiBAcGFyYW0gbG9ja0luZm9cblx0ICovXG5cdHNldExvY2tJbmZvKGxvY2tJbmZvOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2NrSW5mbyAhPT0gbG9ja0luZm8pIHtcblx0XHRcdHRoaXMubG9ja0luZm8gPSBsb2NrSW5mbyBhcyBVc2VyQWN0aXZpdHkgfCB1bmRlZmluZWQ7XG5cdFx0XHR0aGlzLmZpcmVFdmVudChcImxvY2tDaGFuZ2VcIiwge1xuXHRcdFx0XHRpc0xvY2tlZDogdGhpcy5sb2NrSW5mbyAhPT0gdW5kZWZpbmVkLFxuXHRcdFx0XHRsb2NraW5nVXNlcklEOiB0aGlzLmxvY2tJbmZvPy5pZCxcblx0XHRcdFx0bG9ja2luZ1VzZXJOYW1lOiB0aGlzLmxvY2tJbmZvPy5uYW1lLFxuXHRcdFx0XHRsb2NraW5nVXNlckluaXRpYWxzOiB0aGlzLmxvY2tJbmZvPy5pbml0aWFscyxcblx0XHRcdFx0bG9ja2luZ1VzZXJDb2xvcjogdGhpcy5sb2NrSW5mbz8uY29sb3Jcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAoQXZhdGFyKS5cblx0ICogQHBhcmFtIG9iamVjdFBhdGhcblx0ICogQHJldHVybnMgVGhlIEF2YXRhciBjb250cm9sXG5cdCAqL1xuXHRjcmVhdGVDb2xsYWJvcmF0aW9uQXZhdGFyKG9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogQXZhdGFyIHtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRVSUZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24ob2JqZWN0UGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuaGFzQ29sbGFib3JhdGlvbkFjdGl2aXR5KVxuXHRcdCk7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0VUlGb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKG9iamVjdFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUluaXRpYWxzKVxuXHRcdCk7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0VUlGb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKG9iamVjdFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yKVxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PEF2YXRhclxuXHRcdFx0XHR2aXNpYmxlPXtjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9ufVxuXHRcdFx0XHRpbml0aWFscz17Y29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbn1cblx0XHRcdFx0ZGlzcGxheVNpemU9XCJDdXN0b21cIlxuXHRcdFx0XHRjdXN0b21EaXNwbGF5U2l6ZT1cIjEuNXJlbVwiXG5cdFx0XHRcdGN1c3RvbUZvbnRTaXplPVwiMC44cmVtXCJcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yPXtjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHRwcmVzcz17KGV2dDogQXZhdGFyJFByZXNzRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLm9uQXZhdGFyUHJlc3MoZXZ0KTtcblx0XHRcdFx0fX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRkZXBlbmRlbnRzOiA8RXZlbnREZWxlZ2F0ZUhvb2sgc3RvcFRhcFByb3BhZ2F0aW9uPXt0cnVlfSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9BdmF0YXI+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGZvciB0aGUgcHJlc3MgZXZlbnQgb2YgdGhlIEF2YXRhci5cblx0ICogQHBhcmFtIGV2dFxuXHQgKi9cblx0b25BdmF0YXJQcmVzcyhldnQ6IEF2YXRhciRQcmVzc0V2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgYXZhdGFyID0gZXZ0LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IGJsb2NrID0gYXZhdGFyLmdldFBhcmVudCgpIGFzIENvbGxhYm9yYXRpdmVEcmFmdEhhbmRsZXI7XG5cblx0XHRpZiAoYmxvY2suaGFzTGlzdGVuZXJzKFwiYXZhdGFyUHJlc3NcIikpIHtcblx0XHRcdC8vIElmIHRoZSBldmVudCBpcyBoYW5kbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgZG8gbm90IG9wZW4gdGhlIHBvcG92ZXJcblx0XHRcdGJsb2NrLmZpcmVFdmVudChcImF2YXRhclByZXNzXCIsIHtcblx0XHRcdFx0bG9ja2luZ1VzZXJJRDogYmxvY2subG9ja0luZm8/LmlkIGFzIHN0cmluZyxcblx0XHRcdFx0bG9ja2luZ1VzZXJOYW1lOiBibG9jay5sb2NrSW5mbz8ubmFtZSBhcyBzdHJpbmcsXG5cdFx0XHRcdGxvY2tpbmdVc2VySW5pdGlhbHM6IGJsb2NrLmxvY2tJbmZvPy5pbml0aWFscyBhcyBzdHJpbmcsXG5cdFx0XHRcdGxvY2tpbmdVc2VyQ29sb3I6IGJsb2NrLmxvY2tJbmZvPy5jb2xvciBhcyBzdHJpbmdcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpLmdldFZpZXcoKTtcblx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gUmVzb3VyY2VNb2RlbEhlbHBlci5nZXRSZXNvdXJjZU1vZGVsKHZpZXcpO1xuXHRcdGxldCBwb3BvdmVyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChgbWFuYWdlQ29sbGFib3JhdGlvbkRyYWZ0LS1lZGl0VXNlcmApIGFzIFJlc3BvbnNpdmVQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKCFwb3BvdmVyKSB7XG5cdFx0XHRwb3BvdmVyID0gbmV3IFJlc3BvbnNpdmVQb3BvdmVyKFwibWFuYWdlQ29sbGFib3JhdGlvbkRyYWZ0LS1lZGl0VXNlclwiLCB7XG5cdFx0XHRcdHNob3dIZWFkZXI6IGZhbHNlLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IFwiQm90dG9tXCJcblx0XHRcdH0pO1xuXHRcdFx0cG9wb3Zlci5hZGRTdHlsZUNsYXNzKFwic2FwVWlDb250ZW50UGFkZGluZ1wiKTtcblx0XHRcdHZpZXcuYWRkRGVwZW5kZW50KHBvcG92ZXIpO1xuXHRcdH1cblxuXHRcdHBvcG92ZXIuZGVzdHJveUNvbnRlbnQoKTtcblx0XHRwb3BvdmVyLmFkZENvbnRlbnQoXG5cdFx0XHRuZXcgTGFiZWwoe1xuXHRcdFx0XHR0ZXh0OiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05BVkFUQVJfVVNFUl9FRElUX0ZJRUxEXCIsIFtgJHtibG9jay5sb2NrSW5mbz8ubmFtZX1gXSlcblx0XHRcdH0pXG5cdFx0KTtcblx0XHRwb3BvdmVyLm9wZW5CeShhdmF0YXIpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFKQSxJQU1xQkEseUJBQXlCLElBQUFDLElBQUEsR0FEN0NDLGNBQWMsQ0FBQyx5Q0FBeUMsQ0FBQyxFQUFBQyxLQUFBLEdBUXhEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FRNUJGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQWU1QkMsS0FBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQXlCUEQsS0FBSyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQW1CUE4sUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFTO0lBQUVNLFlBQVksRUFBRTtFQUFNLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTWxEUixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQVksTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBRzdCLFNBQUFmLDBCQUFZZ0IsWUFBOEQsRUFBRUMsUUFBa0QsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDL0hBLEtBQUEsR0FBQUgsY0FBQSxDQUFBSSxJQUFBLE9BQU1ILFlBQVksRUFBRUMsUUFBUSxDQUFDO01BbkY5QjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFMQ0csMEJBQUEsQ0FBQUYsS0FBQSxpQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BU0E7QUFDRDtBQUNBO0FBQ0E7QUFDQTtNQUpDRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFJLFlBQUEsRUFBQUosS0FBQTtNQVFBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQVhDRSwwQkFBQSxDQUFBRixLQUFBLGdCQUFBSyxZQUFBLEVBQUFMLEtBQUE7TUEwQkE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQVZDRSwwQkFBQSxDQUFBRixLQUFBLGlCQUFBTSxZQUFBLEVBQUFOLEtBQUE7TUF3QkE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BTENFLDBCQUFBLENBQUFGLEtBQUEsZ0JBQUFPLFlBQUEsRUFBQVAsS0FBQTtNQVNBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFRLFlBQUEsRUFBQVIsS0FBQTtNQUFBLE9BQUFBLEtBQUE7SUFRQTtJQUFDUyxRQUFBLEdBQUEzQix5QkFBQTtJQUFBNEIsY0FBQSxDQUFBNUIseUJBQUEsRUFBQWUsY0FBQTtJQUFBLElBQUFjLE1BQUEsR0FBQTdCLHlCQUFBLENBQUE4QixTQUFBO0lBQUFELE1BQUEsQ0FFREUsbUJBQW1CLEdBQW5CLFNBQUFBLG1CQUFtQkEsQ0FBQSxFQUFTO01BQzNCLE1BQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDO01BQzlCLElBQUksQ0FBQ0QsS0FBSyxFQUFFO1FBQ1g7TUFDRDtNQUNBLElBQUksQ0FBQ0UsV0FBVyxDQUFDQyw2QkFBNkIsQ0FBQ0gsS0FBSyxDQUFDSSxlQUFlLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxDQUFDQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDbEc7TUFDRDtNQUVBLE1BQU1DLFVBQVUsR0FBRyxJQUFJLENBQUNDLDZCQUE2QixDQUFXLElBQUksQ0FBQ0MsUUFBUSxFQUFFLElBQUksQ0FBQ0MsV0FBVyxDQUFDO01BQ2hHLElBQUksQ0FBQ0gsVUFBVSxJQUFJLENBQUNJLFVBQVUsQ0FBQ0osVUFBVSxDQUFDSyxZQUFZLENBQUMsRUFBRTtRQUN4RCxNQUFNLElBQUlDLEtBQUssQ0FBQyxxREFBcUQsSUFBSSxDQUFDSixRQUFRLHNDQUFzQyxDQUFDO01BQzFIOztNQUVBO01BQ0EsTUFBTUssZ0JBQWdCLEdBQUdQLFVBQVUsQ0FBQ1EsZUFBZSxFQUFFQyxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDQyxHQUFHLENBQUVDLEdBQUcsSUFBSztRQUN2RixPQUFPO1VBQUVDLElBQUksRUFBRUQsR0FBRyxDQUFDRSxJQUFJO1VBQUVDLFVBQVUsRUFBRTtRQUFNLENBQUM7TUFDN0MsQ0FBQyxDQUFDO01BQ0YsTUFBTUMsV0FBVyxHQUFHO1FBQ25CQyxLQUFLLEVBQUUsQ0FDTjtVQUFFSixJQUFJLEVBQUUscUNBQXFDSyxtQkFBbUIsQ0FBQ2xCLFVBQVUsQ0FBQyxFQUFFO1VBQUVlLFVBQVUsRUFBRTtRQUFNLENBQUMsRUFDbkcsR0FBR1IsZ0JBQWlCLENBQ3BCO1FBQ0RZLFNBQVMsRUFBRUMsdUJBQXVCLENBQUNDO01BQ3BDLENBQUM7TUFFRCxJQUFJLENBQUNDLFlBQVksQ0FBQyxVQUFVLEVBQUVOLFdBQVcsQ0FBQztNQUUxQyxJQUFJLENBQUMsSUFBSSxDQUFDTyxPQUFPLElBQUksSUFBSSxDQUFDQyxVQUFVLEVBQUU7UUFDckMsSUFBSSxDQUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDRSx5QkFBeUIsQ0FBQ3pCLFVBQVUsQ0FBQztNQUMxRDtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQVYsTUFBQSxDQUlBb0MsV0FBVyxHQUFYLFNBQUFBLFdBQVdBLENBQUNDLFFBQTRCLEVBQVE7TUFDL0MsSUFBSSxJQUFJLENBQUNBLFFBQVEsS0FBS0EsUUFBUSxFQUFFO1FBQy9CLElBQUksQ0FBQ0EsUUFBUSxHQUFHQSxRQUFvQztRQUNwRCxJQUFJLENBQUNDLFNBQVMsQ0FBQyxZQUFZLEVBQUU7VUFDNUJDLFFBQVEsRUFBRSxJQUFJLENBQUNGLFFBQVEsS0FBS0csU0FBUztVQUNyQ0MsYUFBYSxFQUFFLElBQUksQ0FBQ0osUUFBUSxFQUFFSyxFQUFFO1VBQ2hDQyxlQUFlLEVBQUUsSUFBSSxDQUFDTixRQUFRLEVBQUViLElBQUk7VUFDcENvQixtQkFBbUIsRUFBRSxJQUFJLENBQUNQLFFBQVEsRUFBRVEsUUFBUTtVQUM1Q0MsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDVCxRQUFRLEVBQUVVO1FBQ2xDLENBQUMsQ0FBQztNQUNIO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUEvQyxNQUFBLENBS0FtQyx5QkFBeUIsR0FBekIsU0FBQUEseUJBQXlCQSxDQUFDekIsVUFBeUMsRUFBVTtNQUM1RSxNQUFNc0Msa0NBQWtDLEdBQUdDLGlCQUFpQixDQUMzREMsWUFBWSxDQUFDQywwQkFBMEIsQ0FBQ3pDLFVBQVUsRUFBRW9CLHVCQUF1QixDQUFDc0Isd0JBQXdCLENBQ3JHLENBQUM7TUFDRCxNQUFNQywrQkFBK0IsR0FBR0osaUJBQWlCLENBQ3hEQyxZQUFZLENBQUNDLDBCQUEwQixDQUFDekMsVUFBVSxFQUFFb0IsdUJBQXVCLENBQUN3QixnQ0FBZ0MsQ0FDN0csQ0FBQztNQUNELE1BQU1DLDRCQUE0QixHQUFHTixpQkFBaUIsQ0FDckRDLFlBQVksQ0FBQ0MsMEJBQTBCLENBQUN6QyxVQUFVLEVBQUVvQix1QkFBdUIsQ0FBQzBCLDZCQUE2QixDQUMxRyxDQUFDO01BRUQsT0FDQ0MsSUFBQSxDQUFDQyxNQUFNO1FBQ05DLE9BQU8sRUFBRVgsa0NBQW1DO1FBQzVDSCxRQUFRLEVBQUVRLCtCQUFnQztRQUMxQ08sV0FBVyxFQUFDLFFBQVE7UUFDcEJDLGlCQUFpQixFQUFDLFFBQVE7UUFDMUJDLGNBQWMsRUFBQyxRQUFRO1FBQ3ZCQyxlQUFlLEVBQUVSLDRCQUE2QjtRQUM5Q1MsS0FBSyxFQUFHQyxHQUFzQixJQUFXO1VBQ3hDLElBQUksQ0FBQ0MsYUFBYSxDQUFDRCxHQUFHLENBQUM7UUFDeEIsQ0FBRTtRQUFBRSxRQUFBLEVBRUQ7VUFDQUMsVUFBVSxFQUFFWCxJQUFBLENBQUNZLGlCQUFpQjtZQUFDQyxrQkFBa0IsRUFBRTtVQUFLLENBQUU7UUFDM0Q7TUFBQyxDQUNNLENBQUM7SUFFWDs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUF0RSxNQUFBLENBSUFrRSxhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQ0QsR0FBc0IsRUFBUTtNQUMzQyxNQUFNTSxNQUFNLEdBQUdOLEdBQUcsQ0FBQ08sU0FBUyxDQUFDLENBQUM7TUFDOUIsTUFBTUMsS0FBSyxHQUFHRixNQUFNLENBQUNHLFNBQVMsQ0FBQyxDQUE4QjtNQUU3RCxJQUFJRCxLQUFLLENBQUNFLFlBQVksQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUN0QztRQUNBRixLQUFLLENBQUNuQyxTQUFTLENBQUMsYUFBYSxFQUFFO1VBQzlCRyxhQUFhLEVBQUVnQyxLQUFLLENBQUNwQyxRQUFRLEVBQUVLLEVBQVk7VUFDM0NDLGVBQWUsRUFBRThCLEtBQUssQ0FBQ3BDLFFBQVEsRUFBRWIsSUFBYztVQUMvQ29CLG1CQUFtQixFQUFFNkIsS0FBSyxDQUFDcEMsUUFBUSxFQUFFUSxRQUFrQjtVQUN2REMsZ0JBQWdCLEVBQUUyQixLQUFLLENBQUNwQyxRQUFRLEVBQUVVO1FBQ25DLENBQUMsQ0FBQztRQUNGO01BQ0Q7TUFDQSxNQUFNNkIsSUFBSSxHQUFHLElBQUksQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsQ0FBQztNQUMvQyxNQUFNQyxhQUFhLEdBQUdDLG1CQUFtQixDQUFDQyxnQkFBZ0IsQ0FBQ0wsSUFBSSxDQUFDO01BQ2hFLElBQUlNLE9BQU8sR0FBR0MsVUFBVSxDQUFDQyxjQUFjLENBQUMsb0NBQW9DLENBQWtDO01BRTlHLElBQUksQ0FBQ0YsT0FBTyxFQUFFO1FBQ2JBLE9BQU8sR0FBRyxJQUFJRyxpQkFBaUIsQ0FBQyxvQ0FBb0MsRUFBRTtVQUNyRUMsVUFBVSxFQUFFLEtBQUs7VUFDakJDLFNBQVMsRUFBRTtRQUNaLENBQUMsQ0FBQztRQUNGTCxPQUFPLENBQUNNLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQztRQUM1Q1osSUFBSSxDQUFDYSxZQUFZLENBQUNQLE9BQU8sQ0FBQztNQUMzQjtNQUVBQSxPQUFPLENBQUNRLGNBQWMsQ0FBQyxDQUFDO01BQ3hCUixPQUFPLENBQUNTLFVBQVUsQ0FDakIsSUFBSUMsS0FBSyxDQUFDO1FBQ1RDLElBQUksRUFBRWQsYUFBYSxDQUFDZSxPQUFPLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxHQUFHckIsS0FBSyxDQUFDcEMsUUFBUSxFQUFFYixJQUFJLEVBQUUsQ0FBQztNQUNqRyxDQUFDLENBQ0YsQ0FBQztNQUNEMEQsT0FBTyxDQUFDYSxNQUFNLENBQUN4QixNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUFBLE9BQUFwRyx5QkFBQTtFQUFBLEVBbE5xRDZILGFBQWEsR0FBQXhHLFdBQUEsR0FBQXlHLHlCQUFBLENBQUFoSCxPQUFBLENBQUFnQixTQUFBLGtCQUFBM0IsS0FBQTtJQUFBNEgsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE1RyxZQUFBLEdBQUF3Ryx5QkFBQSxDQUFBaEgsT0FBQSxDQUFBZ0IsU0FBQSxlQUFBeEIsS0FBQTtJQUFBeUgsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEzRyxZQUFBLEdBQUF1Ryx5QkFBQSxDQUFBaEgsT0FBQSxDQUFBZ0IsU0FBQSxpQkFBQXZCLEtBQUE7SUFBQXdILFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBMUcsWUFBQSxHQUFBc0cseUJBQUEsQ0FBQWhILE9BQUEsQ0FBQWdCLFNBQUEsa0JBQUFyQixLQUFBO0lBQUFzSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXpHLFlBQUEsR0FBQXFHLHlCQUFBLENBQUFoSCxPQUFBLENBQUFnQixTQUFBLGlCQUFBcEIsS0FBQTtJQUFBcUgsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0EyRXRELEtBQUs7SUFBQTtFQUFBLElBQUF4RyxZQUFBLEdBQUFvRyx5QkFBQSxDQUFBaEgsT0FBQSxDQUFBZ0IsU0FBQSxlQUFBbEIsS0FBQTtJQUFBbUgsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFwSCxPQUFBLE1BQUFELE1BQUE7RUFBQWMsUUFBQSxHQUFBM0IseUJBQUE7RUFBQSxPQUFBMkIsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -8,7 +8,7 @@ import * as CollaborationFormatters from "sap/fe/core/formatters/CollaborationFo
8
8
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
9
9
  import ResourceModelHelper from "sap/fe/core/helpers/ResourceModelHelper";
10
10
  import { isProperty } from "sap/fe/core/helpers/TypeGuards";
11
- import { type DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
11
+ import { getTargetObjectPath, type DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
12
12
  import * as UIFormatters from "sap/fe/core/templating/UIFormatters";
13
13
  import Avatar, { type Avatar$PressEvent } from "sap/m/Avatar";
14
14
  import Label from "sap/m/Label";
@@ -20,7 +20,6 @@ import type { EventHandler } from "types/extension_types";
20
20
  /**
21
21
  * A BuildingBlock to watch the lock status of a property and to react on changes.
22
22
  * @public
23
- * @ui5-experimental-since 1.141.0
24
23
  * @since 1.141.0
25
24
  */
26
25
  @defineUI5Class("sap.fe.macros.CollaborativeDraftHandler")
@@ -29,7 +28,6 @@ export default class CollaborativeDraftHandler extends BuildingBlock<Avatar> {
29
28
  * Defines the path of the context used in the current page or block.
30
29
  * This setting is defined by the framework, and can be overwritten.
31
30
  * @public
32
- * @ui5-experimental-since 1.141.0
33
31
  * @since 1.141.0
34
32
  */
35
33
  @property({ type: "string" })
@@ -38,7 +36,6 @@ export default class CollaborativeDraftHandler extends BuildingBlock<Avatar> {
38
36
  /**
39
37
  * Defines the relative path of the property in the metamodel, based on the current contextPath.
40
38
  * @public
41
- * @ui5-experimental-since 1.141.0
42
39
  * @since 1.141.0
43
40
  */
44
41
  @property({ type: "string" })
@@ -48,13 +45,12 @@ export default class CollaborativeDraftHandler extends BuildingBlock<Avatar> {
48
45
  * Event fired when the lock status changes.
49
46
  *
50
47
  * Parameters:<BR>
51
- * - isLocked : true if the property is locked, false otherwise<BR>
52
- * - lockingUserID: the ID of the user locking the property (undefined if not locked)<BR>
53
- * - lockingUserName: the name of the user locking the property (undefined if not locked)<BR>
54
- * - lockingUserInitials: the initials of the user locking the property (undefined if not locked)<BR>
55
- * - lockingUserColor: the color associated to the user locking the property (undefined if not locked)<BR>
48
+ * - isLocked : True if the property is locked, false otherwise<BR>
49
+ * - lockingUserID: The ID of the user locking the property (undefined if not locked)<BR>
50
+ * - lockingUserName: The name of the user locking the property (undefined if not locked)<BR>
51
+ * - lockingUserInitials: The initials of the user locking the property (undefined if not locked)<BR>
52
+ * - lockingUserColor: The color associated to the user locking the property (undefined if not locked)<BR>
56
53
  * @public
57
- * @ui5-experimental-since 1.141.0
58
54
  * @since 1.141.0
59
55
  */
60
56
  @event()
@@ -71,11 +67,34 @@ export default class CollaborativeDraftHandler extends BuildingBlock<Avatar> {
71
67
  >
72
68
  >;
73
69
 
70
+ /**
71
+ * Event fired when the user clicks on the avatar.
72
+ *
73
+ * Parameters:<BR>
74
+ * - lockingUserID: The ID of the user locking the property<BR>
75
+ * - lockingUserName: The name of the user locking the property<BR>
76
+ * - lockingUserInitials: The initials of the user locking the property<BR>
77
+ * - lockingUserColor: The color associated to the user locking the property<BR>
78
+ * @public
79
+ * @since 1.142.0
80
+ */
81
+ @event()
82
+ avatarPress?: EventHandler<
83
+ UI5Event<
84
+ {
85
+ lockingUserID: string;
86
+ lockingUserName: string;
87
+ lockingUserInitials: string;
88
+ lockingUserColor: string;
89
+ },
90
+ CollaborativeDraftHandler
91
+ >
92
+ >;
93
+
74
94
  /**
75
95
  * If set to true, the standard Avatar control is displayed to indicate the lock status.
76
96
  * If set to false, nothing is displayed.
77
97
  * @public
78
- * @ui5-experimental-since 1.141.0
79
98
  * @since 1.141.0
80
99
  */
81
100
  @property({ type: "boolean", defaultValue: false })
@@ -91,16 +110,6 @@ export default class CollaborativeDraftHandler extends BuildingBlock<Avatar> {
91
110
  super(idOrSettings, settings);
92
111
  }
93
112
 
94
- private getFullMetaPath(): string {
95
- if (this.metaPath.startsWith("/")) {
96
- return this.metaPath;
97
- } else if (this.contextPath.endsWith("/")) {
98
- return `${this.contextPath}${this.metaPath}`;
99
- } else {
100
- return `${this.contextPath}/${this.metaPath}`;
101
- }
102
- }
103
-
104
113
  onMetadataAvailable(): void {
105
114
  const owner = this._getOwner();
106
115
  if (!owner) {
@@ -110,19 +119,20 @@ export default class CollaborativeDraftHandler extends BuildingBlock<Avatar> {
110
119
  return;
111
120
  }
112
121
 
113
- this.contextPath ??= this.getOwnerContextPath() as string;
114
- const fullMetaPath = this.getFullMetaPath();
115
- const objectPath = this.getDataModelObjectPath<Property>(fullMetaPath);
122
+ const objectPath = this.getDataModelObjectForMetaPath<Property>(this.metaPath, this.contextPath);
116
123
  if (!objectPath || !isProperty(objectPath.targetObject)) {
117
- throw new Error(`CollaborativeDraftHandler: the provided metaPath '${fullMetaPath}' does not point to a valid property`);
124
+ throw new Error(`CollaborativeDraftHandler: the provided metaPath '${this.metaPath}' does not point to a valid property`);
118
125
  }
119
126
 
120
127
  // Bind the lockInfo property to the corresponding lockInfo in the internal model
121
- const keysBindingParts = objectPath.targetEntityType.keys.map((key) => {
128
+ const keysBindingParts = objectPath.contextLocation?.targetEntityType.keys.map((key) => {
122
129
  return { path: key.name, targetType: "any" };
123
130
  });
124
131
  const bindingInfo = {
125
- parts: [{ path: `internal>/collaboration/activities${fullMetaPath}`, targetType: "any" }, ...keysBindingParts],
132
+ parts: [
133
+ { path: `internal>/collaboration/activities${getTargetObjectPath(objectPath)}`, targetType: "any" },
134
+ ...keysBindingParts!
135
+ ],
126
136
  formatter: CollaborationFormatters.getCollaborationInfo
127
137
  };
128
138
 
@@ -156,11 +166,9 @@ export default class CollaborativeDraftHandler extends BuildingBlock<Avatar> {
156
166
  * @returns The Avatar control
157
167
  */
158
168
  createCollaborationAvatar(objectPath: DataModelObjectPath<Property>): Avatar {
159
- const collaborationExpression = UIFormatters.getCollaborationExpression(
160
- objectPath,
161
- CollaborationFormatters.hasCollaborationActivity
169
+ const collaborationHasActivityExpression = compileExpression(
170
+ UIFormatters.getCollaborationExpression(objectPath, CollaborationFormatters.hasCollaborationActivity)
162
171
  );
163
- const collaborationHasActivityExpression = compileExpression(collaborationExpression);
164
172
  const collaborationInitialsExpression = compileExpression(
165
173
  UIFormatters.getCollaborationExpression(objectPath, CollaborationFormatters.getCollaborationActivityInitials)
166
174
  );
@@ -194,6 +202,17 @@ export default class CollaborativeDraftHandler extends BuildingBlock<Avatar> {
194
202
  onAvatarPress(evt: Avatar$PressEvent): void {
195
203
  const avatar = evt.getSource();
196
204
  const block = avatar.getParent() as CollaborativeDraftHandler;
205
+
206
+ if (block.hasListeners("avatarPress")) {
207
+ // If the event is handled by the application, do not open the popover
208
+ block.fireEvent("avatarPress", {
209
+ lockingUserID: block.lockInfo?.id as string,
210
+ lockingUserName: block.lockInfo?.name as string,
211
+ lockingUserInitials: block.lockInfo?.initials as string,
212
+ lockingUserColor: block.lockInfo?.color as string
213
+ });
214
+ return;
215
+ }
197
216
  const view = this.getPageController().getView();
198
217
  const resourceModel = ResourceModelHelper.getResourceModel(view);
199
218
  let popover = UI5Element.getElementById(`manageCollaborationDraft--editUser`) as ResponsivePopover | undefined;