@sapui5/sap.fe.core 1.100.0 → 1.102.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 (295) hide show
  1. package/package.json +4 -4
  2. package/src/sap/fe/core/.library +2 -3
  3. package/src/sap/fe/core/AppComponent.js +23 -30
  4. package/src/sap/fe/core/AppComponent.ts +35 -40
  5. package/src/sap/fe/core/AppStateHandler.js +8 -8
  6. package/src/sap/fe/core/AppStateHandler.ts +11 -11
  7. package/src/sap/fe/core/BaseController.js +9 -9
  8. package/src/sap/fe/core/BaseController.ts +3 -4
  9. package/src/sap/fe/core/CommonUtils.js +122 -101
  10. package/src/sap/fe/core/CommonUtils.ts +239 -193
  11. package/src/sap/fe/core/ExtensionAPI.js +12 -13
  12. package/src/sap/fe/core/ExtensionAPI.ts +21 -31
  13. package/src/sap/fe/core/PageController.js +19 -13
  14. package/src/sap/fe/core/PageController.ts +40 -34
  15. package/src/sap/fe/core/TemplateComponent.js +198 -123
  16. package/src/sap/fe/core/TemplateComponent.ts +109 -121
  17. package/src/sap/fe/core/TemplateModel.js +7 -9
  18. package/src/sap/fe/core/TemplateModel.ts +3 -3
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
  27. package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
  28. package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
  29. package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
  30. package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
  33. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
  34. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
  35. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
  36. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
  37. package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
  38. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
  39. package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
  40. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
  41. package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
  42. package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
  43. package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
  44. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
  45. package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
  46. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
  47. package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
  48. package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
  50. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  51. package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
  52. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  53. package/src/sap/fe/core/controllerextensions/Share.js +34 -16
  54. package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
  55. package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
  56. package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
  57. package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
  58. package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
  61. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
  62. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
  63. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
  64. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
  65. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
  66. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
  67. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
  68. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
  69. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
  70. package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
  71. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
  72. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
  73. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
  74. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
  75. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
  76. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
  77. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
  78. package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
  79. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
  80. package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
  82. package/src/sap/fe/core/controls/Any.js +28 -0
  83. package/src/sap/fe/core/controls/Any.ts +30 -0
  84. package/src/sap/fe/core/controls/CommandExecution.js +50 -16
  85. package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
  86. package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
  87. package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
  88. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
  89. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
  90. package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
  91. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
  92. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
  93. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
  94. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
  95. package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
  96. package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
  97. package/src/sap/fe/core/controls/FileWrapper.js +360 -0
  98. package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
  99. package/src/sap/fe/core/controls/FilterBar.js +154 -119
  100. package/src/sap/fe/core/controls/FilterBar.ts +128 -123
  101. package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
  102. package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
  103. package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
  104. package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
  105. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
  106. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
  107. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
  108. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
  109. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
  110. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
  111. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
  112. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
  113. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
  114. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
  115. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
  116. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
  117. package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
  118. package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
  119. package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
  120. package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
  121. package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
  127. package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
  128. package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
  129. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  130. package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
  131. package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
  132. package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
  133. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
  135. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
  137. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
  138. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
  139. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
  140. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
  141. package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
  142. package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
  143. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  144. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
  145. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  146. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
  147. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
  148. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
  149. package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
  150. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
  151. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
  152. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
  153. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
  154. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
  155. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
  156. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
  157. package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
  158. package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
  159. package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
  160. package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
  161. package/src/sap/fe/core/fpm/Component.js +46 -17
  162. package/src/sap/fe/core/fpm/Component.ts +11 -16
  163. package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
  164. package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
  165. package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
  166. package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
  167. package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
  168. package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
  169. package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
  170. package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
  171. package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
  172. package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
  173. package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
  174. package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
  175. package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
  176. package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
  177. package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
  178. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
  179. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  180. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  181. package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
  182. package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
  183. package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
  184. package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
  185. package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
  186. package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
  187. package/src/sap/fe/core/library.js +13 -5
  188. package/src/sap/fe/core/library.ts +26 -17
  189. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  190. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
  191. package/src/sap/fe/core/messagebundle.properties +135 -180
  192. package/src/sap/fe/core/messagebundle_ar.properties +31 -64
  193. package/src/sap/fe/core/messagebundle_bg.properties +31 -64
  194. package/src/sap/fe/core/messagebundle_ca.properties +31 -64
  195. package/src/sap/fe/core/messagebundle_cs.properties +31 -64
  196. package/src/sap/fe/core/messagebundle_cy.properties +32 -65
  197. package/src/sap/fe/core/messagebundle_da.properties +31 -64
  198. package/src/sap/fe/core/messagebundle_de.properties +29 -62
  199. package/src/sap/fe/core/messagebundle_el.properties +32 -65
  200. package/src/sap/fe/core/messagebundle_en.properties +32 -65
  201. package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
  202. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
  203. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
  204. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
  205. package/src/sap/fe/core/messagebundle_es.properties +31 -64
  206. package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
  207. package/src/sap/fe/core/messagebundle_et.properties +31 -64
  208. package/src/sap/fe/core/messagebundle_fi.properties +29 -62
  209. package/src/sap/fe/core/messagebundle_fr.properties +36 -69
  210. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
  211. package/src/sap/fe/core/messagebundle_hi.properties +29 -62
  212. package/src/sap/fe/core/messagebundle_hr.properties +32 -65
  213. package/src/sap/fe/core/messagebundle_hu.properties +30 -63
  214. package/src/sap/fe/core/messagebundle_id.properties +32 -65
  215. package/src/sap/fe/core/messagebundle_it.properties +31 -64
  216. package/src/sap/fe/core/messagebundle_iw.properties +31 -64
  217. package/src/sap/fe/core/messagebundle_ja.properties +29 -62
  218. package/src/sap/fe/core/messagebundle_kk.properties +31 -64
  219. package/src/sap/fe/core/messagebundle_ko.properties +31 -64
  220. package/src/sap/fe/core/messagebundle_lt.properties +31 -64
  221. package/src/sap/fe/core/messagebundle_lv.properties +32 -65
  222. package/src/sap/fe/core/messagebundle_ms.properties +31 -64
  223. package/src/sap/fe/core/messagebundle_nl.properties +31 -64
  224. package/src/sap/fe/core/messagebundle_no.properties +31 -64
  225. package/src/sap/fe/core/messagebundle_pl.properties +34 -67
  226. package/src/sap/fe/core/messagebundle_pt.properties +32 -65
  227. package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
  228. package/src/sap/fe/core/messagebundle_ro.properties +33 -66
  229. package/src/sap/fe/core/messagebundle_ru.properties +33 -66
  230. package/src/sap/fe/core/messagebundle_sh.properties +31 -64
  231. package/src/sap/fe/core/messagebundle_sk.properties +31 -64
  232. package/src/sap/fe/core/messagebundle_sl.properties +29 -62
  233. package/src/sap/fe/core/messagebundle_sv.properties +30 -63
  234. package/src/sap/fe/core/messagebundle_th.properties +31 -64
  235. package/src/sap/fe/core/messagebundle_tr.properties +31 -64
  236. package/src/sap/fe/core/messagebundle_uk.properties +32 -65
  237. package/src/sap/fe/core/messagebundle_vi.properties +31 -64
  238. package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
  239. package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
  240. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
  241. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
  242. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
  243. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
  244. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
  245. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
  246. package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
  247. package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
  248. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
  249. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
  250. package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
  251. package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
  252. package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
  253. package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
  254. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
  255. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
  256. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
  257. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
  258. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
  259. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
  260. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  261. package/src/sap/fe/core/support/CommonHelper.ts +0 -3
  262. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
  263. package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
  264. package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
  265. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
  266. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
  267. package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
  268. package/src/sap/fe/core/templating/FilterHelper.js +4 -4
  269. package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
  270. package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
  271. package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
  272. package/src/sap/fe/core/templating/UIFormatters.js +133 -22
  273. package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
  274. package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
  275. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
  276. package/src/sap/fe/core/type/Email.js +26 -8
  277. package/src/sap/fe/core/type/Email.ts +8 -7
  278. package/src/sap/fe/core/AnnotationHelper.js +0 -312
  279. package/src/sap/fe/core/AnnotationHelper.ts +0 -315
  280. package/src/sap/fe/core/RouterProxy.js +0 -926
  281. package/src/sap/fe/core/TransactionHelper.js +0 -1562
  282. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
  283. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
  284. package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
  285. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
  286. package/src/sap/fe/core/actions/draft.js +0 -523
  287. package/src/sap/fe/core/actions/messageHandling.js +0 -567
  288. package/src/sap/fe/core/actions/nonDraft.js +0 -20
  289. package/src/sap/fe/core/actions/nonDraft.ts +0 -12
  290. package/src/sap/fe/core/actions/operations.js +0 -1096
  291. package/src/sap/fe/core/actions/sticky.js +0 -130
  292. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
  293. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
  294. package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
  295. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
@@ -1,6 +1,5 @@
1
1
  import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
2
- import ControllerExtensionMetadata from "sap/fe/core/controllerextensions/ControllerExtensionMetadata";
3
- import { UI5Class, Override, Public } from "../helpers/ClassSupport";
2
+ import { defineUI5Class, methodOverride, publicExtension } from "../helpers/ClassSupport";
4
3
  import JSONModel from "sap/ui/model/json/JSONModel";
5
4
  import ODataModel from "sap/ui/model/odata/v4/ODataModel";
6
5
  import Context from "sap/ui/model/odata/v4/Context";
@@ -17,7 +16,8 @@ import FilterOperator from "sap/ui/model/FilterOperator";
17
16
  import Sorter from "sap/ui/model/Sorter";
18
17
  import GenericTag from "sap/m/GenericTag";
19
18
  import Popover from "sap/m/Popover";
20
- import ResourceBundle from "sap/base/i18n/ResourceBundle";
19
+ import { CoreEx } from "types/extension_types";
20
+ import Core from "sap/ui/core/Core";
21
21
 
22
22
  const MessageTypeFromCriticality: Record<string, MessageType> = {
23
23
  "1": MessageType.Error,
@@ -217,7 +217,7 @@ function getFilterStringFromDefinition(filterDefinition: FilterDefinition): stri
217
217
  .getConfiguration()
218
218
  .getLanguage()
219
219
  );
220
- const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
220
+ const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
221
221
  const dateFormat = DateFormat.getDateInstance({ style: "medium" }, currentLocale);
222
222
 
223
223
  function formatRange(range: RangeDefinition): string {
@@ -269,7 +269,7 @@ function getFilterStringFromDefinition(filterDefinition: FilterDefinition): stri
269
269
  }
270
270
 
271
271
  function formatChartTitle(kpiDef: KPIDefinition): string {
272
- const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
272
+ const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
273
273
 
274
274
  function formatList(items: { name: string; label: string }[]) {
275
275
  if (items.length === 0) {
@@ -568,7 +568,7 @@ function getNavigationParameters(
568
568
  * @private
569
569
  * @since 1.93.0
570
570
  */
571
- @UI5Class("sap.fe.core.controllerextensions.KPIManagement", ControllerExtensionMetadata)
571
+ @defineUI5Class("sap.fe.core.controllerextensions.KPIManagement")
572
572
  class KPIManagementControllerExtension extends ControllerExtension {
573
573
  protected aKPIDefinitions?: KPIDefinition[];
574
574
  protected oCard: any;
@@ -624,7 +624,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
624
624
 
625
625
  // Add side indicators in the card header if a target is defined for the KPI
626
626
  if (kpiDefinition.datapoint.targetPath || kpiDefinition.datapoint.targetValue !== undefined) {
627
- const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
627
+ const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
628
628
  oCardManifest["sap.card"].header.sideIndicators = [
629
629
  {
630
630
  title: resBundle.getText("C_KPICARD_INDICATOR_TARGET"),
@@ -689,7 +689,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
689
689
  }
690
690
  }
691
691
 
692
- @Override()
692
+ @methodOverride()
693
693
  public onInit(): void {
694
694
  this.aKPIDefinitions = this.getKPIData();
695
695
 
@@ -718,7 +718,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
718
718
  }
719
719
  }
720
720
 
721
- @Override()
721
+ @methodOverride()
722
722
  public onExit(): void {
723
723
  const oKPIModel = this.getView().getModel("kpiModel") as JSONModel;
724
724
 
@@ -1108,7 +1108,8 @@ class KPIManagementControllerExtension extends ControllerExtension {
1108
1108
  protected getPopover(oKPITag: GenericTag): Promise<Popover> {
1109
1109
  if (!this.oPopover) {
1110
1110
  return new Promise((resolve, reject) => {
1111
- (sap.ui.getCore().loadLibrary("sap/ui/integration", { async: true }) as Promise<object>)
1111
+ (Core as CoreEx)
1112
+ .loadLibrary("sap/ui/integration", { async: true })
1112
1113
  .then(() => {
1113
1114
  sap.ui.require(["sap/ui/integration/widgets/Card", "sap/ui/integration/Host"], (Card: any, Host: any) => {
1114
1115
  const oHost = new Host();
@@ -1155,7 +1156,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
1155
1156
  }
1156
1157
  }
1157
1158
 
1158
- @Public
1159
+ @publicExtension()
1159
1160
  public onKPIPressed(oKPITag: any, kpiID: string): void {
1160
1161
  const oKPIModel = oKPITag.getModel("kpiModel") as JSONModel;
1161
1162
 
@@ -2,18 +2,18 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "sap/fe/core/helpers/MassEditHelper", "sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/controllerextensions/ControllerExtensionMetadata", "sap/fe/core/helpers/ModelHelper", "sap/m/MessageBox"], function (ControllerExtension, OverrideExecution, MassEditHelper, Log, ClassSupport, ControllerExtensionMetadata, ModelHelper, MessageBox) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/MassEditHelper", "sap/fe/core/helpers/ModelHelper", "sap/m/MessageBox", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution"], function (Log, ClassSupport, MassEditHelper, ModelHelper, MessageBox, ControllerExtension, OverrideExecution) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _class, _class2;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2;
9
9
 
10
- var UI5Class = ClassSupport.UI5Class;
11
- var Public = ClassSupport.Public;
12
- var Private = ClassSupport.Private;
13
- var Final = ClassSupport.Final;
14
- var Extensible = ClassSupport.Extensible;
10
+ var publicExtension = ClassSupport.publicExtension;
11
+ var privateExtension = ClassSupport.privateExtension;
12
+ var finalExtension = ClassSupport.finalExtension;
13
+ var extensible = ClassSupport.extensible;
14
+ var defineUI5Class = ClassSupport.defineUI5Class;
15
15
 
16
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
16
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
17
17
 
18
18
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19
19
 
@@ -26,8 +26,8 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
26
26
  * @hideconstructor
27
27
  * @private
28
28
  */
29
- var MassEdit = (_dec = UI5Class("sap.fe.core.controllerextensions.MassEdit", ControllerExtensionMetadata), _dec2 = Extensible(OverrideExecution.After), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
30
- _inherits(MassEdit, _ControllerExtension);
29
+ var MassEdit = (_dec = defineUI5Class("sap.fe.core.controllerextensions.MassEdit"), _dec2 = publicExtension(), _dec3 = finalExtension(), _dec4 = publicExtension(), _dec5 = finalExtension(), _dec6 = privateExtension(), _dec7 = extensible(OverrideExecution.After), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
30
+ _inheritsLoose(MassEdit, _ControllerExtension);
31
31
 
32
32
  function MassEdit() {
33
33
  return _ControllerExtension.apply(this, arguments) || this;
@@ -114,6 +114,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
114
114
  return aContexts && aContexts.length > 0 ? MassEditHelper.createDialog(oTable, aContexts, oController) : Promise.resolve();
115
115
  }).then(function (oDialog) {
116
116
  if (oDialog) {
117
+ oTable.addDependent(oDialog);
117
118
  oDialog.open();
118
119
  }
119
120
  }).catch(function (oError) {
@@ -138,7 +139,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
138
139
  };
139
140
 
140
141
  return MassEdit;
141
- }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getMessageDetailForNonEditable", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "getMessageDetailForNonEditable"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "openMassEditDialog", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "openMassEditDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "fetchContextsForEdit", [Private, _dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "fetchContextsForEdit"), _class2.prototype)), _class2)) || _class);
142
+ }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getMessageDetailForNonEditable", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "getMessageDetailForNonEditable"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "openMassEditDialog", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "openMassEditDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "fetchContextsForEdit", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "fetchContextsForEdit"), _class2.prototype)), _class2)) || _class);
142
143
  return MassEdit;
143
144
  }, false);
144
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hc3NFZGl0LnRzIl0sIm5hbWVzIjpbIk1hc3NFZGl0IiwiVUk1Q2xhc3MiLCJDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEiLCJFeHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsImdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNIZWFkZXIiLCJnZXRUZXh0Iiwic1JlYXNvbkdyb3VwIiwic1JlYXNvbkRyYWZ0Iiwic1JlYXNvbk5vbkVkaXRhYmxlIiwiX29wZW5Db25maXJtRGlhbG9nIiwib1RhYmxlIiwiYUNvbnRleHRzIiwiaVNlbGVjdGVkQ29udGV4dHMiLCJpVXBkYXRhYmxlQ29udGV4dHMiLCJsZW5ndGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFZpZXciLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsInNFZGl0QnV0dG9uIiwic0NhbmNlbEJ1dHRvbiIsImlOb25FZGl0YWJsZSIsInNNZXNzYWdlIiwic1BhdGgiLCJkYXRhIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImJJc0RyYWZ0IiwiTW9kZWxIZWxwZXIiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiYkRpc3BsYXlNb2RlIiwic01lc3NhZ2VEZXRhaWwiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImRldGFpbHMiLCJhY3Rpb25zIiwiZW1waGFzaXplZEFjdGlvbiIsImNvbnRlbnRXaWR0aCIsIm9uQ2xvc2UiLCJzU2VsZWN0aW9uIiwiYUNvbnRleHRzRm9yRWRpdCIsIkxvZyIsImluZm8iLCJ0b1N0cmluZyIsImNhdGNoIiwiZXJyb3IiLCJfY29uZmlybUNvbnRleHRzIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInBDb250ZXh0c0ZvckVkaXQiLCJmZXRjaENvbnRleHRzRm9yRWRpdCIsImJpbmQiLCJNYXNzRWRpdEhlbHBlciIsImNyZWF0ZURpYWxvZyIsIm9EaWFsb2ciLCJvcGVuIiwib0Vycm9yIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiUHVibGljIiwiRmluYWwiLCJQcml2YXRlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLFFBQVEsQ0FBQywyQ0FBRCxFQUE4Q0MsMkJBQTlDLEMsVUE0SFBDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLEtBQW5CLEM7Ozs7Ozs7OztXQXhIWEMsOEIsR0FGQSx3Q0FFK0JDLGVBRi9CLEVBRWdFO0FBQy9ELFVBQU1DLE9BQU8sR0FBR0QsZUFBZSxDQUFDRSxPQUFoQixDQUF3QiwyQ0FBeEIsQ0FBaEI7QUFBQSxVQUNDQyxZQUFZLEdBQUdILGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsMkNBQXhCLENBRGhCO0FBQUEsVUFFQ0UsWUFBWSxHQUFHSixlQUFlLENBQUNFLE9BQWhCLENBQXdCLGlEQUF4QixDQUZoQjtBQUFBLFVBR0NHLGtCQUFrQixHQUFHTCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLHdEQUF4QixDQUh0QjtBQUtBLGFBQ0MsZ0JBQ0FELE9BREEsR0FFQSxpQkFGQSxHQUdBLEtBSEEsR0FJQUUsWUFKQSxHQUtBLFFBTEEsR0FNQSxNQU5BLEdBT0EsTUFQQSxHQVFBQyxZQVJBLEdBU0EsT0FUQSxHQVVBLE1BVkEsR0FXQUMsa0JBWEEsR0FZQSxPQVpBLEdBYUEsT0FkRDtBQWdCQSxLOztXQUVEQyxrQixHQUFBLDRCQUFtQkMsTUFBbkIsRUFBa0NDLFNBQWxDLEVBQXdEQyxpQkFBeEQsRUFBbUY7QUFBQTs7QUFDbEYsVUFBTUMsa0JBQWtCLEdBQUcsQ0FBQ0YsU0FBUyxJQUFJLEVBQWQsRUFBa0JHLE1BQTdDO0FBRUEsYUFBTyxJQUFJ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QUFBLFVBQ0NhLGlCQUFpQixHQUFHZCxxQkFBcUIsQ0FBQ0UsV0FBdEIsQ0FBa0MsbUJBQWxDLEtBQTBELEVBRC9FO0FBR0EsYUFBT3BDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQitDLGlCQUFoQixDQUFQO0FBQ0EsSzs7O0lBbElxQkMsbUIsb0ZBQ3JCQyxNLEVBQ0FDLEssaUxBMkZBRCxNLEVBQ0FDLEssdUtBNEJBQyxPO1NBV2F2RSxRIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgTWFzc0VkaXRIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWFzc0VkaXRIZWxwZXJcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgeyBFeHRlbnNpYmxlLCBGaW5hbCwgUHJpdmF0ZSwgUHVibGljLCBVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb25NZXRhZGF0YSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIsIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcblxuLyoqXG4gKiBAY2xhc3MgQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbWFzcyBlZGl0IGluIGEgdGFibGVcbiAqXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NYXNzRWRpdFxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHByaXZhdGVcbiAqL1xuQFVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWFzc0VkaXRcIiwgQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhKVxuY2xhc3MgTWFzc0VkaXQgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0QFB1YmxpY1xuXHRARmluYWxcblx0Z2V0TWVzc2FnZURldGFpbEZvck5vbkVkaXRhYmxlKG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUpIHtcblx0XHRjb25zdCBzSGVhZGVyID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX0hFQURFUlwiKSxcblx0XHRcdHNSZWFzb25Hcm91cCA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9SRUFTT05cIiksXG5cdFx0XHRzUmVhc29uRHJhZnQgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfUkVBU09OX0RSQUZUXCIpLFxuXHRcdFx0c1JlYXNvbk5vbkVkaXRhYmxlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX1JFQVNPTl9OT05fRURJVEFCTEVcIik7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0XCI8cD48c3Ryb25nPlwiICtcblx0XHRcdHNIZWFkZXIgK1xuXHRcdFx0XCI8L3N0cm9uZz48L3A+XFxuXCIgK1xuXHRcdFx0XCI8cD5cIiArXG5cdFx0XHRzUmVhc29uR3JvdXAgK1xuXHRcdFx0XCI8L3A+XFxuXCIgK1xuXHRcdFx0XCI8dWw+XCIgK1xuXHRcdFx0XCI8bGk+XCIgK1xuXHRcdFx0c1JlYXNvbkRyYWZ0ICtcblx0XHRcdFwiPC9saT5cIiArXG5cdFx0XHRcIjxsaT5cIiArXG5cdFx0XHRzUmVhc29uTm9uRWRpdGFibGUgK1xuXHRcdFx0XCI8L2xpPlwiICtcblx0XHRcdFwiPC91bD5cIlxuXHRcdCk7XG5cdH1cblxuXHRfb3BlbkNvbmZpcm1EaWFsb2cob1RhYmxlOiBUYWJsZSwgYUNvbnRleHRzOiBDb250ZXh0W10sIGlTZWxlY3RlZENvbnRleHRzOiBudW1iZXIpIHtcblx0XHRjb25zdCBpVXBkYXRhYmxlQ29udGV4dHMgPSAoYUNvbnRleHRzIHx8IFtdKS5sZW5ndGg7XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0XHQoKHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UmVzb3VyY2VCdW5kbGUoKSBhcyBQcm9taXNlPFJlc291cmNlQnVuZGxlPilcblx0XHRcdFx0LnRoZW4ob1Jlc291cmNlQnVuZGxlID0+IHtcblx0XHRcdFx0XHRjb25zdCBzRWRpdEJ1dHRvbiA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdHNDYW5jZWxCdXR0b24gPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NBTkNFTF9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSA9IGlTZWxlY3RlZENvbnRleHRzIC0gaVVwZGF0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRcdFx0c01lc3NhZ2UgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRVwiLCBbXG5cdFx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSxcblx0XHRcdFx0XHRcdFx0aVNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRcdFx0XHRcdGlVcGRhdGFibGVDb250ZXh0c1xuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRzUGF0aCA9IG9UYWJsZS5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIiksXG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsID0gb1RhYmxlLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdFx0XHRiSXNEcmFmdCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCwgc1BhdGgpLFxuXHRcdFx0XHRcdFx0YkRpc3BsYXlNb2RlID0gb1RhYmxlLmRhdGEoXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHRcdFx0XHRzTWVzc2FnZURldGFpbCA9IGJJc0RyYWZ0ICYmIGJEaXNwbGF5TW9kZSAmJiB0aGlzLmdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZShvUmVzb3VyY2VCdW5kbGUpO1xuXG5cdFx0XHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKHNNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRkZXRhaWxzOiBzTWVzc2FnZURldGFpbCxcblx0XHRcdFx0XHRcdGFjdGlvbnM6IFtzRWRpdEJ1dHRvbiwgc0NhbmNlbEJ1dHRvbl0sXG5cdFx0XHRcdFx0XHRlbXBoYXNpemVkQWN0aW9uOiBzRWRpdEJ1dHRvbixcblx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aDogXCIxMDBweFwiLFxuXHRcdFx0XHRcdFx0b25DbG9zZTogZnVuY3Rpb24oc1NlbGVjdGlvbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBhQ29udGV4dHNGb3JFZGl0OiBhbnlbXSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRpZiAoc1NlbGVjdGlvbiA9PT0gc0VkaXRCdXR0b24pIHtcblx0XHRcdFx0XHRcdFx0XHRMb2cuaW5mbyhcIk1hc3MgRWRpdDogQ29uZmlybWVkIHRvIGVkaXQgXCIsIGlVcGRhdGFibGVDb250ZXh0cy50b1N0cmluZygpLCBcIiBzZWxlY3Rpb25zLlwiKTtcblx0XHRcdFx0XHRcdFx0XHRhQ29udGV4dHNGb3JFZGl0ID0gYUNvbnRleHRzO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHNTZWxlY3Rpb24gPT09IHNDYW5jZWxCdXR0b24pIHtcblx0XHRcdFx0XHRcdFx0XHRMb2cuaW5mbyhcIk1hc3MgRWRpdDogQ2FuY2VsbGVkLlwiKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKGFDb250ZXh0c0ZvckVkaXQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gYXMgYW55KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRfY29uZmlybUNvbnRleHRzKG9UYWJsZTogVGFibGUsIGFDb250ZXh0czogQ29udGV4dFtdKSB7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRpU2VsZWN0ZWRDb250ZXh0cyA9ICtvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIikgfHwgMDtcblxuXHRcdGFDb250ZXh0cyA9IGFDb250ZXh0cyB8fCBbXTtcblxuXHRcdGlmIChhQ29udGV4dHMubGVuZ3RoICYmIGFDb250ZXh0cy5sZW5ndGggIT09IGlTZWxlY3RlZENvbnRleHRzKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fb3BlbkNvbmZpcm1EaWFsb2cob1RhYmxlLCBhQ29udGV4dHMsIGlTZWxlY3RlZENvbnRleHRzKTtcblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShhQ29udGV4dHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIGJ5IG1ldGhvZCBvcGVuTWFzc0VkaXREaWFsb2c6XG5cdCAqID0+IE9wZW5zIHRoZSBtYXNzIGVkaXQgZGlhbG9nLlxuXHQgKiA9PiBJbXBsZW1lbnRzIHRoZSBzYXZlIGFuZCBjYW5jZWwgZnVuY3Rpb25hbGl0eS5cblx0ICogPT4gU2V0cyB0aGUgcnVudGltZSBtb2RlbCB0byB0aGUgZGlhbG9nLlxuXHQgKiA9PiBTZXRzIHRoZSBzdGF0aWMgbW9kZWwncyBjb250ZXh0IHRvIHRoZSBkaWFsb2cuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1kYy5UYWJsZX0gb1RhYmxlIEluc3RhbmNlIG9mIHRoZSB0YWJsZVxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb24gb3BlbiBvZiB0aGUgbWFzcyBlZGl0IGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQdWJsaWNcblx0QEZpbmFsXG5cdG9wZW5NYXNzRWRpdERpYWxvZyhvVGFibGU6IFRhYmxlKSB7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIsXG5cdFx0XHRwQ29udGV4dHNGb3JFZGl0ID0gdGhpcy5mZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGUpO1xuXG5cdFx0cmV0dXJuIHBDb250ZXh0c0ZvckVkaXRcblx0XHRcdC50aGVuKHRoaXMuX2NvbmZpcm1Db250ZXh0cy5iaW5kKHRoaXMsIG9UYWJsZSkpXG5cdFx0XHQudGhlbihmdW5jdGlvbihhQ29udGV4dHM6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYUNvbnRleHRzICYmIGFDb250ZXh0cy5sZW5ndGggPiAwID8gTWFzc0VkaXRIZWxwZXIuY3JlYXRlRGlhbG9nKG9UYWJsZSwgYUNvbnRleHRzLCBvQ29udHJvbGxlcikgOiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihmdW5jdGlvbihvRGlhbG9nPzogYW55KSB7XG5cdFx0XHRcdGlmIChvRGlhbG9nKSB7XG5cdFx0XHRcdFx0b0RpYWxvZy5vcGVuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24ob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiTWFzcyBFZGl0OiBTb21ldGhpbmcgd2VudCB3cm9uZyBpbiBtYXNzIGVkaXQgZGlhbG9nIGNyZWF0aW9uLlwiLCBvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY29udGV4dHMgZm9yIG1hc3MgZWRpdC5cblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1kYy5UYWJsZX0gb1RhYmxlIFRhYmxlIGZvciBtYXNzIGVkaXQuXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cmxsZXJleHRlbnNpb25zLk1hc3NFZGl0I2ZldGNoQ29udGV4dHNGb3JFZGl0XG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiBjb250ZXh0KHMpIHdoaWNoIHNob3VsZCBiZSBjb25zaWRlcmVkIGZvciBtYXNzIGVkaXQuXG5cdCAqIEBwcml2YXRlXG5cdCAqKi9cblx0QFByaXZhdGVcblx0QEV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdGZldGNoQ29udGV4dHNGb3JFZGl0KG9UYWJsZTogVGFibGUpIHtcblx0XHQvL1RvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uXG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcInVwZGF0YWJsZUNvbnRleHRzXCIpIHx8IFtdO1xuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShhU2VsZWN0ZWRDb250ZXh0cyk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFzc0VkaXQ7XG4iXX0=
145
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hc3NFZGl0LnRzIl0sIm5hbWVzIjpbIk1hc3NFZGl0IiwiZGVmaW5lVUk1Q2xhc3MiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsInByaXZhdGVFeHRlbnNpb24iLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsImdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNIZWFkZXIiLCJnZXRUZXh0Iiwic1JlYXNvbkdyb3VwIiwic1JlYXNvbkRyYWZ0Iiwic1JlYXNvbk5vbkVkaXRhYmxlIiwiX29wZW5Db25maXJtRGlhbG9nIiwib1RhYmxlIiwiYUNvbnRleHRzIiwiaVNlbGVjdGVkQ29udGV4dHMiLCJpVXBkYXRhYmxlQ29udGV4dHMiLCJsZW5ndGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFZpZXciLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsInNFZGl0QnV0dG9uIiwic0NhbmNlbEJ1dHRvbiIsImlOb25FZGl0YWJsZSIsInNNZXNzYWdlIiwic1BhdGgiLCJkYXRhIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImJJc0RyYWZ0IiwiTW9kZWxIZWxwZXIiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiYkRpc3BsYXlNb2RlIiwic01lc3NhZ2VEZXRhaWwiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImRldGFpbHMiLCJhY3Rpb25zIiwiZW1waGFzaXplZEFjdGlvbiIsImNvbnRlbnRXaWR0aCIsIm9uQ2xvc2UiLCJzU2VsZWN0aW9uIiwiYUNvbnRleHRzRm9yRWRpdCIsIkxvZyIsImluZm8iLCJ0b1N0cmluZyIsImNhdGNoIiwiZXJyb3IiLCJfY29uZmlybUNvbnRleHRzIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInBDb250ZXh0c0ZvckVkaXQiLCJmZXRjaENvbnRleHRzRm9yRWRpdCIsImJpbmQiLCJNYXNzRWRpdEhlbHBlciIsImNyZWF0ZURpYWxvZyIsIm9EaWFsb2ciLCJhZGREZXBlbmRlbnQiLCJvcGVuIiwib0Vycm9yIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLGNBQWMsQ0FBQywyQ0FBRCxDLFVBRWJDLGVBQWUsRSxVQUNmQyxjQUFjLEUsVUEyRmRELGVBQWUsRSxVQUNmQyxjQUFjLEUsVUE2QmRDLGdCQUFnQixFLFVBQ2hCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFuQixDOzs7Ozs7Ozs7V0F6SFhDLDhCLEdBRkEsd0NBRStCQyxlQUYvQixFQUVnRTtBQUMvRCxVQUFNQyxPQUFPLEdBQUdELGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsMkNBQXhCLENBQWhCO0FBQUEsVUFDQ0MsWUFBWSxHQUFHSCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLDJDQUF4QixDQURoQjtBQUFBLFVBRUNFLFlBQVksR0FBR0osZUFBZSxDQUFDRSxPQUFoQixDQUF3QixpREFBeEIsQ0FGaEI7QUFBQSxVQUdDRyxrQkFBa0IsR0FBR0wsZUFBZSxDQUFDRSxPQUFoQixDQUF3Qix3REFBeEIsQ0FIdEI7QUFLQSxhQUNDLGdCQUNBRCxPQURBLEdBRUEsaUJBRkEsR0FHQSxLQUhBLEdBSUFFLFlBSkEsR0FLQSxRQUxBLEdBTUEsTUFOQSxHQU9BLE1BUEEsR0FRQUMsWUFSQSxHQVNBLE9BVEEsR0FVQSxNQVZBLEdBV0FDLGtCQVhBLEdBWUEsT0FaQSxHQWFBLE9BZEQ7QUFnQkEsSzs7V0FFREMsa0IsR0FBQSw0QkFBbUJDLE1BQW5CLEVBQWtDQyxTQUFsQyxFQUF3REMsaUJBQXhELEVBQW1GO0FBQUE7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Q0E7QUFDQTtBQUNBOzs7V0FHQ1Asb0IsR0FGQSw4QkFFcUI5QyxNQUZyQixFQUVvQztBQUNuQztBQUNBLFVBQU11QyxxQkFBcUIsR0FBR3ZDLE1BQU0sQ0FBQ3dDLGlCQUFQLENBQXlCLFVBQXpCLENBQTlCO0FBQUEsVUFDQ2MsaUJBQWlCLEdBQUdmLHFCQUFxQixDQUFDRSxXQUF0QixDQUFrQyxtQkFBbEMsS0FBMEQsRUFEL0U7QUFHQSxhQUFPcEMsT0FBTyxDQUFDQyxPQUFSLENBQWdCZ0QsaUJBQWhCLENBQVA7QUFDQSxLOzs7SUFuSXFCQyxtQjtTQXNJUnZFLFEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IE1hc3NFZGl0SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01hc3NFZGl0SGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIsIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcblxuLyoqXG4gKiBAY2xhc3MgQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbWFzcyBlZGl0IGluIGEgdGFibGVcbiAqXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NYXNzRWRpdFxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHByaXZhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWFzc0VkaXRcIilcbmNsYXNzIE1hc3NFZGl0IGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRNZXNzYWdlRGV0YWlsRm9yTm9uRWRpdGFibGUob1Jlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSkge1xuXHRcdGNvbnN0IHNIZWFkZXIgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfSEVBREVSXCIpLFxuXHRcdFx0c1JlYXNvbkdyb3VwID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX1JFQVNPTlwiKSxcblx0XHRcdHNSZWFzb25EcmFmdCA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9SRUFTT05fRFJBRlRcIiksXG5cdFx0XHRzUmVhc29uTm9uRWRpdGFibGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfUkVBU09OX05PTl9FRElUQUJMRVwiKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHRcIjxwPjxzdHJvbmc+XCIgK1xuXHRcdFx0c0hlYWRlciArXG5cdFx0XHRcIjwvc3Ryb25nPjwvcD5cXG5cIiArXG5cdFx0XHRcIjxwPlwiICtcblx0XHRcdHNSZWFzb25Hcm91cCArXG5cdFx0XHRcIjwvcD5cXG5cIiArXG5cdFx0XHRcIjx1bD5cIiArXG5cdFx0XHRcIjxsaT5cIiArXG5cdFx0XHRzUmVhc29uRHJhZnQgK1xuXHRcdFx0XCI8L2xpPlwiICtcblx0XHRcdFwiPGxpPlwiICtcblx0XHRcdHNSZWFzb25Ob25FZGl0YWJsZSArXG5cdFx0XHRcIjwvbGk+XCIgK1xuXHRcdFx0XCI8L3VsPlwiXG5cdFx0KTtcblx0fVxuXG5cdF9vcGVuQ29uZmlybURpYWxvZyhvVGFibGU6IFRhYmxlLCBhQ29udGV4dHM6IENvbnRleHRbXSwgaVNlbGVjdGVkQ29udGV4dHM6IG51bWJlcikge1xuXHRcdGNvbnN0IGlVcGRhdGFibGVDb250ZXh0cyA9IChhQ29udGV4dHMgfHwgW10pLmxlbmd0aDtcblxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdFx0KCh0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpLmdldFJlc291cmNlQnVuZGxlKCkgYXMgUHJvbWlzZTxSZXNvdXJjZUJ1bmRsZT4pXG5cdFx0XHRcdC50aGVuKChvUmVzb3VyY2VCdW5kbGUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBzRWRpdEJ1dHRvbiA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdHNDYW5jZWxCdXR0b24gPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NBTkNFTF9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSA9IGlTZWxlY3RlZENvbnRleHRzIC0gaVVwZGF0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRcdFx0c01lc3NhZ2UgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRVwiLCBbXG5cdFx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSxcblx0XHRcdFx0XHRcdFx0aVNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRcdFx0XHRcdGlVcGRhdGFibGVDb250ZXh0c1xuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRzUGF0aCA9IG9UYWJsZS5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIiksXG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsID0gb1RhYmxlLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdFx0XHRiSXNEcmFmdCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCwgc1BhdGgpLFxuXHRcdFx0XHRcdFx0YkRpc3BsYXlNb2RlID0gb1RhYmxlLmRhdGEoXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHRcdFx0XHRzTWVzc2FnZURldGFpbCA9IGJJc0RyYWZ0ICYmIGJEaXNwbGF5TW9kZSAmJiB0aGlzLmdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZShvUmVzb3VyY2VCdW5kbGUpO1xuXG5cdFx0XHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKHNNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRkZXRhaWxzOiBzTWVzc2FnZURldGFpbCxcblx0XHRcdFx0XHRcdGFjdGlvbnM6IFtzRWRpdEJ1dHRvbiwgc0NhbmNlbEJ1dHRvbl0sXG5cdFx0XHRcdFx0XHRlbXBoYXNpemVkQWN0aW9uOiBzRWRpdEJ1dHRvbixcblx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aDogXCIxMDBweFwiLFxuXHRcdFx0XHRcdFx0b25DbG9zZTogZnVuY3Rpb24gKHNTZWxlY3Rpb246IHN0cmluZykge1xuXHRcdFx0XHRcdFx0XHRsZXQgYUNvbnRleHRzRm9yRWRpdDogYW55W10gPSBbXTtcblx0XHRcdFx0XHRcdFx0aWYgKHNTZWxlY3Rpb24gPT09IHNFZGl0QnV0dG9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLmluZm8oXCJNYXNzIEVkaXQ6IENvbmZpcm1lZCB0byBlZGl0IFwiLCBpVXBkYXRhYmxlQ29udGV4dHMudG9TdHJpbmcoKSwgXCIgc2VsZWN0aW9ucy5cIik7XG5cdFx0XHRcdFx0XHRcdFx0YUNvbnRleHRzRm9yRWRpdCA9IGFDb250ZXh0cztcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzU2VsZWN0aW9uID09PSBzQ2FuY2VsQnV0dG9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLmluZm8oXCJNYXNzIEVkaXQ6IENhbmNlbGxlZC5cIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShhQ29udGV4dHNGb3JFZGl0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGFzIGFueSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdF9jb25maXJtQ29udGV4dHMob1RhYmxlOiBUYWJsZSwgYUNvbnRleHRzOiBDb250ZXh0W10pIHtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdGlTZWxlY3RlZENvbnRleHRzID0gK29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiKSB8fCAwO1xuXG5cdFx0YUNvbnRleHRzID0gYUNvbnRleHRzIHx8IFtdO1xuXG5cdFx0aWYgKGFDb250ZXh0cy5sZW5ndGggJiYgYUNvbnRleHRzLmxlbmd0aCAhPT0gaVNlbGVjdGVkQ29udGV4dHMpIHtcblx0XHRcdHJldHVybiB0aGlzLl9vcGVuQ29uZmlybURpYWxvZyhvVGFibGUsIGFDb250ZXh0cywgaVNlbGVjdGVkQ29udGV4dHMpO1xuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFDb250ZXh0cyk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgYnkgbWV0aG9kIG9wZW5NYXNzRWRpdERpYWxvZzpcblx0ICogPT4gT3BlbnMgdGhlIG1hc3MgZWRpdCBkaWFsb2cuXG5cdCAqID0+IEltcGxlbWVudHMgdGhlIHNhdmUgYW5kIGNhbmNlbCBmdW5jdGlvbmFsaXR5LlxuXHQgKiA9PiBTZXRzIHRoZSBydW50aW1lIG1vZGVsIHRvIHRoZSBkaWFsb2cuXG5cdCAqID0+IFNldHMgdGhlIHN0YXRpYyBtb2RlbCdzIGNvbnRleHQgdG8gdGhlIGRpYWxvZy5cblx0ICpcblx0ICogQHBhcmFtIHtzYXAudWkubWRjLlRhYmxlfSBvVGFibGUgSW5zdGFuY2Ugb2YgdGhlIHRhYmxlXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbiBvcGVuIG9mIHRoZSBtYXNzIGVkaXQgZGlhbG9nLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdG9wZW5NYXNzRWRpdERpYWxvZyhvVGFibGU6IFRhYmxlKSB7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIsXG5cdFx0XHRwQ29udGV4dHNGb3JFZGl0ID0gdGhpcy5mZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGUpO1xuXG5cdFx0cmV0dXJuIHBDb250ZXh0c0ZvckVkaXRcblx0XHRcdC50aGVuKHRoaXMuX2NvbmZpcm1Db250ZXh0cy5iaW5kKHRoaXMsIG9UYWJsZSkpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoYUNvbnRleHRzOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIGFDb250ZXh0cyAmJiBhQ29udGV4dHMubGVuZ3RoID4gMCA/IE1hc3NFZGl0SGVscGVyLmNyZWF0ZURpYWxvZyhvVGFibGUsIGFDb250ZXh0cywgb0NvbnRyb2xsZXIpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKG9EaWFsb2c/OiBhbnkpIHtcblx0XHRcdFx0aWYgKG9EaWFsb2cpIHtcblx0XHRcdFx0XHRvVGFibGUuYWRkRGVwZW5kZW50KG9EaWFsb2cpO1xuXHRcdFx0XHRcdG9EaWFsb2cub3BlbigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJNYXNzIEVkaXQ6IFNvbWV0aGluZyB3ZW50IHdyb25nIGluIG1hc3MgZWRpdCBkaWFsb2cgY3JlYXRpb24uXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZXh0cyBmb3IgbWFzcyBlZGl0LlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHtzYXAudWkubWRjLlRhYmxlfSBvVGFibGUgVGFibGUgZm9yIG1hc3MgZWRpdC5cblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRybGxlcmV4dGVuc2lvbnMuTWFzc0VkaXQjZmV0Y2hDb250ZXh0c0ZvckVkaXRcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSB0byBiZSByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIGNvbnRleHQocykgd2hpY2ggc2hvdWxkIGJlIGNvbnNpZGVyZWQgZm9yIG1hc3MgZWRpdC5cblx0ICogQHByaXZhdGVcblx0ICoqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRmZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGU6IFRhYmxlKSB7XG5cdFx0Ly9UbyBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHBsaWNhdGlvblxuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0YVNlbGVjdGVkQ29udGV4dHMgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ1cGRhdGFibGVDb250ZXh0c1wiKSB8fCBbXTtcblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoYVNlbGVjdGVkQ29udGV4dHMpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hc3NFZGl0O1xuIl19
@@ -1,16 +1,15 @@
1
- import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
2
- import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
3
- import MassEditHelper from "sap/fe/core/helpers/MassEditHelper";
1
+ import ResourceBundle from "sap/base/i18n/ResourceBundle";
4
2
  import Log from "sap/base/Log";
5
- import Table from "sap/ui/mdc/Table";
6
- import { Extensible, Final, Private, Public, UI5Class } from "sap/fe/core/helpers/ClassSupport";
7
- import ControllerExtensionMetadata from "sap/fe/core/controllerextensions/ControllerExtensionMetadata";
3
+ import { defineUI5Class, extensible, finalExtension, privateExtension, publicExtension } from "sap/fe/core/helpers/ClassSupport";
4
+ import MassEditHelper from "sap/fe/core/helpers/MassEditHelper";
8
5
  import ModelHelper, { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
6
+ import PageController from "sap/fe/core/PageController";
9
7
  import MessageBox from "sap/m/MessageBox";
10
- import ResourceBundle from "sap/base/i18n/ResourceBundle";
8
+ import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
9
+ import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
10
+ import Table from "sap/ui/mdc/Table";
11
11
  import Context from "sap/ui/model/Context";
12
12
  import ResourceModel from "sap/ui/model/resource/ResourceModel";
13
- import PageController from "sap/fe/core/PageController";
14
13
 
15
14
  /**
16
15
  * @class Controller extension providing hooks for the mass edit in a table
@@ -19,10 +18,10 @@ import PageController from "sap/fe/core/PageController";
19
18
  * @hideconstructor
20
19
  * @private
21
20
  */
22
- @UI5Class("sap.fe.core.controllerextensions.MassEdit", ControllerExtensionMetadata)
21
+ @defineUI5Class("sap.fe.core.controllerextensions.MassEdit")
23
22
  class MassEdit extends ControllerExtension {
24
- @Public
25
- @Final
23
+ @publicExtension()
24
+ @finalExtension()
26
25
  getMessageDetailForNonEditable(oResourceBundle: ResourceBundle) {
27
26
  const sHeader = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_HEADER"),
28
27
  sReasonGroup = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON"),
@@ -50,9 +49,9 @@ class MassEdit extends ControllerExtension {
50
49
  _openConfirmDialog(oTable: Table, aContexts: Context[], iSelectedContexts: number) {
51
50
  const iUpdatableContexts = (aContexts || []).length;
52
51
 
53
- return new Promise(resolve => {
52
+ return new Promise((resolve) => {
54
53
  ((this.getView().getModel("sap.fe.i18n") as ResourceModel).getResourceBundle() as Promise<ResourceBundle>)
55
- .then(oResourceBundle => {
54
+ .then((oResourceBundle) => {
56
55
  const sEditButton = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_BUTTON_TEXT"),
57
56
  sCancelButton = oResourceBundle.getText("C_MASS_EDIT_CANCEL_BUTTON_TEXT"),
58
57
  iNonEditable = iSelectedContexts - iUpdatableContexts,
@@ -72,7 +71,7 @@ class MassEdit extends ControllerExtension {
72
71
  actions: [sEditButton, sCancelButton],
73
72
  emphasizedAction: sEditButton,
74
73
  contentWidth: "100px",
75
- onClose: function(sSelection: string) {
74
+ onClose: function (sSelection: string) {
76
75
  let aContextsForEdit: any[] = [];
77
76
  if (sSelection === sEditButton) {
78
77
  Log.info("Mass Edit: Confirmed to edit ", iUpdatableContexts.toString(), " selections.");
@@ -84,7 +83,7 @@ class MassEdit extends ControllerExtension {
84
83
  }
85
84
  } as any);
86
85
  })
87
- .catch(function(error) {
86
+ .catch(function (error) {
88
87
  Log.error(error);
89
88
  });
90
89
  });
@@ -113,23 +112,24 @@ class MassEdit extends ControllerExtension {
113
112
  * @returns {Promise} A promise that resolves on open of the mass edit dialog.
114
113
  * @private
115
114
  */
116
- @Public
117
- @Final
115
+ @publicExtension()
116
+ @finalExtension()
118
117
  openMassEditDialog(oTable: Table) {
119
118
  const oController = this.getView().getController() as PageController,
120
119
  pContextsForEdit = this.fetchContextsForEdit(oTable);
121
120
 
122
121
  return pContextsForEdit
123
122
  .then(this._confirmContexts.bind(this, oTable))
124
- .then(function(aContexts: any) {
123
+ .then(function (aContexts: any) {
125
124
  return aContexts && aContexts.length > 0 ? MassEditHelper.createDialog(oTable, aContexts, oController) : Promise.resolve();
126
125
  })
127
- .then(function(oDialog?: any) {
126
+ .then(function (oDialog?: any) {
128
127
  if (oDialog) {
128
+ oTable.addDependent(oDialog);
129
129
  oDialog.open();
130
130
  }
131
131
  })
132
- .catch(function(oError: any) {
132
+ .catch(function (oError: any) {
133
133
  Log.error("Mass Edit: Something went wrong in mass edit dialog creation.", oError);
134
134
  });
135
135
  }
@@ -142,8 +142,8 @@ class MassEdit extends ControllerExtension {
142
142
  * @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
143
143
  * @private
144
144
  **/
145
- @Private
146
- @Extensible(OverrideExecution.After)
145
+ @privateExtension()
146
+ @extensible(OverrideExecution.After)
147
147
  fetchContextsForEdit(oTable: Table) {
148
148
  //To be overridden by the application
149
149
  const oInternalModelContext = oTable.getBindingContext("internal") as InternalModelContext,
@@ -2,18 +2,18 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "sap/fe/core/actions/messageHandling", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/ControllerExtensionMetadata", "sap/fe/core/helpers/ClassSupport"], function (ControllerExtension, OverrideExecution, messageHandling, CommonUtils, ControllerExtensionMetadata, ClassSupport) {
5
+ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/messageHandler/messageHandling", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/Core", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution"], function (CommonUtils, messageHandling, ClassSupport, Core, ControllerExtension, OverrideExecution) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _class, _class2;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2;
9
9
 
10
- var UI5Class = ClassSupport.UI5Class;
11
- var Public = ClassSupport.Public;
12
- var Private = ClassSupport.Private;
13
- var Final = ClassSupport.Final;
14
- var Extensible = ClassSupport.Extensible;
10
+ var publicExtension = ClassSupport.publicExtension;
11
+ var privateExtension = ClassSupport.privateExtension;
12
+ var finalExtension = ClassSupport.finalExtension;
13
+ var extensible = ClassSupport.extensible;
14
+ var defineUI5Class = ClassSupport.defineUI5Class;
15
15
 
16
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
16
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
17
17
 
18
18
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19
19
 
@@ -27,8 +27,8 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
27
27
  * @experimental As of version 1.90.0
28
28
  * @since 1.90.0
29
29
  */
30
- var MessageHandler = (_dec = UI5Class("sap.fe.core.controllerextensions.MessageHandler", ControllerExtensionMetadata), _dec2 = Extensible(OverrideExecution.Instead), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
31
- _inherits(MessageHandler, _ControllerExtension);
30
+ var MessageHandler = (_dec = defineUI5Class("sap.fe.core.controllerextensions.MessageHandler"), _dec2 = privateExtension(), _dec3 = extensible(OverrideExecution.Instead), _dec4 = publicExtension(), _dec5 = finalExtension(), _dec6 = publicExtension(), _dec7 = publicExtension(), _dec8 = finalExtension(), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
31
+ _inheritsLoose(MessageHandler, _ControllerExtension);
32
32
 
33
33
  function MessageHandler() {
34
34
  return _ControllerExtension.apply(this, arguments) || this;
@@ -36,18 +36,6 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
36
36
 
37
37
  var _proto = MessageHandler.prototype;
38
38
 
39
- /**
40
- * @private
41
- * @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
42
- * @function
43
- */
44
-
45
- /**
46
- * @private
47
- * @name sap.fe.core.controllerextensions.MessageHandler.extend
48
- * @function
49
- */
50
-
51
39
  /**
52
40
  * Determines whether or not bound messages are shown in the message dialog.
53
41
  *
@@ -102,7 +90,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
102
90
  // we have to set a timeout to be able to access the most recent messages
103
91
  setTimeout(function () {
104
92
  // TODO: great API - will be changed later
105
- messageHandling.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages).then(resolve).catch(reject);
93
+ messageHandling.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages, mParameters === null || mParameters === void 0 ? void 0 : mParameters.errorTargetsInAPM).then(resolve).catch(reject);
106
94
  }, 0);
107
95
  });
108
96
  }
@@ -213,7 +201,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
213
201
  // TODO: Return value needs to provided but since this function is private for now hence we can skip this.
214
202
 
215
203
  this.removeTransitionMessages();
216
- var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
204
+ var oResourceBundle = Core.getLibraryResourceBundle("sap.fe.core");
217
205
 
218
206
  if (this.base._routing) {
219
207
  return new Promise(function (resolve, reject) {
@@ -231,7 +219,7 @@ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideE
231
219
  };
232
220
 
233
221
  return MessageHandler;
234
- }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog", [Private, _dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessageDialog", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeTransitionMessages", [Public], Object.getOwnPropertyDescriptor(_class2.prototype, "removeTransitionMessages"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessages", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessages"), _class2.prototype)), _class2)) || _class);
222
+ }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessageDialog", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeTransitionMessages", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "removeTransitionMessages"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessages", [_dec7, _dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessages"), _class2.prototype)), _class2)) || _class);
235
223
  return MessageHandler;
236
224
  }, false);
237
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1lc3NhZ2VIYW5kbGVyIiwiVUk1Q2xhc3MiLCJDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEiLCJFeHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJJbnN0ZWFkIiwiZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2ciLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiY3VzdG9tTWVzc2FnZXMiLCJ1bmRlZmluZWQiLCJvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsImJFdGFnTWVzc2FnZSIsImJIYXNFdGFnTWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJ0aGVuIiwiY2F0Y2giLCJyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMiLCJrZWVwQm91bmRNZXNzYWdlIiwicmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJyZW1vdmVVbmJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiX2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UiLCJhVW5ib3VuZE1lc3NhZ2VzIiwiZ2V0TWVzc2FnZXMiLCJiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiYUN1c3RvbU1lc3NhZ2VzIiwiYklzU3RpY2t5RWRpdE1vZGUiLCJDb21tb25VdGlscyIsImlzU3RpY2t5RWRpdE1vZGUiLCJtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzIiwiaXNEYXRhUmVjZWl2ZWRFcnJvciIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJuYXZpZ2F0ZUJhY2tUb09yaWdpbiIsImxlbmd0aCIsImlzSW5pdGlhbExvYWQ1MDNFcnJvciIsIm9NZXNzYWdlIiwib1RlY2huaWNhbERldGFpbHMiLCJnZXRUZWNobmljYWxEZXRhaWxzIiwic1JldHJ5QWZ0ZXJNZXNzYWdlIiwiaHR0cFN0YXR1cyIsInJldHJ5QWZ0ZXIiLCJpU2Vjb25kc0JlZm9yZVJldHJ5IiwiX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyIiwiZ2V0UmV0cnlBZnRlck1lc3NhZ2UiLCJnZXRNZXNzYWdlIiwiZFJldHJ5QWZ0ZXIiLCJkQ3VycmVudERhdGVUaW1lIiwiRGF0ZSIsImlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsImdldFRpbWUiLCJpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMiLCJzaG93TWVzc2FnZXMiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiX2lzRmNsRW5hYmxlZCIsIm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrIiwiaGFuZGxlU2hlbGxCYWNrIiwic2hlbGxCYWNrIiwib1Jlc291cmNlQnVuZGxlIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UiLCJnZXRUZXh0IiwiQ29udHJvbGxlckV4dGVuc2lvbiIsIlByaXZhdGUiLCJQdWJsaWMiLCJGaW5hbCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxjLFdBRExDLFFBQVEsQ0FBQyxpREFBRCxFQUFvREMsMkJBQXBELEMsVUEwQlBDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQW5CLEM7Ozs7Ozs7OztBQXhCWDtBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUNDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7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LDZCQUFaLEVBQTVEO0FBRUEzQixRQUFBQSxzQkFBc0IsQ0FBQzRCLGVBQXZCLEdBQXlDLEVBQUUvRCxXQUFXLElBQUlBLFdBQVcsQ0FBQ2dFLFNBQTdCLENBQXpDLENBTDJCLENBTTNCO0FBQ0E7O0FBQ0EsYUFBSzFDLHdCQUFMO0FBQ0EsWUFBTTJDLGVBQWUsR0FBR0MsR0FBRyxDQUFDQyxFQUFKLENBQU9DLE9BQVAsR0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUF4Qjs7QUFDQSxZQUFJLEtBQUtqRSxJQUFMLENBQVVrRSxRQUFkLEVBQXdCO0FBQ3ZCLGlCQUFPLElBQUl4RCxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFlQyxNQUFmLEVBQStCO0FBQ2pEO0FBQ0FDLFlBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2hCO0FBQ0EsY0FBQSxLQUFJLENBQUNiLElBQUwsQ0FBVWtFLFFBQVYsQ0FDRUMscUJBREYsQ0FFRXZFLFdBQVcsSUFBSUEsV0FBVyxDQUFDb0MsbUJBQTNCLEdBQ0c2QixlQUFlLENBQUNPLE9BQWhCLENBQXdCLG9DQUF4QixDQURILEdBRUdQLGVBQWUsQ0FBQ08sT0FBaEIsQ0FBd0Isb0NBQXhCLENBSkwsRUFLRXJDLHNCQUxGLEVBT0VmLElBUEYsQ0FPT0wsT0FQUCxFQVFFTSxLQVJGLENBUVFMLE1BUlI7QUFTQSxhQVhTLEVBV1AsQ0FYTyxDQUFWO0FBWUEsV0FkTSxDQUFQO0FBZUE7QUFDRCxPQTNCRCxNQTJCTztBQUNOO0FBQ0EsZUFBTyxLQUFLakIsaUJBQUwsQ0FBdUJDLFdBQXZCLENBQVA7QUFDQTtBQUNELEs7OztJQTNNMkJ5RSxtQix5RkF3QjNCQyxPLDRMQXNCQUMsTSxFQUNBQyxLLDBLQXFDQUQsTSxxS0FnRkFBLE0sRUFDQUMsSztTQXdDYXBGLGMiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCBtZXNzYWdlSGFuZGxpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2FjdGlvbnMvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGFcIjtcbmltcG9ydCB7IEV4dGVuc2libGUsIEZpbmFsLCBQcml2YXRlLCBQdWJsaWMsIFVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuLyoqXG4gKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIG1lc3NhZ2UgaGFuZGxpbmcuXG4gKlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQGV4cGVyaW1lbnRhbCBBcyBvZiB2ZXJzaW9uIDEuOTAuMFxuICogQHNpbmNlIDEuOTAuMFxuICovXG5AVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlclwiLCBDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEpXG5jbGFzcyBNZXNzYWdlSGFuZGxlciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHQvKipcblx0ICogQHByaXZhdGVcblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXHQvKipcblx0ICogQHByaXZhdGVcblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIuZXh0ZW5kXG5cdCAqIEBmdW5jdGlvblxuXHQgKi9cblx0cHJpdmF0ZSBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IERldGVybWluZXMgd2hldGhlciBvciBub3QgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQcml2YXRlXG5cdEBFeHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdGdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3dzIGEgbWVzc2FnZSBkaWFsb2cgd2l0aCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGlmIHRoZXJlIGFyZSBhbnkuXG5cdCAqIFRoZSBtZXNzYWdlIGRpYWxvZyBpcyBzaG93biBhcyBhIG1vZGFsIGRpYWxvZy4gT25jZSB0aGUgdXNlciBjb25maXJtcyB0aGUgZGlhbG9nLCBhbGwgdHJhbnNpdGlvbiBtZXNzYWdlc1xuXHQgKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIG1lc3NhZ2UsIGEgbGlzdCBvZiBtZXNzYWdlcyBpcyBzaG93bi4gVGhlIHVzZXJcblx0ICogY2FuIGZpbHRlciBvbiBtZXNzYWdlIHR5cGVzIGFuZCBjYW4gZGlzcGxheSBkZXRhaWxzIGFzIHdlbGwgYXMgdGhlIGxvbmcgdGV4dC4gSWYgdGhlcmUgaXMgb25lIG1lc3NhZ2UsXG5cdCAqIHRoZSBkaWFsb2cgaW1tZWRpYXRlbHkgc2hvd3MgdGhlIGRldGFpbHMgb2YgdGhlIG1lc3NhZ2UuIElmIHRoZXJlIGlzIGp1c3Qgb25lIHN1Y2Nlc3MgbWVzc2FnZSwgYSBtZXNzYWdlXG5cdCAqIHRvYXN0IGlzIHNob3duIGluc3RlYWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBtUGFyYW1ldGVycyBQUklWQVRFXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgZGlhbG9nLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlciNzaG93TWVzc2FnZURpYWxvZ1xuXHQgKiBAcHVibGljXG5cdCAqIEBleHBlcmltZW50YWwgQXMgb2YgdmVyc2lvbiAxLjkwLjBcblx0ICogQHNpbmNlIDEuOTAuMFxuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0c2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnM/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjdXN0b21NZXNzYWdlcyA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzID8gbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgOiB1bmRlZmluZWQsXG5cdFx0XHRvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdC8vIHNldCBpc0FjdGlvblBhcmFtZXRlckRpYWxvZyBvcGVuIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGRlY2lkZSB3aGV0aGVyIG1lc3NhZ2UgZGlhbG9nIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW4gJiYgb09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCB0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgYlNob3dCb3VuZE1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmNvbnRleHQgPyBtUGFyYW1ldGVycy5jb250ZXh0IDogdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBiRXRhZ01lc3NhZ2UgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5iSGFzRXRhZ01lc3NhZ2U7XG5cdFx0Ly8gcmVzZXQgIGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblxuXHRcdC8vIGNhbm5vdCBkbyB0aGlzIG9wZXJhdGlvbnMuanMgc2luY2UgaXQgaXMgbm90IGF3YXJlIG9mIHRoZSB2aWV3XG5cdFx0aWYgKG9PUEludGVybmFsQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gVE9ETzogZ3JlYXQgQVBJIC0gd2lsbCBiZSBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRcdG1lc3NhZ2VIYW5kbGluZ1xuXHRcdFx0XHRcdC5zaG93VW5ib3VuZE1lc3NhZ2VzKGN1c3RvbU1lc3NhZ2VzLCBvQmluZGluZ0NvbnRleHQsIGJFdGFnTWVzc2FnZSwgYlNob3dCb3VuZE1lc3NhZ2VzKVxuXHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHR9LCAwKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBZb3UgY2FuIHJlbW92ZSB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbiBtZXNzYWdlIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwgd2l0aCB0aGlzIG1ldGhvZC5cblx0ICogV2l0aCBldmVyeSB1c2VyIGludGVyYWN0aW9uIHRoYXQgY2F1c2VzIHNlcnZlciBjb21tdW5pY2F0aW9uIChsaWtlIGNsaWNraW5nIG9uIGFuIGFjdGlvbiwgY2hhbmdpbmcgZGF0YSksXG5cdCAqIHRoaXMgbWV0aG9kIHJlbW92ZXMgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24gbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbC5cblx0ICogQHBhcmFtIHtib29sZWFufSBba2VlcEJvdW5kTWVzc2FnZV0gQ2hlY2tzIGlmIHRoZSBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGFyZSBub3QgdG8gYmUgcmVtb3ZlZFxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIjcmVtb3Zlc1RyYW5zaXRpb25NZXNzYWdlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QFB1YmxpY1xuXHRyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoa2VlcEJvdW5kTWVzc2FnZT86IGJvb2xlYW4pIHtcblx0XHRpZiAoIWtlZXBCb3VuZE1lc3NhZ2UpIHtcblx0XHRcdG1lc3NhZ2VIYW5kbGluZy5yZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdH1cblx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHR9XG5cblx0X2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UobVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGNvbnN0IGFVbmJvdW5kTWVzc2FnZXMgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXMoKTtcblx0XHRjb25zdCBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IGFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IGJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPyBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXModHJ1ZSwgdHJ1ZSkgOiBbXTtcblx0XHRjb25zdCBhQ3VzdG9tTWVzc2FnZXMgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA/IG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzIDogW107XG5cdFx0Y29uc3QgYklzU3RpY2t5RWRpdE1vZGUgPSBDb21tb25VdGlscy5pc1N0aWNreUVkaXRNb2RlKHRoaXMuYmFzZS5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXG5cdFx0Ly8gVE9ETzogU3RpY2sgbW9kZSBjaGVjayBpcyBva2F5IGFzIGxvbmcgYXMgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIHVzZWQgd2l0aCBzYXAuZmUuY29yZSBhbmQgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50LlxuXHRcdC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29uc3VtZXIgb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZS5cblxuXHRcdC8vIFRoZSBtZXNzYWdlIHBhZ2UgY2FuIG9ubHkgc2hvdyAxIG1lc3NhZ2UgdG9kYXksIHNvIHdlIG5hdmlnYXRlIHRvIGl0IHdoZW4gOlxuXHRcdC8vIDEuIFRoZXJlIGFyZSBubyBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIHRvIHNob3csXG5cdFx0Ly8gMi4gVGhlcmUgYXJlIG5vIGN1c3RvbSBtZXNzYWdlcyB0byBzaG93LCAmXG5cdFx0Ly8gMy4gVGhlcmUgaXMgZXhhY3RseSAxIHVuYm91bmQgbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHN0YXR1c0NvZGU9NTAzIGFuZCByZXRyeS1BZnRlciBhdmFpbGFibGVcblx0XHQvLyA0LiByZXRyeUFmdGVyIGlzIGdyZWF0ZXIgdGhhbiAxMjAgc2Vjb25kc1xuXHRcdC8vXG5cdFx0Ly8gSW4gQWRkaXRpb24sIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgc3RpY2t5IHNlc3Npb24gd2lsbCBkZXN0cm95IHRoZSBzZXNzaW9uIHNvIHdlIGRvIG5vdCBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UgZm9yIG5vdy5cblx0XHQvLyBUT0RPOiBjaGVjayBpZiBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkb25lIGluIHN0aWNreSBlZGl0IG1vZGUuXG5cdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzRGF0YVJlY2VpdmVkRXJyb3IpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdHRpdGxlOiBtUGFyYW1ldGVycy50aXRsZSxcblx0XHRcdFx0ZGVzY3JpcHRpb246IG1QYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0IWJJc1N0aWNreUVkaXRNb2RlICYmXG5cdFx0XHQhYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0IWFDdXN0b21NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdChhVW5ib3VuZE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSB8fCAobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNJbml0aWFsTG9hZDUwM0Vycm9yKSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IG9NZXNzYWdlID0gYVVuYm91bmRNZXNzYWdlc1swXSxcblx0XHRcdFx0b1RlY2huaWNhbERldGFpbHMgPSBvTWVzc2FnZS5nZXRUZWNobmljYWxEZXRhaWxzKCk7XG5cdFx0XHRsZXQgc1JldHJ5QWZ0ZXJNZXNzYWdlO1xuXHRcdFx0aWYgKG9UZWNobmljYWxEZXRhaWxzICYmIG9UZWNobmljYWxEZXRhaWxzLmh0dHBTdGF0dXMgPT09IDUwMykge1xuXHRcdFx0XHRpZiAob1RlY2huaWNhbERldGFpbHMucmV0cnlBZnRlcikge1xuXHRcdFx0XHRcdGNvbnN0IGlTZWNvbmRzQmVmb3JlUmV0cnkgPSB0aGlzLl9nZXRTZWNvbmRzQmVmb3JlUmV0cnlBZnRlcihvVGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyKTtcblx0XHRcdFx0XHRpZiAoaVNlY29uZHNCZWZvcmVSZXRyeSA+IDEyMCkge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogRm9yIG5vdyBsZXQncyBrZWVwIGdldFJldHJ5QWZ0ZXJNZXNzYWdlIGluIG1lc3NhZ2VIYW5kbGluZyBiZWNhdXNlIGl0IGlzIG5lZWRlZCBhbHNvIGJ5IHRoZSBkaWFsb2cuXG5cdFx0XHRcdFx0XHQvLyBXZSBjYW4gcGxhbiB0byBtb3ZlIHRoaXMgYW5kIHRoZSBkaWFsb2cgbG9naWMgYm90aCB0byBtZXNzYWdlSGFuZGxlciBjb250cm9sbGVyIGV4dGVuc2lvbiBpZiByZXF1aXJlZC5cblx0XHRcdFx0XHRcdHNSZXRyeUFmdGVyTWVzc2FnZSA9IG1lc3NhZ2VIYW5kbGluZy5nZXRSZXRyeUFmdGVyTWVzc2FnZShvTWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzUmV0cnlBZnRlck1lc3NhZ2UgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0UmV0cnlBZnRlck1lc3NhZ2Uob01lc3NhZ2UpO1xuXHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM7XG5cdH1cblxuXHRfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIoZFJldHJ5QWZ0ZXI6IGFueSkge1xuXHRcdGNvbnN0IGRDdXJyZW50RGF0ZVRpbWUgPSBuZXcgRGF0ZSgpLFxuXHRcdFx0aUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZEN1cnJlbnREYXRlVGltZS5nZXRUaW1lKCksXG5cdFx0XHRpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgPSBkUmV0cnlBZnRlci5nZXRUaW1lKCksXG5cdFx0XHRpU2Vjb25kc0JlZm9yZVJldHJ5ID0gKGlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyAtIGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcykgLyAxMDAwO1xuXHRcdHJldHVybiBpU2Vjb25kc0JlZm9yZVJldHJ5O1xuXHR9XG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgcGFnZSBvciBhIG1lc3NhZ2UgZGlhbG9nIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqIEBwYXJhbSBbbVBhcmFtZXRlcnNdXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgbWVzc2FnZSBkaWFsb2cgb3Igd2hlbiBuYXZpZ2F0aW9uIHRvIHRoZSBtZXNzYWdlIHBhZ2UgaXMgY29tcGxldGUuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQdWJsaWNcblx0QEZpbmFsXG5cdHNob3dNZXNzYWdlcyhtUGFyYW1ldGVycz86IGFueSkge1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzOiBhbnk7XG5cdFx0aWYgKCFvQXBwQ29tcG9uZW50Ll9pc0ZjbEVuYWJsZWQoKSkge1xuXHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHRoaXMuX2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UobVBhcmFtZXRlcnMpO1xuXHRcdH1cblx0XHRpZiAobU1lc3NhZ2VQYWdlUGFyYW1ldGVycykge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBwYWdlLlxuXHRcdFx0Ly8gaGFuZGxlciBiZWZvcmUgcGFnZSBuYXZpZ2F0aW9uIGlzIHRyaWdnZXJlZCwgZm9yIGV4YW1wbGUgdG8gY2xvc2UgdGhlIGFjdGlvbiBwYXJhbWV0ZXIgZGlhbG9nXG5cdFx0XHRtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjayAmJiBtUGFyYW1ldGVycy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjaygpO1xuXG5cdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzLmhhbmRsZVNoZWxsQmFjayA9ICEobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuc2hlbGxCYWNrKTtcblx0XHRcdC8vIFRPRE86IFVzZSBJbGx1c3RyYXRlZCBtZXNzYWdlIGluc3RlYWQgb2Ygbm9ybWFsIG1lc3NhZ2UgcGFnZVxuXHRcdFx0Ly8gVE9ETzogUmV0dXJuIHZhbHVlIG5lZWRzIHRvIHByb3ZpZGVkIGJ1dCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHByaXZhdGUgZm9yIG5vdyBoZW5jZSB3ZSBjYW4gc2tpcCB0aGlzLlxuXHRcdFx0dGhpcy5yZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoKTtcblx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IHNhcC51aS5nZXRDb3JlKCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikgYXMgUmVzb3VyY2VCdW5kbGU7XG5cdFx0XHRpZiAodGhpcy5iYXNlLl9yb3V0aW5nKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0XHRcdC8vIHdlIGhhdmUgdG8gc2V0IGEgdGltZW91dCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZXNcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdC8vIFRPRE86IGdyZWF0IEFQSSAtIHdpbGwgYmUgY2hhbmdlZCBsYXRlclxuXHRcdFx0XHRcdFx0dGhpcy5iYXNlLl9yb3V0aW5nXG5cdFx0XHRcdFx0XHRcdC5uYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UoXG5cdFx0XHRcdFx0XHRcdFx0bVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNEYXRhUmVjZWl2ZWRFcnJvclxuXHRcdFx0XHRcdFx0XHRcdFx0PyBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0RBVEFfUkVDRUlWRURfRVJST1JcIilcblx0XHRcdFx0XHRcdFx0XHRcdDogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfNTAzX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdFx0XHQuY2F0Y2gocmVqZWN0KTtcblx0XHRcdFx0XHR9LCAwKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgZGlhbG9nXG5cdFx0XHRyZXR1cm4gdGhpcy5zaG93TWVzc2FnZURpYWxvZyhtUGFyYW1ldGVycyk7XG5cdFx0fVxuXHR9XG59XG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlSGFuZGxlcjtcbiJdfQ==
225
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1lc3NhZ2VIYW5kbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJwcml2YXRlRXh0ZW5zaW9uIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiSW5zdGVhZCIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwiZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2ciLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiY3VzdG9tTWVzc2FnZXMiLCJ1bmRlZmluZWQiLCJvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsImJFdGFnTWVzc2FnZSIsImJIYXNFdGFnTWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJlcnJvclRhcmdldHNJbkFQTSIsInRoZW4iLCJjYXRjaCIsInJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyIsImtlZXBCb3VuZE1lc3NhZ2UiLCJyZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsInJlbW92ZVVuYm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJfY2hlY2tOYXZpZ2F0aW9uVG9NZXNzYWdlUGFnZSIsImFVbmJvdW5kTWVzc2FnZXMiLCJnZXRNZXNzYWdlcyIsImJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJhQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJhQ3VzdG9tTWVzc2FnZXMiLCJiSXNTdGlja3lFZGl0TW9kZSIsIkNvbW1vblV0aWxzIiwiaXNTdGlja3lFZGl0TW9kZSIsIm1NZXNzYWdlUGFnZVBhcmFtZXRlcnMiLCJpc0RhdGFSZWNlaXZlZEVycm9yIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIm5hdmlnYXRlQmFja1RvT3JpZ2luIiwibGVuZ3RoIiwiaXNJbml0aWFsTG9hZDUwM0Vycm9yIiwib01lc3NhZ2UiLCJvVGVjaG5pY2FsRGV0YWlscyIsImdldFRlY2huaWNhbERldGFpbHMiLCJzUmV0cnlBZnRlck1lc3NhZ2UiLCJodHRwU3RhdHVzIiwicmV0cnlBZnRlciIsImlTZWNvbmRzQmVmb3JlUmV0cnkiLCJfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIiLCJnZXRSZXRyeUFmdGVyTWVzc2FnZSIsImdldE1lc3NhZ2UiLCJkUmV0cnlBZnRlciIsImRDdXJyZW50RGF0ZVRpbWUiLCJEYXRlIiwiaUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzIiwiZ2V0VGltZSIsImlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsInNob3dNZXNzYWdlcyIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJfaXNGY2xFbmFibGVkIiwibWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2siLCJoYW5kbGVTaGVsbEJhY2siLCJzaGVsbEJhY2siLCJvUmVzb3VyY2VCdW5kbGUiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UiLCJnZXRUZXh0IiwiQ29udHJvbGxlckV4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxjLFdBRExDLGNBQWMsQ0FBQyxpREFBRCxDLFVBZWJDLGdCQUFnQixFLFVBQ2hCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxPQUFuQixDLFVBcUJWQyxlQUFlLEUsVUFDZkMsY0FBYyxFLFVBcUNkRCxlQUFlLEUsVUFnRmZBLGVB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RUFBNEI7QUFDM0I7QUFDQTtBQUNBcEMsUUFBQUEsV0FBVyxJQUFJQSxXQUFXLENBQUMrRCw2QkFBM0IsSUFBNEQvRCxXQUFXLENBQUMrRCw2QkFBWixFQUE1RDtBQUVBM0IsUUFBQUEsc0JBQXNCLENBQUM0QixlQUF2QixHQUF5QyxFQUFFaEUsV0FBVyxJQUFJQSxXQUFXLENBQUNpRSxTQUE3QixDQUF6QyxDQUwyQixDQU0zQjtBQUNBOztBQUNBLGFBQUsxQyx3QkFBTDtBQUNBLFlBQU0yQyxlQUFlLEdBQUlDLElBQUQsQ0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUF4Qjs7QUFDQSxZQUFJLEtBQUtoRSxJQUFMLENBQVVpRSxRQUFkLEVBQXdCO0FBQ3ZCLGlCQUFPLElBQUl2RCxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFlQyxNQUFmLEVBQStCO0FBQ2pEO0FBQ0FDLFlBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2hCO0FBQ0EsY0FBQSxLQUFJLENBQUNiLElBQUwsQ0FBVWlFLFFBQVYsQ0FDRUMscUJBREYsQ0FFRXRFLFdBQVcsSUFBSUEsV0FBVyxDQUFDcUMsbUJBQTNCLEdBQ0c2QixlQUFlLENBQUNLLE9BQWhCLENBQXdCLG9DQUF4QixDQURILEdBRUdMLGVBQWUsQ0FBQ0ssT0FBaEIsQ0FBd0Isb0NBQXhCLENBSkwsRUFLRW5DLHNCQUxGLEVBT0VmLElBUEYsQ0FPT04sT0FQUCxFQVFFTyxLQVJGLENBUVFOLE1BUlI7QUFTQSxhQVhTLEVBV1AsQ0FYTyxDQUFWO0FBWUEsV0FkTSxDQUFQO0FBZUE7QUFDRCxPQTNCRCxNQTJCTztBQUNOO0FBQ0EsZUFBTyxLQUFLakIsaUJBQUwsQ0FBdUJDLFdBQXZCLENBQVA7QUFDQTtBQUNELEs7OztJQWpNMkJ3RSxtQjtTQW1NZGxGLGMiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBtZXNzYWdlSGFuZGxpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL21lc3NhZ2VIYW5kbGVyL21lc3NhZ2VIYW5kbGluZ1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBwcml2YXRlRXh0ZW5zaW9uLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgeyBDb3JlRXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBtZXNzYWdlIGhhbmRsaW5nLlxuICpcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBleHBlcmltZW50YWwgQXMgb2YgdmVyc2lvbiAxLjkwLjBcbiAqIEBzaW5jZSAxLjkwLjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXJcIilcbmNsYXNzIE1lc3NhZ2VIYW5kbGVyIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByb3RlY3RlZCBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IERldGVybWluZXMgd2hldGhlciBvciBub3QgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0Z2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2coKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogU2hvd3MgYSBtZXNzYWdlIGRpYWxvZyB3aXRoIHRyYW5zaXRpb24gbWVzc2FnZXMgaWYgdGhlcmUgYXJlIGFueS5cblx0ICogVGhlIG1lc3NhZ2UgZGlhbG9nIGlzIHNob3duIGFzIGEgbW9kYWwgZGlhbG9nLiBPbmNlIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBkaWFsb2csIGFsbCB0cmFuc2l0aW9uIG1lc3NhZ2VzXG5cdCAqIGFyZSByZW1vdmVkIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwuIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgbWVzc2FnZSwgYSBsaXN0IG9mIG1lc3NhZ2VzIGlzIHNob3duLiBUaGUgdXNlclxuXHQgKiBjYW4gZmlsdGVyIG9uIG1lc3NhZ2UgdHlwZXMgYW5kIGNhbiBkaXNwbGF5IGRldGFpbHMgYXMgd2VsbCBhcyB0aGUgbG9uZyB0ZXh0LiBJZiB0aGVyZSBpcyBvbmUgbWVzc2FnZSxcblx0ICogdGhlIGRpYWxvZyBpbW1lZGlhdGVseSBzaG93cyB0aGUgZGV0YWlscyBvZiB0aGUgbWVzc2FnZS4gSWYgdGhlcmUgaXMganVzdCBvbmUgc3VjY2VzcyBtZXNzYWdlLCBhIG1lc3NhZ2Vcblx0ICogdG9hc3QgaXMgc2hvd24gaW5zdGVhZC5cblx0ICpcblx0ICogQHBhcmFtIG1QYXJhbWV0ZXJzIFBSSVZBVEVcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXIgY2xvc2VzIHRoZSBkaWFsb2cuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1lc3NhZ2VIYW5kbGVyI3Nob3dNZXNzYWdlRGlhbG9nXG5cdCAqIEBwdWJsaWNcblx0ICogQGV4cGVyaW1lbnRhbCBBcyBvZiB2ZXJzaW9uIDEuOTAuMFxuXHQgKiBAc2luY2UgMS45MC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0c2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnM/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjdXN0b21NZXNzYWdlcyA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzID8gbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgOiB1bmRlZmluZWQsXG5cdFx0XHRvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdC8vIHNldCBpc0FjdGlvblBhcmFtZXRlckRpYWxvZyBvcGVuIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGRlY2lkZSB3aGV0aGVyIG1lc3NhZ2UgZGlhbG9nIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW4gJiYgb09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCB0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgYlNob3dCb3VuZE1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmNvbnRleHQgPyBtUGFyYW1ldGVycy5jb250ZXh0IDogdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBiRXRhZ01lc3NhZ2UgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5iSGFzRXRhZ01lc3NhZ2U7XG5cdFx0Ly8gcmVzZXQgIGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblxuXHRcdC8vIGNhbm5vdCBkbyB0aGlzIG9wZXJhdGlvbnMuanMgc2luY2UgaXQgaXMgbm90IGF3YXJlIG9mIHRoZSB2aWV3XG5cdFx0aWYgKG9PUEludGVybmFsQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpIHtcblx0XHRcdC8vIHdlIGhhdmUgdG8gc2V0IGEgdGltZW91dCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZXNcblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyBUT0RPOiBncmVhdCBBUEkgLSB3aWxsIGJlIGNoYW5nZWQgbGF0ZXJcblx0XHRcdFx0bWVzc2FnZUhhbmRsaW5nXG5cdFx0XHRcdFx0LnNob3dVbmJvdW5kTWVzc2FnZXMoY3VzdG9tTWVzc2FnZXMsIG9CaW5kaW5nQ29udGV4dCwgYkV0YWdNZXNzYWdlLCBiU2hvd0JvdW5kTWVzc2FnZXMsIG1QYXJhbWV0ZXJzPy5lcnJvclRhcmdldHNJbkFQTSlcblx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0fSwgMCk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogWW91IGNhbiByZW1vdmUgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24gbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsIHdpdGggdGhpcyBtZXRob2QuXG5cdCAqIFdpdGggZXZlcnkgdXNlciBpbnRlcmFjdGlvbiB0aGF0IGNhdXNlcyBzZXJ2ZXIgY29tbXVuaWNhdGlvbiAobGlrZSBjbGlja2luZyBvbiBhbiBhY3Rpb24sIGNoYW5naW5nIGRhdGEpLFxuXHQgKiB0aGlzIG1ldGhvZCByZW1vdmVzIHRoZSBleGlzdGluZyB0cmFuc2l0aW9uIG1lc3NhZ2VzIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gW2tlZXBCb3VuZE1lc3NhZ2VdIENoZWNrcyBpZiB0aGUgYm91bmQgdHJhbnNpdGlvbiBtZXNzYWdlcyBhcmUgbm90IHRvIGJlIHJlbW92ZWRcblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1lc3NhZ2VIYW5kbGVyI3JlbW92ZXNUcmFuc2l0aW9uTWVzc2FnZXNcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoa2VlcEJvdW5kTWVzc2FnZT86IGJvb2xlYW4pIHtcblx0XHRpZiAoIWtlZXBCb3VuZE1lc3NhZ2UpIHtcblx0XHRcdG1lc3NhZ2VIYW5kbGluZy5yZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdH1cblx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHR9XG5cblx0X2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UobVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGNvbnN0IGFVbmJvdW5kTWVzc2FnZXMgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXMoKTtcblx0XHRjb25zdCBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IGFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IGJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPyBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXModHJ1ZSwgdHJ1ZSkgOiBbXTtcblx0XHRjb25zdCBhQ3VzdG9tTWVzc2FnZXMgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA/IG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzIDogW107XG5cdFx0Y29uc3QgYklzU3RpY2t5RWRpdE1vZGUgPSBDb21tb25VdGlscy5pc1N0aWNreUVkaXRNb2RlKHRoaXMuYmFzZS5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXG5cdFx0Ly8gVE9ETzogU3RpY2sgbW9kZSBjaGVjayBpcyBva2F5IGFzIGxvbmcgYXMgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIHVzZWQgd2l0aCBzYXAuZmUuY29yZSBhbmQgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50LlxuXHRcdC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29uc3VtZXIgb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZS5cblxuXHRcdC8vIFRoZSBtZXNzYWdlIHBhZ2UgY2FuIG9ubHkgc2hvdyAxIG1lc3NhZ2UgdG9kYXksIHNvIHdlIG5hdmlnYXRlIHRvIGl0IHdoZW4gOlxuXHRcdC8vIDEuIFRoZXJlIGFyZSBubyBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIHRvIHNob3csXG5cdFx0Ly8gMi4gVGhlcmUgYXJlIG5vIGN1c3RvbSBtZXNzYWdlcyB0byBzaG93LCAmXG5cdFx0Ly8gMy4gVGhlcmUgaXMgZXhhY3RseSAxIHVuYm91bmQgbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHN0YXR1c0NvZGU9NTAzIGFuZCByZXRyeS1BZnRlciBhdmFpbGFibGVcblx0XHQvLyA0LiByZXRyeUFmdGVyIGlzIGdyZWF0ZXIgdGhhbiAxMjAgc2Vjb25kc1xuXHRcdC8vXG5cdFx0Ly8gSW4gQWRkaXRpb24sIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgc3RpY2t5IHNlc3Npb24gd2lsbCBkZXN0cm95IHRoZSBzZXNzaW9uIHNvIHdlIGRvIG5vdCBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UgZm9yIG5vdy5cblx0XHQvLyBUT0RPOiBjaGVjayBpZiBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkb25lIGluIHN0aWNreSBlZGl0IG1vZGUuXG5cdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzRGF0YVJlY2VpdmVkRXJyb3IpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdHRpdGxlOiBtUGFyYW1ldGVycy50aXRsZSxcblx0XHRcdFx0ZGVzY3JpcHRpb246IG1QYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0IWJJc1N0aWNreUVkaXRNb2RlICYmXG5cdFx0XHQhYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0IWFDdXN0b21NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdChhVW5ib3VuZE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSB8fCAobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNJbml0aWFsTG9hZDUwM0Vycm9yKSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IG9NZXNzYWdlID0gYVVuYm91bmRNZXNzYWdlc1swXSxcblx0XHRcdFx0b1RlY2huaWNhbERldGFpbHMgPSBvTWVzc2FnZS5nZXRUZWNobmljYWxEZXRhaWxzKCk7XG5cdFx0XHRsZXQgc1JldHJ5QWZ0ZXJNZXNzYWdlO1xuXHRcdFx0aWYgKG9UZWNobmljYWxEZXRhaWxzICYmIG9UZWNobmljYWxEZXRhaWxzLmh0dHBTdGF0dXMgPT09IDUwMykge1xuXHRcdFx0XHRpZiAob1RlY2huaWNhbERldGFpbHMucmV0cnlBZnRlcikge1xuXHRcdFx0XHRcdGNvbnN0IGlTZWNvbmRzQmVmb3JlUmV0cnkgPSB0aGlzLl9nZXRTZWNvbmRzQmVmb3JlUmV0cnlBZnRlcihvVGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyKTtcblx0XHRcdFx0XHRpZiAoaVNlY29uZHNCZWZvcmVSZXRyeSA+IDEyMCkge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogRm9yIG5vdyBsZXQncyBrZWVwIGdldFJldHJ5QWZ0ZXJNZXNzYWdlIGluIG1lc3NhZ2VIYW5kbGluZyBiZWNhdXNlIGl0IGlzIG5lZWRlZCBhbHNvIGJ5IHRoZSBkaWFsb2cuXG5cdFx0XHRcdFx0XHQvLyBXZSBjYW4gcGxhbiB0byBtb3ZlIHRoaXMgYW5kIHRoZSBkaWFsb2cgbG9naWMgYm90aCB0byBtZXNzYWdlSGFuZGxlciBjb250cm9sbGVyIGV4dGVuc2lvbiBpZiByZXF1aXJlZC5cblx0XHRcdFx0XHRcdHNSZXRyeUFmdGVyTWVzc2FnZSA9IG1lc3NhZ2VIYW5kbGluZy5nZXRSZXRyeUFmdGVyTWVzc2FnZShvTWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzUmV0cnlBZnRlck1lc3NhZ2UgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0UmV0cnlBZnRlck1lc3NhZ2Uob01lc3NhZ2UpO1xuXHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM7XG5cdH1cblxuXHRfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIoZFJldHJ5QWZ0ZXI6IGFueSkge1xuXHRcdGNvbnN0IGRDdXJyZW50RGF0ZVRpbWUgPSBuZXcgRGF0ZSgpLFxuXHRcdFx0aUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZEN1cnJlbnREYXRlVGltZS5nZXRUaW1lKCksXG5cdFx0XHRpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgPSBkUmV0cnlBZnRlci5nZXRUaW1lKCksXG5cdFx0XHRpU2Vjb25kc0JlZm9yZVJldHJ5ID0gKGlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyAtIGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcykgLyAxMDAwO1xuXHRcdHJldHVybiBpU2Vjb25kc0JlZm9yZVJldHJ5O1xuXHR9XG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgcGFnZSBvciBhIG1lc3NhZ2UgZGlhbG9nIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqIEBwYXJhbSBbbVBhcmFtZXRlcnNdXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgbWVzc2FnZSBkaWFsb2cgb3Igd2hlbiBuYXZpZ2F0aW9uIHRvIHRoZSBtZXNzYWdlIHBhZ2UgaXMgY29tcGxldGUuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRzaG93TWVzc2FnZXMobVBhcmFtZXRlcnM/OiBhbnkpIHtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuZ2V0VmlldygpKTtcblx0XHRsZXQgbU1lc3NhZ2VQYWdlUGFyYW1ldGVyczogYW55O1xuXHRcdGlmICghb0FwcENvbXBvbmVudC5faXNGY2xFbmFibGVkKCkpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB0aGlzLl9jaGVja05hdmlnYXRpb25Ub01lc3NhZ2VQYWdlKG1QYXJhbWV0ZXJzKTtcblx0XHR9XG5cdFx0aWYgKG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMpIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgcGFnZS5cblx0XHRcdC8vIGhhbmRsZXIgYmVmb3JlIHBhZ2UgbmF2aWdhdGlvbiBpcyB0cmlnZ2VyZWQsIGZvciBleGFtcGxlIHRvIGNsb3NlIHRoZSBhY3Rpb24gcGFyYW1ldGVyIGRpYWxvZ1xuXHRcdFx0bVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMubWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2sgJiYgbVBhcmFtZXRlcnMubWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2soKTtcblxuXHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycy5oYW5kbGVTaGVsbEJhY2sgPSAhKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLnNoZWxsQmFjayk7XG5cdFx0XHQvLyBUT0RPOiBVc2UgSWxsdXN0cmF0ZWQgbWVzc2FnZSBpbnN0ZWFkIG9mIG5vcm1hbCBtZXNzYWdlIHBhZ2Vcblx0XHRcdC8vIFRPRE86IFJldHVybiB2YWx1ZSBuZWVkcyB0byBwcm92aWRlZCBidXQgc2luY2UgdGhpcyBmdW5jdGlvbiBpcyBwcml2YXRlIGZvciBub3cgaGVuY2Ugd2UgY2FuIHNraXAgdGhpcy5cblx0XHRcdHRoaXMucmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzKCk7XG5cdFx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRcdFx0aWYgKHRoaXMuYmFzZS5fcm91dGluZykge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSwgcmVqZWN0OiBhbnkpID0+IHtcblx0XHRcdFx0XHQvLyB3ZSBoYXZlIHRvIHNldCBhIHRpbWVvdXQgdG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzXG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBncmVhdCBBUEkgLSB3aWxsIGJlIGNoYW5nZWQgbGF0ZXJcblx0XHRcdFx0XHRcdHRoaXMuYmFzZS5fcm91dGluZ1xuXHRcdFx0XHRcdFx0XHQubmF2aWdhdGVUb01lc3NhZ2VQYWdlKFxuXHRcdFx0XHRcdFx0XHRcdG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzRGF0YVJlY2VpdmVkRXJyb3Jcblx0XHRcdFx0XHRcdFx0XHRcdD8gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9EQVRBX1JFQ0VJVkVEX0VSUk9SXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFXzUwM19USVRMRVwiKSxcblx0XHRcdFx0XHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0LnRoZW4ocmVzb2x2ZSlcblx0XHRcdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHRcdFx0fSwgMCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBuYXZpZ2F0ZSB0byBtZXNzYWdlIGRpYWxvZ1xuXHRcdFx0cmV0dXJuIHRoaXMuc2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnMpO1xuXHRcdH1cblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgTWVzc2FnZUhhbmRsZXI7XG4iXX0=
@@ -1,12 +1,12 @@
1
- import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
2
- import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
3
- import messageHandling from "sap/fe/core/actions/messageHandling";
4
1
  import CommonUtils from "sap/fe/core/CommonUtils";
5
- import ControllerExtensionMetadata from "sap/fe/core/controllerextensions/ControllerExtensionMetadata";
6
- import { Extensible, Final, Private, Public, UI5Class } from "sap/fe/core/helpers/ClassSupport";
7
- import ResourceBundle from "sap/base/i18n/ResourceBundle";
8
- import PageController from "sap/fe/core/PageController";
2
+ import messageHandling from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
3
+ import { defineUI5Class, extensible, finalExtension, privateExtension, publicExtension } from "sap/fe/core/helpers/ClassSupport";
9
4
  import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
5
+ import PageController from "sap/fe/core/PageController";
6
+ import Core from "sap/ui/core/Core";
7
+ import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
8
+ import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
9
+ import { CoreEx } from "types/extension_types";
10
10
 
11
11
  /**
12
12
  * A controller extension offering message handling.
@@ -16,19 +16,9 @@ import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
16
16
  * @experimental As of version 1.90.0
17
17
  * @since 1.90.0
18
18
  */
19
- @UI5Class("sap.fe.core.controllerextensions.MessageHandler", ControllerExtensionMetadata)
19
+ @defineUI5Class("sap.fe.core.controllerextensions.MessageHandler")
20
20
  class MessageHandler extends ControllerExtension {
21
- /**
22
- * @private
23
- * @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
24
- * @function
25
- */
26
- /**
27
- * @private
28
- * @name sap.fe.core.controllerextensions.MessageHandler.extend
29
- * @function
30
- */
31
- private base!: PageController;
21
+ protected base!: PageController;
32
22
  /**
33
23
  * Determines whether or not bound messages are shown in the message dialog.
34
24
  *
@@ -41,8 +31,8 @@ class MessageHandler extends ControllerExtension {
41
31
  * @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
42
32
  * @private
43
33
  */
44
- @Private
45
- @Extensible(OverrideExecution.Instead)
34
+ @privateExtension()
35
+ @extensible(OverrideExecution.Instead)
46
36
  getShowBoundMessagesInMessageDialog() {
47
37
  return true;
48
38
  }
@@ -63,8 +53,8 @@ class MessageHandler extends ControllerExtension {
63
53
  * @experimental As of version 1.90.0
64
54
  * @since 1.90.0
65
55
  */
66
- @Public
67
- @Final
56
+ @publicExtension()
57
+ @finalExtension()
68
58
  showMessageDialog(mParameters?: any): Promise<void> {
69
59
  const customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
70
60
  oOPInternalBindingContext = this.base.getView().getBindingContext("internal") as InternalModelContext;
@@ -80,12 +70,12 @@ class MessageHandler extends ControllerExtension {
80
70
  if (oOPInternalBindingContext) {
81
71
  oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
82
72
  }
83
- return new Promise(function(resolve: (value: any) => void, reject: (reason?: any) => void) {
73
+ return new Promise(function (resolve: (value: any) => void, reject: (reason?: any) => void) {
84
74
  // we have to set a timeout to be able to access the most recent messages
85
- setTimeout(function() {
75
+ setTimeout(function () {
86
76
  // TODO: great API - will be changed later
87
77
  messageHandling
88
- .showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages)
78
+ .showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages, mParameters?.errorTargetsInAPM)
89
79
  .then(resolve)
90
80
  .catch(reject);
91
81
  }, 0);
@@ -101,7 +91,7 @@ class MessageHandler extends ControllerExtension {
101
91
  * @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
102
92
  * @private
103
93
  */
104
- @Public
94
+ @publicExtension()
105
95
  removeTransitionMessages(keepBoundMessage?: boolean) {
106
96
  if (!keepBoundMessage) {
107
97
  messageHandling.removeBoundTransitionMessages();
@@ -181,8 +171,8 @@ class MessageHandler extends ControllerExtension {
181
171
  * to be shown, the promise is resolved immediately
182
172
  * @private
183
173
  */
184
- @Public
185
- @Final
174
+ @publicExtension()
175
+ @finalExtension()
186
176
  showMessages(mParameters?: any) {
187
177
  const oAppComponent = CommonUtils.getAppComponent(this.getView());
188
178
  let mMessagePageParameters: any;
@@ -198,7 +188,7 @@ class MessageHandler extends ControllerExtension {
198
188
  // TODO: Use Illustrated message instead of normal message page
199
189
  // TODO: Return value needs to provided but since this function is private for now hence we can skip this.
200
190
  this.removeTransitionMessages();
201
- const oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
191
+ const oResourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
202
192
  if (this.base._routing) {
203
193
  return new Promise((resolve: any, reject: any) => {
204
194
  // we have to set a timeout to be able to access the most recent messages