@sapui5/sap.fe.core 1.102.2 → 1.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +73 -30
  4. package/src/sap/fe/core/AppComponent.ts +65 -43
  5. package/src/sap/fe/core/AppStateHandler.js +82 -70
  6. package/src/sap/fe/core/AppStateHandler.ts +32 -37
  7. package/src/sap/fe/core/BaseController.js +11 -9
  8. package/src/sap/fe/core/BaseController.ts +15 -13
  9. package/src/sap/fe/core/CommonUtils.js +227 -126
  10. package/src/sap/fe/core/CommonUtils.ts +240 -163
  11. package/src/sap/fe/core/ExtensionAPI.js +24 -27
  12. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  13. package/src/sap/fe/core/PageController.js +4 -4
  14. package/src/sap/fe/core/PageController.ts +4 -5
  15. package/src/sap/fe/core/TemplateComponent.js +1 -1
  16. package/src/sap/fe/core/TemplateComponent.ts +6 -6
  17. package/src/sap/fe/core/TemplateModel.js +1 -1
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +585 -210
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +246 -96
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +379 -330
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +253 -245
  29. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  30. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  31. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +101 -74
  32. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +69 -79
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +67 -67
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +85 -77
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +103 -99
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  39. package/src/sap/fe/core/controllerextensions/MassEdit.js +9 -9
  40. package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
  41. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  42. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
  43. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  44. package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
  45. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  46. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  47. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  48. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  49. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  50. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  51. package/src/sap/fe/core/controllerextensions/Share.js +170 -139
  52. package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
  53. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  54. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  55. package/src/sap/fe/core/controllerextensions/ViewState.js +200 -131
  56. package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +11 -10
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
  61. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  62. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  63. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  64. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  65. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +190 -141
  66. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +258 -210
  67. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +183 -125
  68. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +213 -156
  69. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +164 -140
  70. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +180 -150
  71. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  72. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  73. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +71 -41
  74. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +102 -82
  75. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +61 -71
  76. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +56 -64
  77. package/src/sap/fe/core/controls/Any.js +9 -5
  78. package/src/sap/fe/core/controls/Any.ts +10 -4
  79. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  80. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  81. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  82. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  83. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  84. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  85. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  86. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  87. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  88. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  89. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  91. package/src/sap/fe/core/controls/FileWrapper.js +7 -2
  92. package/src/sap/fe/core/controls/FileWrapper.ts +15 -11
  93. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  94. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  95. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  96. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  97. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  98. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  99. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  100. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  101. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  102. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  103. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  104. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
  105. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
  106. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  107. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  108. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  109. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  110. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  111. package/src/sap/fe/core/converters/ConverterContext.ts +52 -61
  112. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  113. package/src/sap/fe/core/converters/ManifestSettings.ts +17 -15
  114. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  115. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  116. package/src/sap/fe/core/converters/MetaModelConverter.js +64 -35
  117. package/src/sap/fe/core/converters/MetaModelConverter.ts +154 -129
  118. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  119. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  120. package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
  121. package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
  122. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -33
  127. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  128. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  129. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +30 -28
  130. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -61
  131. package/src/sap/fe/core/converters/controls/Common/Form.js +27 -28
  132. package/src/sap/fe/core/converters/controls/Common/Form.ts +44 -57
  133. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  134. package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
  135. package/src/sap/fe/core/converters/controls/Common/Table.js +181 -197
  136. package/src/sap/fe/core/converters/controls/Common/Table.ts +251 -280
  137. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  138. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  139. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  140. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +65 -59
  141. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  142. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  143. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  144. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  145. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  146. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  147. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +77 -73
  148. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +101 -97
  149. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  150. package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
  151. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  152. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  153. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  154. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  155. package/src/sap/fe/core/converters/helpers/ID.js +48 -46
  156. package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
  157. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  158. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  159. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  160. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
  161. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  162. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  163. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  164. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  165. package/src/sap/fe/core/converters/templates/ListReportConverter.js +55 -42
  166. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +81 -66
  167. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  168. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  169. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  170. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  171. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  172. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  173. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  174. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  175. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  176. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  177. package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
  178. package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
  179. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  180. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  181. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  182. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  183. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  184. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  185. package/src/sap/fe/core/helpers/BindingToolkit.js +1832 -0
  186. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +396 -269
  187. package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
  188. package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
  189. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  190. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  191. package/src/sap/fe/core/helpers/EditState.js +1 -6
  192. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  193. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  194. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  195. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  196. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  197. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  198. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  199. package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
  200. package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
  201. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  202. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  203. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  204. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  205. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  206. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  207. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  208. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  209. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  210. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  211. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  212. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  213. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  214. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  215. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  216. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  217. package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
  218. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
  219. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  220. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  221. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  222. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  223. package/src/sap/fe/core/library.js +42 -3
  224. package/src/sap/fe/core/library.ts +38 -0
  225. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  226. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  227. package/src/sap/fe/core/messagebundle.properties +39 -63
  228. package/src/sap/fe/core/messagebundle_ar.properties +25 -39
  229. package/src/sap/fe/core/messagebundle_bg.properties +25 -39
  230. package/src/sap/fe/core/messagebundle_ca.properties +25 -39
  231. package/src/sap/fe/core/messagebundle_cs.properties +25 -39
  232. package/src/sap/fe/core/messagebundle_cy.properties +25 -39
  233. package/src/sap/fe/core/messagebundle_da.properties +25 -39
  234. package/src/sap/fe/core/messagebundle_de.properties +25 -39
  235. package/src/sap/fe/core/messagebundle_el.properties +26 -40
  236. package/src/sap/fe/core/messagebundle_en.properties +25 -39
  237. package/src/sap/fe/core/messagebundle_en_GB.properties +25 -39
  238. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -39
  239. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +25 -39
  240. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +26 -18
  241. package/src/sap/fe/core/messagebundle_es.properties +27 -41
  242. package/src/sap/fe/core/messagebundle_es_MX.properties +25 -39
  243. package/src/sap/fe/core/messagebundle_et.properties +25 -39
  244. package/src/sap/fe/core/messagebundle_fi.properties +25 -39
  245. package/src/sap/fe/core/messagebundle_fr.properties +26 -40
  246. package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -39
  247. package/src/sap/fe/core/messagebundle_hi.properties +25 -39
  248. package/src/sap/fe/core/messagebundle_hr.properties +25 -39
  249. package/src/sap/fe/core/messagebundle_hu.properties +25 -39
  250. package/src/sap/fe/core/messagebundle_id.properties +25 -39
  251. package/src/sap/fe/core/messagebundle_it.properties +41 -55
  252. package/src/sap/fe/core/messagebundle_iw.properties +25 -39
  253. package/src/sap/fe/core/messagebundle_ja.properties +25 -39
  254. package/src/sap/fe/core/messagebundle_kk.properties +25 -39
  255. package/src/sap/fe/core/messagebundle_ko.properties +30 -44
  256. package/src/sap/fe/core/messagebundle_lt.properties +25 -39
  257. package/src/sap/fe/core/messagebundle_lv.properties +25 -39
  258. package/src/sap/fe/core/messagebundle_ms.properties +25 -39
  259. package/src/sap/fe/core/messagebundle_nl.properties +27 -41
  260. package/src/sap/fe/core/messagebundle_no.properties +25 -39
  261. package/src/sap/fe/core/messagebundle_pl.properties +26 -40
  262. package/src/sap/fe/core/messagebundle_pt.properties +26 -40
  263. package/src/sap/fe/core/messagebundle_pt_PT.properties +25 -39
  264. package/src/sap/fe/core/messagebundle_ro.properties +25 -39
  265. package/src/sap/fe/core/messagebundle_ru.properties +25 -39
  266. package/src/sap/fe/core/messagebundle_sh.properties +25 -39
  267. package/src/sap/fe/core/messagebundle_sk.properties +25 -39
  268. package/src/sap/fe/core/messagebundle_sl.properties +25 -39
  269. package/src/sap/fe/core/messagebundle_sv.properties +25 -39
  270. package/src/sap/fe/core/messagebundle_th.properties +25 -39
  271. package/src/sap/fe/core/messagebundle_tr.properties +25 -39
  272. package/src/sap/fe/core/messagebundle_uk.properties +25 -39
  273. package/src/sap/fe/core/messagebundle_vi.properties +25 -39
  274. package/src/sap/fe/core/messagebundle_zh_CN.properties +25 -39
  275. package/src/sap/fe/core/messagebundle_zh_TW.properties +25 -39
  276. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  277. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  278. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +97 -69
  279. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +68 -69
  280. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  281. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  282. package/src/sap/fe/core/services/NavigationServiceFactory.js +61 -49
  283. package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
  284. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  285. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  286. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  287. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  288. package/src/sap/fe/core/services/ShellServicesFactory.js +92 -76
  289. package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
  290. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  291. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  292. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +224 -198
  293. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +138 -139
  294. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  295. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  296. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  297. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  298. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  299. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  300. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  301. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  302. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  303. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  304. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  305. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  306. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  307. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  308. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  309. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  310. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  311. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  312. package/src/sap/fe/core/templating/FilterHelper.js +16 -15
  313. package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
  314. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  315. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  316. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  317. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  318. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  319. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  320. package/src/sap/fe/core/templating/UIFormatters.js +152 -95
  321. package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
  322. package/src/sap/fe/core/type/Email.js +2 -2
  323. package/src/sap/fe/core/type/Email.ts +2 -2
  324. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -2,7 +2,7 @@
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/util/PasteHelper", "sap/m/MessageBox", "sap/base/Log", "sap/ui/core/Core"], function (CorePasteHelper, MessageBox, Log, Core) {
5
+ sap.ui.define(["sap/base/Log", "sap/m/MessageBox", "sap/ui/core/Core", "sap/ui/core/util/PasteHelper"], function (Log, MessageBox, Core, CorePasteHelper) {
6
6
  "use strict";
7
7
 
8
8
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -25,7 +25,7 @@ sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox", "sap/base/Log
25
25
  parseKeepsEmptyString: true
26
26
  },
27
27
  type = metaModel.getUI5Type("".concat(rowBindingPath, "/").concat(propertyPath), formatOptions),
28
- isIgnored = !property || metaContext.getProperty(propertyPath + "@Org.OData.Core.V1.Computed");
28
+ isIgnored = !property || metaContext.getProperty("".concat(propertyPath, "@Org.OData.Core.V1.Computed"));
29
29
  return {
30
30
  property: propertyPath,
31
31
  ignore: isIgnored,
@@ -123,13 +123,6 @@ sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox", "sap/base/Log
123
123
  });
124
124
  },
125
125
  getInfoForEntityProperty: getInfoForEntityProperty,
126
-
127
- /**
128
- *
129
- * @param rawData
130
- * @param table
131
- * @returns {Promise<any>}
132
- */
133
126
  parsePastedData: function (rawData, table) {
134
127
  var _this2 = this;
135
128
 
@@ -210,4 +203,4 @@ sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox", "sap/base/Log
210
203
  };
211
204
  return PasteHelper;
212
205
  }, false);
213
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBhc3RlSGVscGVyLnRzIl0sIm5hbWVzIjpbImdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eSIsInByb3BlcnR5UGF0aCIsInJvd0JpbmRpbmdQYXRoIiwibWV0YUNvbnRleHQiLCJtZXRhTW9kZWwiLCJwcm9wZXJ0eSIsImdldFByb3BlcnR5IiwiZm9ybWF0T3B0aW9ucyIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsInR5cGUiLCJnZXRVSTVUeXBlIiwiaXNJZ25vcmVkIiwiaWdub3JlIiwiZGlzcGxheUVycm9yTWVzc2FnZXMiLCJlcnJvck1lc3NhZ2VzIiwibWVzc2FnZURldGFpbHMiLCJyZXNvdXJjZUJ1bmRsZSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJlcnJvckNvcnJlY3Rpb25NZXNzYWdlIiwiZ2V0VGV4dCIsIm5vdGVNZXNzYWdlIiwicGFzdGVFcnJvck1lc3NhZ2UiLCJsZW5ndGgiLCJ1bnNoaWZ0IiwiTWVzc2FnZUJveCIsImVycm9yIiwidGl0bGUiLCJkZXRhaWxzIiwiam9pbiIsIlBhc3RlSGVscGVyIiwiZm9ybWF0Q3VzdG9tTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlcyIsImlSb3dOdW1iZXIiLCJlcnJvck1lc3NhZ2UiLCJudW1iZXJNZXNzYWdlcyIsImkxOG5Sb3ciLCJmb3JFYWNoIiwibWVzc2FnZSIsImluZGV4TWVzc2FnZSIsIm1lc3NhZ2VUZXh0IiwiZ2V0Q29sdW1uSW5mbyIsInRhYmxlIiwibW9kZWwiLCJnZXRSb3dCaW5kaW5nIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJyZXNvbHZlIiwiZ2V0UGF0aCIsImdldENvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImZldGNoUHJvcGVydGllcyIsInRoZW4iLCJwcm9wZXJ0eUluZm8iLCJQcm9wZXJ0eUluZm9EaWN0IiwiT2JqZWN0IiwiYXNzaWduIiwibWFwIiwibmFtZSIsImNvbHVtbkluZm9zIiwiZ2V0Q29sdW1ucyIsImNvbHVtbiIsImluZm9Qcm9wZXJ0eSIsImdldERhdGFQcm9wZXJ0eSIsInByb3BlcnR5SW5mb3MiLCJkYXRhUHJvcGVydHkiLCJwYXRoIiwiaW5kZXhPZiIsInB1c2giLCJwYXJzZVBhc3RlZERhdGEiLCJyYXdEYXRhIiwicGFzdGVJbmZvcyIsInBhc3RlZENvbHVtbkNvdW50IiwiZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IiwiSSIsIlByb21pc2UiLCJDb3JlUGFzdGVIZWxwZXIiLCJwYXJzZSIsInBhcnNlUmVzdWx0IiwiZXJyb3JzIiwib0VsZW1lbnQiLCJwYXJzZWREYXRhIiwicGFzdGVEYXRhIiwiY29udHJvbGxlciIsIm9JbnRlcm5hbEVkaXRGbG93IiwiX2VkaXRGbG93IiwidGFibGVEZWZpbml0aW9uIiwiZ2V0UGFyZW50IiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiYURhdGEiLCJhUGFyc2VkRGF0YSIsImFsbCIsIm1EYXRhIiwiZ2V0VHJhbnNhY3Rpb25IZWxwZXIiLCJ2YWxpZGF0ZURvY3VtZW50IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJkYXRhIiwiY3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uIiwiY29udHJvbCIsImdldFZpZXciLCJhVmFsaWRhdGlvbk1lc3NhZ2VzIiwiYUVycm9yTWVzc2FnZXMiLCJyZWR1Y2UiLCJhTWVzc2FnZXMiLCJhQ3VzdG9tTWVzc2FnZXMiLCJpbmRleCIsIm1lc3NhZ2VzIiwicm93IiwiYVJvd01lc3NhZ2VzIiwibUVycm9yIiwiYVZhbGlkYXRlZERhdGEiLCJjcmVhdGVNdWx0aXBsZURvY3VtZW50cyIsImNyZWF0ZUF0RW5kIiwiZWRpdEZsb3ciLCJvbkJlZm9yZUNyZWF0ZSIsInVuZGVmaW5lZCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSxNQUFNQSx3QkFBd0IsR0FBRyxVQUFTQyxZQUFULEVBQTRCQyxjQUE1QixFQUFpREMsV0FBakQsRUFBbUVDLFNB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QXlDTEMsS0F6Q0ssQ0F5Q0MsVUFBQUMsTUFBTSxFQUFJO0FBQ2hCQyxRQUFBQSxHQUFHLENBQUM3RixLQUFKLENBQVUsMEJBQVYsRUFBc0M0RixNQUF0QztBQUNBLE9BM0NLLENBQVA7QUE0Q0E7QUFwSmtCLEdBQXBCO1NBdUpleEYsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQ29yZVBhc3RlSGVscGVyIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1Bhc3RlSGVscGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA9IHtcblx0bWVzc2FnZVRleHQ/OiBzdHJpbmc7XG5cdG1lc3NhZ2VUYXJnZXQ/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHkgPSBmdW5jdGlvbihwcm9wZXJ0eVBhdGg6IGFueSwgcm93QmluZGluZ1BhdGg6IGFueSwgbWV0YUNvbnRleHQ6IGFueSwgbWV0YU1vZGVsOiBhbnkpOiBhbnkge1xuXHRjb25zdCBwcm9wZXJ0eSA9IG1ldGFDb250ZXh0LmdldFByb3BlcnR5KHByb3BlcnR5UGF0aCksXG5cdFx0Zm9ybWF0T3B0aW9ucyA9IHsgcGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlIH0sXG5cdFx0dHlwZSA9IG1ldGFNb2RlbC5nZXRVSTVUeXBlKGAke3Jvd0JpbmRpbmdQYXRofS8ke3Byb3BlcnR5UGF0aH1gLCBmb3JtYXRPcHRpb25zKSxcblx0XHRpc0lnbm9yZWQgPSAhcHJvcGVydHkgfHwgbWV0YUNvbnRleHQuZ2V0UHJvcGVydHkocHJvcGVydHlQYXRoICsgXCJAT3JnLk9EYXRhLkNvcmUuVjEuQ29tcHV0ZWRcIik7XG5cdHJldHVybiB7XG5cdFx0cHJvcGVydHk6IHByb3BlcnR5UGF0aCxcblx0XHRpZ25vcmU6IGlzSWdub3JlZCxcblx0XHR0eXBlOiB0eXBlXG5cdH07XG59O1xuXG5jb25zdCBkaXNwbGF5RXJyb3JNZXNzYWdlcyA9IGZ1bmN0aW9uKGVycm9yTWVzc2FnZXM6IHN0cmluZ1tdKTogdm9pZCB7XG5cdGNvbnN0IG1lc3NhZ2VEZXRhaWxzID0gWy4uLmVycm9yTWVzc2FnZXNdO1xuXHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIiksXG5cdFx0ZXJyb3JDb3JyZWN0aW9uTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1BBU1RFX0hFTFBFUl9TQVBGRV9QQVNURV9FUlJPUl9DT1JSRUNUSU9OX01FU1NBR0VcIiksXG5cdFx0bm90ZU1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfQ09SUkVDVElPTl9OT1RFXCIpO1xuXHRsZXQgcGFzdGVFcnJvck1lc3NhZ2U7XG5cblx0aWYgKG1lc3NhZ2VEZXRhaWxzLmxlbmd0aCA+IDEpIHtcblx0XHRwYXN0ZUVycm9yTWVzc2FnZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1BBU1RFX0hFTFBFUl9TQVBGRV9QQVNURV9FUlJPUl9NRVNTQUdFX1BMVVJBTFwiLCBbbWVzc2FnZURldGFpbHMubGVuZ3RoXSk7XG5cdH0gZWxzZSB7XG5cdFx0cGFzdGVFcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfTUVTU0FHRV9TSU5HVUxBUlwiKTtcblx0fVxuXHRtZXNzYWdlRGV0YWlscy51bnNoaWZ0KFwiXCIpOyAvLyBUbyBzaG93IHNwYWNlIGJldHdlZW4gdGhlIHNob3J0IHRleHQgYW5kIHRoZSBsaXN0IG9mIGVycm9yc1xuXHRtZXNzYWdlRGV0YWlscy51bnNoaWZ0KG5vdGVNZXNzYWdlKTtcblx0bWVzc2FnZURldGFpbHMudW5zaGlmdChlcnJvckNvcnJlY3Rpb25NZXNzYWdlKTtcblx0TWVzc2FnZUJveC5lcnJvcihwYXN0ZUVycm9yTWVzc2FnZSwge1xuXHRcdHRpdGxlOiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9FUlJPUlwiKSxcblx0XHRkZXRhaWxzOiBtZXNzYWdlRGV0YWlscy5qb2luKFwiPGJyPlwiKVxuXHR9KTtcbn07XG5cbmNvbnN0IFBhc3RlSGVscGVyID0ge1xuXHRkaXNwbGF5RXJyb3JNZXNzYWdlczogZGlzcGxheUVycm9yTWVzc2FnZXMsXG5cdGZvcm1hdEN1c3RvbU1lc3NhZ2U6IGZ1bmN0aW9uKHZhbGlkYXRpb25NZXNzYWdlczogY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2VbXSwgaVJvd051bWJlcjogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRsZXQgZXJyb3JNZXNzYWdlID0gXCJcIjtcblx0XHRjb25zdCBudW1iZXJNZXNzYWdlcyA9IHZhbGlkYXRpb25NZXNzYWdlcy5sZW5ndGg7XG5cdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLFxuXHRcdFx0aTE4blJvdyA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX01FU1NBR0VfR1JPVVBfREVTQ1JJUFRJT05fVEFCTEVfUk9XXCIpO1xuXHRcdGlmIChudW1iZXJNZXNzYWdlcyA+IDApIHtcblx0XHRcdGVycm9yTWVzc2FnZSArPSBgJHtpMThuUm93fSAke2lSb3dOdW1iZXJ9OiBgO1xuXHRcdFx0dmFsaWRhdGlvbk1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UsIGluZGV4TWVzc2FnZSkgPT4ge1xuXHRcdFx0XHRpZiAobWVzc2FnZS5tZXNzYWdlVGV4dCkge1xuXHRcdFx0XHRcdGVycm9yTWVzc2FnZSArPSBtZXNzYWdlLm1lc3NhZ2VUZXh0ICsgKGluZGV4TWVzc2FnZSArIDEgIT09IG51bWJlck1lc3NhZ2VzID8gXCIgXCIgOiBcIlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBlcnJvck1lc3NhZ2U7XG5cdH0sXG5cdGdldENvbHVtbkluZm86IGZ1bmN0aW9uKHRhYmxlOiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0TW9kZWwoKSxcblx0XHRcdG1ldGFNb2RlbCA9IG1vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0cm93QmluZGluZ1BhdGggPSBtb2RlbC5yZXNvbHZlKHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCksIHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRDb250ZXh0KCkpLFxuXHRcdFx0bWV0YUNvbnRleHQgPSBtZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQocm93QmluZGluZ1BhdGgpO1xuXHRcdHJldHVybiB0YWJsZVxuXHRcdFx0LmdldENvbnRyb2xEZWxlZ2F0ZSgpXG5cdFx0XHQuZmV0Y2hQcm9wZXJ0aWVzKHRhYmxlKVxuXHRcdFx0LnRoZW4oKHByb3BlcnR5SW5mbzogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IFByb3BlcnR5SW5mb0RpY3QgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5wcm9wZXJ0eUluZm8ubWFwKChwcm9wZXJ0eTogYW55KSA9PiAoeyBbcHJvcGVydHkubmFtZV06IHByb3BlcnR5IH0pKSk7XG5cdFx0XHRcdGNvbnN0IGNvbHVtbkluZm9zOiBhbnlbXSA9IFtdO1xuXHRcdFx0XHR0YWJsZS5nZXRDb2x1bW5zKCkuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpbmZvUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W2NvbHVtbi5nZXREYXRhUHJvcGVydHkoKV07XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgaXQncyBhIGNvbXBsZXggcHJvcGVydHkgKHByb3BlcnR5IGFzc29jaWF0ZWQgdG8gbXVsdGlwbGUgc2ltcGxlIHByb3BlcnRpZXMpXG5cdFx0XHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdFx0XHQvLyBHZXQgZGF0YSBmcm9tIHNpbXBsZSBwcm9wZXJ0eVxuXHRcdFx0XHRcdFx0aW5mb1Byb3BlcnR5LnByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBkYXRhUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W3Byb3BlcnR5XTtcblxuXHRcdFx0XHRcdFx0XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHNpbXBsZSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHRvIGEgUmF0aW5nIG9yIFByb2dyZXNzIENvbXBsZXhQcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIE9yIGNoZWNrIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoaW4gdGhlIGN1cnJlbnQgQ29tcGxleCBwcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIEEgZmFrZSBwcm9wZXJ0eSB3YXMgY3JlYXRlZCBpbnRvIHRoZSBwcm9wZXJ0eUluZm9zIHRvIGluY2x1ZGUgdGhlIFRhcmdldCBWYWx1ZVxuXHRcdFx0XHRcdFx0XHQvLyBmcm9tIHRoZSBEYXRhUG9pbnQgKHBhdGggaW5jbHVkZXMgdGhlIEBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnQgYW5ub3RhdGlvbilcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdChkYXRhUHJvcGVydHkgJiYgZGF0YVByb3BlcnR5LnBhdGguaW5kZXhPZihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikgPiAtMSkgfHxcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSA+IC0xXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydHk6IGRhdGFQcm9wZXJ0eS5wYXRoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShkYXRhUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpbmZvUHJvcGVydHkucGF0aCkge1xuXHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShpbmZvUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gRW1wdHkgY29sdW1uIC0tPiBpZ25vcmVcblx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ1bnVzZWRcIixcblx0XHRcdFx0XHRcdFx0dHlwZTogbnVsbCxcblx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gY29sdW1uSW5mb3M7XG5cdFx0XHR9KTtcblx0fSxcblx0Z2V0SW5mb0ZvckVudGl0eVByb3BlcnR5OiBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHksXG5cdC8qKlxuXHQgKlxuXHQgKiBAcGFyYW0gcmF3RGF0YVxuXHQgKiBAcGFyYW0gdGFibGVcblx0ICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cblx0ICovXG5cdHBhcnNlUGFzdGVkRGF0YTogZnVuY3Rpb24ocmF3RGF0YTogYW55LCB0YWJsZTogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbHVtbkluZm8odGFibGUpXG5cdFx0XHQudGhlbihmdW5jdGlvbihwYXN0ZUluZm9zOiBhbnlbXSkge1xuXHRcdFx0XHQvLyBDaGVjayBpZiB3ZSBoYXZlIGRhdGEgZm9yIGF0IGxlYXN0IHRoZSBmaXJzdCBlZGl0YWJsZSBjb2x1bW5cblx0XHRcdFx0Y29uc3QgcGFzdGVkQ29sdW1uQ291bnQgPSByYXdEYXRhLmxlbmd0aCA/IHJhd0RhdGFbMF0ubGVuZ3RoIDogMDtcblx0XHRcdFx0bGV0IGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA9IC0xO1xuXHRcdFx0XHRmb3IgKGxldCBJID0gMDsgSSA8IHBhc3RlSW5mb3MubGVuZ3RoICYmIGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA8IDA7IEkrKykge1xuXHRcdFx0XHRcdGlmICghcGFzdGVJbmZvc1tJXS5pZ25vcmUpIHtcblx0XHRcdFx0XHRcdGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA9IEk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPCAwIHx8IGZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCA+IHBhc3RlZENvbHVtbkNvdW50IC0gMVxuXHRcdFx0XHRcdD8gUHJvbWlzZS5yZXNvbHZlKHt9KSAvLyBXZSBkb24ndCBoYXZlIGRhdGEgZm9yIGFuIGVkaXRhYmxlIGNvbHVtbiAtLT4gcmV0dXJuIGVtcHR5IHBhcnNlZCBkYXRhXG5cdFx0XHRcdFx0OiAoQ29yZVBhc3RlSGVscGVyIGFzIGFueSkucGFyc2UocmF3RGF0YSwgcGFzdGVJbmZvcyk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHBhcnNlUmVzdWx0OiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKHBhcnNlUmVzdWx0LmVycm9ycykge1xuXHRcdFx0XHRcdGNvbnN0IGVycm9yTWVzc2FnZXMgPSBwYXJzZVJlc3VsdC5lcnJvcnMubWFwKGZ1bmN0aW9uKG9FbGVtZW50OiBhbnkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvRWxlbWVudC5tZXNzYWdlO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZXMoZXJyb3JNZXNzYWdlcyk7XG5cdFx0XHRcdFx0cmV0dXJuIFtdOyAvLyBFcnJvcnMgLS0+IHJldHVybiBub3RoaW5nXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcnNlUmVzdWx0LnBhcnNlZERhdGEgPyBwYXJzZVJlc3VsdC5wYXJzZWREYXRhIDogW107XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHR9LFxuXHRwYXN0ZURhdGE6IGZ1bmN0aW9uKHJhd0RhdGE6IGFueSwgdGFibGU6IGFueSwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IG9JbnRlcm5hbEVkaXRGbG93ID0gKGNvbnRyb2xsZXIgYXMgYW55KS5fZWRpdEZsb3c7XG5cdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gdGFibGUuZ2V0UGFyZW50KCkuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0bGV0IGFEYXRhOiBhbnlbXSA9IFtdO1xuXHRcdHJldHVybiB0aGlzLnBhcnNlUGFzdGVkRGF0YShyYXdEYXRhLCB0YWJsZSlcblx0XHRcdC50aGVuKGFQYXJzZWREYXRhID0+IHtcblx0XHRcdFx0YURhdGEgPSBhUGFyc2VkRGF0YSB8fCBbXTtcblx0XHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFxuXHRcdFx0XHRcdGFEYXRhLm1hcChtRGF0YSA9PlxuXHRcdFx0XHRcdFx0b0ludGVybmFsRWRpdEZsb3cuZ2V0VHJhbnNhY3Rpb25IZWxwZXIoKS52YWxpZGF0ZURvY3VtZW50KFxuXHRcdFx0XHRcdFx0XHR0YWJsZS5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YTogbURhdGEsXG5cdFx0XHRcdFx0XHRcdFx0Y3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uOiB0YWJsZURlZmluaXRpb24/LmNvbnRyb2w/LmN1c3RvbVZhbGlkYXRpb25GdW5jdGlvblxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLmdldFZpZXcoKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihhVmFsaWRhdGlvbk1lc3NhZ2VzID0+IHtcblx0XHRcdFx0Y29uc3QgYUVycm9yTWVzc2FnZXMgPSBhVmFsaWRhdGlvbk1lc3NhZ2VzLnJlZHVjZShmdW5jdGlvbihhTWVzc2FnZXMsIGFDdXN0b21NZXNzYWdlcywgaW5kZXgpIHtcblx0XHRcdFx0XHRpZiAoYUN1c3RvbU1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdGFNZXNzYWdlcy5wdXNoKHsgbWVzc2FnZXM6IGFDdXN0b21NZXNzYWdlcywgcm93OiBpbmRleCArIDEgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBhTWVzc2FnZXM7XG5cdFx0XHRcdH0sIFtdKTtcblx0XHRcdFx0aWYgKGFFcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRjb25zdCBhUm93TWVzc2FnZXMgPSBhRXJyb3JNZXNzYWdlcy5tYXAoKG1FcnJvcjogYW55KSA9PiB0aGlzLmZvcm1hdEN1c3RvbU1lc3NhZ2UobUVycm9yLm1lc3NhZ2VzLCBtRXJyb3Iucm93KSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlcyhhUm93TWVzc2FnZXMpO1xuXHRcdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYURhdGE7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYVZhbGlkYXRlZERhdGEgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYVZhbGlkYXRlZERhdGEubGVuZ3RoID4gMFxuXHRcdFx0XHRcdD8gb0ludGVybmFsRWRpdEZsb3cuY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMoXG5cdFx0XHRcdFx0XHRcdHRhYmxlLmdldFJvd0JpbmRpbmcoKSxcblx0XHRcdFx0XHRcdFx0YVZhbGlkYXRlZERhdGEsXG5cdFx0XHRcdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8uY3JlYXRlQXRFbmQsXG5cdFx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRcdChjb250cm9sbGVyIGFzIGFueSkuZWRpdEZsb3cub25CZWZvcmVDcmVhdGVcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2gob0Vycm9yID0+IHtcblx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgcGFzdGluZyBkYXRhXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgUGFzdGVIZWxwZXI7XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBhc3RlSGVscGVyLnRzIl0sIm5hbWVzIjpbImdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eSIsInByb3BlcnR5UGF0aCIsInJvd0JpbmRpbmdQYXRoIiwibWV0YUNvbnRleHQiLCJtZXRhTW9kZWwiLCJwcm9wZXJ0eSIsImdldFByb3BlcnR5IiwiZm9ybWF0T3B0aW9ucyIsInBhcnNlS2VlcHNFbXB0eVN0cmluZyIsInR5cGUiLCJnZXRVSTVUeXBlIiwiaXNJZ25vcmVkIiwiaWdub3JlIiwiZGlzcGxheUVycm9yTWVzc2FnZXMiLCJlcnJvck1lc3NhZ2VzIiwibWVzc2FnZURldGFpbHMiLCJyZXNvdXJjZUJ1bmRsZSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJlcnJvckNvcnJlY3Rpb25NZXNzYWdlIiwiZ2V0VGV4dCIsIm5vdGVNZXNzYWdlIiwicGFzdGVFcnJvck1lc3NhZ2UiLCJsZW5ndGgiLCJ1bnNoaWZ0IiwiTWVzc2FnZUJveCIsImVycm9yIiwidGl0bGUiLCJkZXRhaWxzIiwiam9pbiIsIlBhc3RlSGVscGVyIiwiZm9ybWF0Q3VzdG9tTWVzc2FnZSIsInZhbGlkYXRpb25NZXNzYWdlcyIsImlSb3dOdW1iZXIiLCJlcnJvck1lc3NhZ2UiLCJudW1iZXJNZXNzYWdlcyIsImkxOG5Sb3ciLCJmb3JFYWNoIiwibWVzc2FnZSIsImluZGV4TWVzc2FnZSIsIm1lc3NhZ2VUZXh0IiwiZ2V0Q29sdW1uSW5mbyIsInRhYmxlIiwibW9kZWwiLCJnZXRSb3dCaW5kaW5nIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJyZXNvbHZlIiwiZ2V0UGF0aCIsImdldENvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsImZldGNoUHJvcGVydGllcyIsInRoZW4iLCJwcm9wZXJ0eUluZm8iLCJQcm9wZXJ0eUluZm9EaWN0IiwiT2JqZWN0IiwiYXNzaWduIiwibWFwIiwibmFtZSIsImNvbHVtbkluZm9zIiwiZ2V0Q29sdW1ucyIsImNvbHVtbiIsImluZm9Qcm9wZXJ0eSIsImdldERhdGFQcm9wZXJ0eSIsInByb3BlcnR5SW5mb3MiLCJkYXRhUHJvcGVydHkiLCJwYXRoIiwiaW5kZXhPZiIsInB1c2giLCJwYXJzZVBhc3RlZERhdGEiLCJyYXdEYXRhIiwicGFzdGVJbmZvcyIsInBhc3RlZENvbHVtbkNvdW50IiwiZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IiwiSSIsIlByb21pc2UiLCJDb3JlUGFzdGVIZWxwZXIiLCJwYXJzZSIsInBhcnNlUmVzdWx0IiwiZXJyb3JzIiwib0VsZW1lbnQiLCJwYXJzZWREYXRhIiwicGFzdGVEYXRhIiwiY29udHJvbGxlciIsIm9JbnRlcm5hbEVkaXRGbG93IiwiX2VkaXRGbG93IiwidGFibGVEZWZpbml0aW9uIiwiZ2V0UGFyZW50IiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiYURhdGEiLCJhUGFyc2VkRGF0YSIsImFsbCIsIm1EYXRhIiwiZ2V0VHJhbnNhY3Rpb25IZWxwZXIiLCJ2YWxpZGF0ZURvY3VtZW50IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJkYXRhIiwiY3VzdG9tVmFsaWRhdGlvbkZ1bmN0aW9uIiwiY29udHJvbCIsImdldFZpZXciLCJhVmFsaWRhdGlvbk1lc3NhZ2VzIiwiYUVycm9yTWVzc2FnZXMiLCJyZWR1Y2UiLCJhTWVzc2FnZXMiLCJhQ3VzdG9tTWVzc2FnZXMiLCJpbmRleCIsIm1lc3NhZ2VzIiwicm93IiwiYVJvd01lc3NhZ2VzIiwibUVycm9yIiwiYVZhbGlkYXRlZERhdGEiLCJjcmVhdGVNdWx0aXBsZURvY3VtZW50cyIsImNyZWF0ZUF0RW5kIiwiZWRpdEZsb3ciLCJvbkJlZm9yZUNyZWF0ZSIsInVuZGVmaW5lZCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSxNQUFNQSx3QkFBd0IsR0FBRyxVQUFVQyxZQUFWLEVBQTZCQyxjQUE3QixFQUFrREMsV0FBbEQsRUFBb0VDLFNB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QyxRQUFBQSxHQUFHLENBQUM3RixLQUFKLENBQVUsMEJBQVYsRUFBc0M0RixNQUF0QztBQUNBLE9BM0NLLENBQVA7QUE0Q0E7QUEvSWtCLEdBQXBCO1NBa0pleEYsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0ICogYXMgQ29yZVBhc3RlSGVscGVyIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1Bhc3RlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvcmVFeCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgPSB7XG5cdG1lc3NhZ2VUZXh0Pzogc3RyaW5nO1xuXHRtZXNzYWdlVGFyZ2V0Pzogc3RyaW5nO1xufTtcblxuY29uc3QgZ2V0SW5mb0ZvckVudGl0eVByb3BlcnR5ID0gZnVuY3Rpb24gKHByb3BlcnR5UGF0aDogYW55LCByb3dCaW5kaW5nUGF0aDogYW55LCBtZXRhQ29udGV4dDogYW55LCBtZXRhTW9kZWw6IGFueSk6IGFueSB7XG5cdGNvbnN0IHByb3BlcnR5ID0gbWV0YUNvbnRleHQuZ2V0UHJvcGVydHkocHJvcGVydHlQYXRoKSxcblx0XHRmb3JtYXRPcHRpb25zID0geyBwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWUgfSxcblx0XHR0eXBlID0gbWV0YU1vZGVsLmdldFVJNVR5cGUoYCR7cm93QmluZGluZ1BhdGh9LyR7cHJvcGVydHlQYXRofWAsIGZvcm1hdE9wdGlvbnMpLFxuXHRcdGlzSWdub3JlZCA9ICFwcm9wZXJ0eSB8fCBtZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShgJHtwcm9wZXJ0eVBhdGh9QE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkYCk7XG5cdHJldHVybiB7XG5cdFx0cHJvcGVydHk6IHByb3BlcnR5UGF0aCxcblx0XHRpZ25vcmU6IGlzSWdub3JlZCxcblx0XHR0eXBlOiB0eXBlXG5cdH07XG59O1xuXG5jb25zdCBkaXNwbGF5RXJyb3JNZXNzYWdlcyA9IGZ1bmN0aW9uIChlcnJvck1lc3NhZ2VzOiBzdHJpbmdbXSk6IHZvaWQge1xuXHRjb25zdCBtZXNzYWdlRGV0YWlscyA9IFsuLi5lcnJvck1lc3NhZ2VzXTtcblx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLFxuXHRcdGVycm9yQ29ycmVjdGlvbk1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfQ09SUkVDVElPTl9NRVNTQUdFXCIpLFxuXHRcdG5vdGVNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX0NPUlJFQ1RJT05fTk9URVwiKTtcblx0bGV0IHBhc3RlRXJyb3JNZXNzYWdlO1xuXG5cdGlmIChtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAxKSB7XG5cdFx0cGFzdGVFcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfTUVTU0FHRV9QTFVSQUxcIiwgW21lc3NhZ2VEZXRhaWxzLmxlbmd0aF0pO1xuXHR9IGVsc2Uge1xuXHRcdHBhc3RlRXJyb3JNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX01FU1NBR0VfU0lOR1VMQVJcIik7XG5cdH1cblx0bWVzc2FnZURldGFpbHMudW5zaGlmdChcIlwiKTsgLy8gVG8gc2hvdyBzcGFjZSBiZXR3ZWVuIHRoZSBzaG9ydCB0ZXh0IGFuZCB0aGUgbGlzdCBvZiBlcnJvcnNcblx0bWVzc2FnZURldGFpbHMudW5zaGlmdChub3RlTWVzc2FnZSk7XG5cdG1lc3NhZ2VEZXRhaWxzLnVuc2hpZnQoZXJyb3JDb3JyZWN0aW9uTWVzc2FnZSk7XG5cdE1lc3NhZ2VCb3guZXJyb3IocGFzdGVFcnJvck1lc3NhZ2UsIHtcblx0XHR0aXRsZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfRVJST1JcIiksXG5cdFx0ZGV0YWlsczogbWVzc2FnZURldGFpbHMuam9pbihcIjxicj5cIilcblx0fSk7XG59O1xuXG5jb25zdCBQYXN0ZUhlbHBlciA9IHtcblx0ZGlzcGxheUVycm9yTWVzc2FnZXM6IGRpc3BsYXlFcnJvck1lc3NhZ2VzLFxuXHRmb3JtYXRDdXN0b21NZXNzYWdlOiBmdW5jdGlvbiAodmFsaWRhdGlvbk1lc3NhZ2VzOiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZVtdLCBpUm93TnVtYmVyOiBudW1iZXIpOiBzdHJpbmcge1xuXHRcdGxldCBlcnJvck1lc3NhZ2UgPSBcIlwiO1xuXHRcdGNvbnN0IG51bWJlck1lc3NhZ2VzID0gdmFsaWRhdGlvbk1lc3NhZ2VzLmxlbmd0aDtcblx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIiksXG5cdFx0XHRpMThuUm93ID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfTUVTU0FHRV9HUk9VUF9ERVNDUklQVElPTl9UQUJMRV9ST1dcIik7XG5cdFx0aWYgKG51bWJlck1lc3NhZ2VzID4gMCkge1xuXHRcdFx0ZXJyb3JNZXNzYWdlICs9IGAke2kxOG5Sb3d9ICR7aVJvd051bWJlcn06IGA7XG5cdFx0XHR2YWxpZGF0aW9uTWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSwgaW5kZXhNZXNzYWdlKSA9PiB7XG5cdFx0XHRcdGlmIChtZXNzYWdlLm1lc3NhZ2VUZXh0KSB7XG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlICs9IG1lc3NhZ2UubWVzc2FnZVRleHQgKyAoaW5kZXhNZXNzYWdlICsgMSAhPT0gbnVtYmVyTWVzc2FnZXMgPyBcIiBcIiA6IFwiXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGVycm9yTWVzc2FnZTtcblx0fSxcblx0Z2V0Q29sdW1uSW5mbzogZnVuY3Rpb24gKHRhYmxlOiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0TW9kZWwoKSxcblx0XHRcdG1ldGFNb2RlbCA9IG1vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0cm93QmluZGluZ1BhdGggPSBtb2RlbC5yZXNvbHZlKHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCksIHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRDb250ZXh0KCkpLFxuXHRcdFx0bWV0YUNvbnRleHQgPSBtZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQocm93QmluZGluZ1BhdGgpO1xuXHRcdHJldHVybiB0YWJsZVxuXHRcdFx0LmdldENvbnRyb2xEZWxlZ2F0ZSgpXG5cdFx0XHQuZmV0Y2hQcm9wZXJ0aWVzKHRhYmxlKVxuXHRcdFx0LnRoZW4oKHByb3BlcnR5SW5mbzogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IFByb3BlcnR5SW5mb0RpY3QgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5wcm9wZXJ0eUluZm8ubWFwKChwcm9wZXJ0eTogYW55KSA9PiAoeyBbcHJvcGVydHkubmFtZV06IHByb3BlcnR5IH0pKSk7XG5cdFx0XHRcdGNvbnN0IGNvbHVtbkluZm9zOiBhbnlbXSA9IFtdO1xuXHRcdFx0XHR0YWJsZS5nZXRDb2x1bW5zKCkuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpbmZvUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W2NvbHVtbi5nZXREYXRhUHJvcGVydHkoKV07XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgaXQncyBhIGNvbXBsZXggcHJvcGVydHkgKHByb3BlcnR5IGFzc29jaWF0ZWQgdG8gbXVsdGlwbGUgc2ltcGxlIHByb3BlcnRpZXMpXG5cdFx0XHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdFx0XHQvLyBHZXQgZGF0YSBmcm9tIHNpbXBsZSBwcm9wZXJ0eVxuXHRcdFx0XHRcdFx0aW5mb1Byb3BlcnR5LnByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBkYXRhUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W3Byb3BlcnR5XTtcblxuXHRcdFx0XHRcdFx0XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHNpbXBsZSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHRvIGEgUmF0aW5nIG9yIFByb2dyZXNzIENvbXBsZXhQcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIE9yIGNoZWNrIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoaW4gdGhlIGN1cnJlbnQgQ29tcGxleCBwcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIEEgZmFrZSBwcm9wZXJ0eSB3YXMgY3JlYXRlZCBpbnRvIHRoZSBwcm9wZXJ0eUluZm9zIHRvIGluY2x1ZGUgdGhlIFRhcmdldCBWYWx1ZVxuXHRcdFx0XHRcdFx0XHQvLyBmcm9tIHRoZSBEYXRhUG9pbnQgKHBhdGggaW5jbHVkZXMgdGhlIEBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnQgYW5ub3RhdGlvbilcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdChkYXRhUHJvcGVydHkgJiYgZGF0YVByb3BlcnR5LnBhdGguaW5kZXhPZihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikgPiAtMSkgfHxcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSA+IC0xXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydHk6IGRhdGFQcm9wZXJ0eS5wYXRoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShkYXRhUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpbmZvUHJvcGVydHkucGF0aCkge1xuXHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShpbmZvUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gRW1wdHkgY29sdW1uIC0tPiBpZ25vcmVcblx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ1bnVzZWRcIixcblx0XHRcdFx0XHRcdFx0dHlwZTogbnVsbCxcblx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gY29sdW1uSW5mb3M7XG5cdFx0XHR9KTtcblx0fSxcblx0Z2V0SW5mb0ZvckVudGl0eVByb3BlcnR5OiBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHksXG5cblx0cGFyc2VQYXN0ZWREYXRhOiBmdW5jdGlvbiAocmF3RGF0YTogYW55LCB0YWJsZTogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbHVtbkluZm8odGFibGUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAocGFzdGVJbmZvczogYW55W10pIHtcblx0XHRcdFx0Ly8gQ2hlY2sgaWYgd2UgaGF2ZSBkYXRhIGZvciBhdCBsZWFzdCB0aGUgZmlyc3QgZWRpdGFibGUgY29sdW1uXG5cdFx0XHRcdGNvbnN0IHBhc3RlZENvbHVtbkNvdW50ID0gcmF3RGF0YS5sZW5ndGggPyByYXdEYXRhWzBdLmxlbmd0aCA6IDA7XG5cdFx0XHRcdGxldCBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSAtMTtcblx0XHRcdFx0Zm9yIChsZXQgSSA9IDA7IEkgPCBwYXN0ZUluZm9zLmxlbmd0aCAmJiBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPCAwOyBJKyspIHtcblx0XHRcdFx0XHRpZiAoIXBhc3RlSW5mb3NbSV0uaWdub3JlKSB7XG5cdFx0XHRcdFx0XHRmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBJO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IDwgMCB8fCBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPiBwYXN0ZWRDb2x1bW5Db3VudCAtIDFcblx0XHRcdFx0XHQ/IFByb21pc2UucmVzb2x2ZSh7fSkgLy8gV2UgZG9uJ3QgaGF2ZSBkYXRhIGZvciBhbiBlZGl0YWJsZSBjb2x1bW4gLS0+IHJldHVybiBlbXB0eSBwYXJzZWQgZGF0YVxuXHRcdFx0XHRcdDogKENvcmVQYXN0ZUhlbHBlciBhcyBhbnkpLnBhcnNlKHJhd0RhdGEsIHBhc3RlSW5mb3MpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChwYXJzZVJlc3VsdDogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChwYXJzZVJlc3VsdC5lcnJvcnMpIHtcblx0XHRcdFx0XHRjb25zdCBlcnJvck1lc3NhZ2VzID0gcGFyc2VSZXN1bHQuZXJyb3JzLm1hcChmdW5jdGlvbiAob0VsZW1lbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9FbGVtZW50Lm1lc3NhZ2U7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlcyhlcnJvck1lc3NhZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gW107IC8vIEVycm9ycyAtLT4gcmV0dXJuIG5vdGhpbmdcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VSZXN1bHQucGFyc2VkRGF0YSA/IHBhcnNlUmVzdWx0LnBhcnNlZERhdGEgOiBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdH0sXG5cdHBhc3RlRGF0YTogZnVuY3Rpb24gKHJhd0RhdGE6IGFueSwgdGFibGU6IGFueSwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IG9JbnRlcm5hbEVkaXRGbG93ID0gKGNvbnRyb2xsZXIgYXMgYW55KS5fZWRpdEZsb3c7XG5cdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gdGFibGUuZ2V0UGFyZW50KCkuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0bGV0IGFEYXRhOiBhbnlbXSA9IFtdO1xuXHRcdHJldHVybiB0aGlzLnBhcnNlUGFzdGVkRGF0YShyYXdEYXRhLCB0YWJsZSlcblx0XHRcdC50aGVuKChhUGFyc2VkRGF0YSkgPT4ge1xuXHRcdFx0XHRhRGF0YSA9IGFQYXJzZWREYXRhIHx8IFtdO1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG5cdFx0XHRcdFx0YURhdGEubWFwKChtRGF0YSkgPT5cblx0XHRcdFx0XHRcdG9JbnRlcm5hbEVkaXRGbG93LmdldFRyYW5zYWN0aW9uSGVscGVyKCkudmFsaWRhdGVEb2N1bWVudChcblx0XHRcdFx0XHRcdFx0dGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGRhdGE6IG1EYXRhLFxuXHRcdFx0XHRcdFx0XHRcdGN1c3RvbVZhbGlkYXRpb25GdW5jdGlvbjogdGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5jdXN0b21WYWxpZGF0aW9uRnVuY3Rpb25cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5nZXRWaWV3KClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKGFWYWxpZGF0aW9uTWVzc2FnZXMpID0+IHtcblx0XHRcdFx0Y29uc3QgYUVycm9yTWVzc2FnZXMgPSBhVmFsaWRhdGlvbk1lc3NhZ2VzLnJlZHVjZShmdW5jdGlvbiAoYU1lc3NhZ2VzLCBhQ3VzdG9tTWVzc2FnZXMsIGluZGV4KSB7XG5cdFx0XHRcdFx0aWYgKGFDdXN0b21NZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRhTWVzc2FnZXMucHVzaCh7IG1lc3NhZ2VzOiBhQ3VzdG9tTWVzc2FnZXMsIHJvdzogaW5kZXggKyAxIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gYU1lc3NhZ2VzO1xuXHRcdFx0XHR9LCBbXSk7XG5cdFx0XHRcdGlmIChhRXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29uc3QgYVJvd01lc3NhZ2VzID0gYUVycm9yTWVzc2FnZXMubWFwKChtRXJyb3I6IGFueSkgPT4gdGhpcy5mb3JtYXRDdXN0b21NZXNzYWdlKG1FcnJvci5tZXNzYWdlcywgbUVycm9yLnJvdykpO1xuXHRcdFx0XHRcdHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZXMoYVJvd01lc3NhZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGFEYXRhO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChhVmFsaWRhdGVkRGF0YSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYVZhbGlkYXRlZERhdGEubGVuZ3RoID4gMFxuXHRcdFx0XHRcdD8gb0ludGVybmFsRWRpdEZsb3cuY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMoXG5cdFx0XHRcdFx0XHRcdHRhYmxlLmdldFJvd0JpbmRpbmcoKSxcblx0XHRcdFx0XHRcdFx0YVZhbGlkYXRlZERhdGEsXG5cdFx0XHRcdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8uY3JlYXRlQXRFbmQsXG5cdFx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRcdChjb250cm9sbGVyIGFzIGFueSkuZWRpdEZsb3cub25CZWZvcmVDcmVhdGVcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKG9FcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBwYXN0aW5nIGRhdGFcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYXN0ZUhlbHBlcjtcbiJdfQ==
@@ -1,20 +1,20 @@
1
- import * as CorePasteHelper from "sap/ui/core/util/PasteHelper";
2
- import MessageBox from "sap/m/MessageBox";
3
1
  import Log from "sap/base/Log";
4
- import PageController from "sap/fe/core/PageController";
2
+ import type PageController from "sap/fe/core/PageController";
3
+ import MessageBox from "sap/m/MessageBox";
5
4
  import Core from "sap/ui/core/Core";
6
- import { CoreEx } from "types/extension_types";
5
+ import * as CorePasteHelper from "sap/ui/core/util/PasteHelper";
6
+ import type { CoreEx } from "types/extension_types";
7
7
 
8
8
  export type customValidationMessage = {
9
9
  messageText?: string;
10
10
  messageTarget?: string;
11
11
  };
12
12
 
13
- const getInfoForEntityProperty = function(propertyPath: any, rowBindingPath: any, metaContext: any, metaModel: any): any {
13
+ const getInfoForEntityProperty = function (propertyPath: any, rowBindingPath: any, metaContext: any, metaModel: any): any {
14
14
  const property = metaContext.getProperty(propertyPath),
15
15
  formatOptions = { parseKeepsEmptyString: true },
16
16
  type = metaModel.getUI5Type(`${rowBindingPath}/${propertyPath}`, formatOptions),
17
- isIgnored = !property || metaContext.getProperty(propertyPath + "@Org.OData.Core.V1.Computed");
17
+ isIgnored = !property || metaContext.getProperty(`${propertyPath}@Org.OData.Core.V1.Computed`);
18
18
  return {
19
19
  property: propertyPath,
20
20
  ignore: isIgnored,
@@ -22,7 +22,7 @@ const getInfoForEntityProperty = function(propertyPath: any, rowBindingPath: any
22
22
  };
23
23
  };
24
24
 
25
- const displayErrorMessages = function(errorMessages: string[]): void {
25
+ const displayErrorMessages = function (errorMessages: string[]): void {
26
26
  const messageDetails = [...errorMessages];
27
27
  const resourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core"),
28
28
  errorCorrectionMessage = resourceBundle.getText("C_PASTE_HELPER_SAPFE_PASTE_ERROR_CORRECTION_MESSAGE"),
@@ -45,7 +45,7 @@ const displayErrorMessages = function(errorMessages: string[]): void {
45
45
 
46
46
  const PasteHelper = {
47
47
  displayErrorMessages: displayErrorMessages,
48
- formatCustomMessage: function(validationMessages: customValidationMessage[], iRowNumber: number): string {
48
+ formatCustomMessage: function (validationMessages: customValidationMessage[], iRowNumber: number): string {
49
49
  let errorMessage = "";
50
50
  const numberMessages = validationMessages.length;
51
51
  const resourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core"),
@@ -60,7 +60,7 @@ const PasteHelper = {
60
60
  }
61
61
  return errorMessage;
62
62
  },
63
- getColumnInfo: function(table: any): Promise<any[]> {
63
+ getColumnInfo: function (table: any): Promise<any[]> {
64
64
  const model = table.getRowBinding().getModel(),
65
65
  metaModel = model.getMetaModel(),
66
66
  rowBindingPath = model.resolve(table.getRowBinding().getPath(), table.getRowBinding().getContext()),
@@ -110,15 +110,10 @@ const PasteHelper = {
110
110
  });
111
111
  },
112
112
  getInfoForEntityProperty: getInfoForEntityProperty,
113
- /**
114
- *
115
- * @param rawData
116
- * @param table
117
- * @returns {Promise<any>}
118
- */
119
- parsePastedData: function(rawData: any, table: any): Promise<any[]> {
113
+
114
+ parsePastedData: function (rawData: any, table: any): Promise<any[]> {
120
115
  return this.getColumnInfo(table)
121
- .then(function(pasteInfos: any[]) {
116
+ .then(function (pasteInfos: any[]) {
122
117
  // Check if we have data for at least the first editable column
123
118
  const pastedColumnCount = rawData.length ? rawData[0].length : 0;
124
119
  let firstEditableColumnIndex = -1;
@@ -133,7 +128,7 @@ const PasteHelper = {
133
128
  })
134
129
  .then((parseResult: any) => {
135
130
  if (parseResult.errors) {
136
- const errorMessages = parseResult.errors.map(function(oElement: any) {
131
+ const errorMessages = parseResult.errors.map(function (oElement: any) {
137
132
  return oElement.message;
138
133
  });
139
134
  this.displayErrorMessages(errorMessages);
@@ -143,15 +138,15 @@ const PasteHelper = {
143
138
  }
144
139
  });
145
140
  },
146
- pasteData: function(rawData: any, table: any, controller: PageController): Promise<any> {
141
+ pasteData: function (rawData: any, table: any, controller: PageController): Promise<any> {
147
142
  const oInternalEditFlow = (controller as any)._editFlow;
148
143
  const tableDefinition = table.getParent().getTableDefinition();
149
144
  let aData: any[] = [];
150
145
  return this.parsePastedData(rawData, table)
151
- .then(aParsedData => {
146
+ .then((aParsedData) => {
152
147
  aData = aParsedData || [];
153
148
  return Promise.all(
154
- aData.map(mData =>
149
+ aData.map((mData) =>
155
150
  oInternalEditFlow.getTransactionHelper().validateDocument(
156
151
  table.getBindingContext(),
157
152
  {
@@ -163,8 +158,8 @@ const PasteHelper = {
163
158
  )
164
159
  );
165
160
  })
166
- .then(aValidationMessages => {
167
- const aErrorMessages = aValidationMessages.reduce(function(aMessages, aCustomMessages, index) {
161
+ .then((aValidationMessages) => {
162
+ const aErrorMessages = aValidationMessages.reduce(function (aMessages, aCustomMessages, index) {
168
163
  if (aCustomMessages.length > 0) {
169
164
  aMessages.push({ messages: aCustomMessages, row: index + 1 });
170
165
  }
@@ -177,7 +172,7 @@ const PasteHelper = {
177
172
  }
178
173
  return aData;
179
174
  })
180
- .then(aValidatedData => {
175
+ .then((aValidatedData) => {
181
176
  return aValidatedData.length > 0
182
177
  ? oInternalEditFlow.createMultipleDocuments(
183
178
  table.getRowBinding(),
@@ -188,7 +183,7 @@ const PasteHelper = {
188
183
  )
189
184
  : undefined;
190
185
  })
191
- .catch(oError => {
186
+ .catch((oError) => {
192
187
  Log.error("Error while pasting data", oError);
193
188
  });
194
189
  }
@@ -346,4 +346,4 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/mdc/condition/FilterOperatorUtil", "s
346
346
  };
347
347
  return SemanticDateOperators;
348
348
  }, false);
349
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiYWRkT3BlcmF0b3IiLCJnZXRTdXBwb3J0ZWRPcGVyYXRpb25zIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRpb25zIiwiYU9wZXJhdGlvbnMiLCJuIiwicHVzaCIsIm1hcCIsImtleSIsImhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJvQ29uZGl0aW9ucyIsImFTZW1hbnRpY0RhdGVPcHMiLCJhRmlsdGVyQ29uZHRpb24iLCJvU2VtYW50aWNPcGVyYXRvciIsImZpbmQiLCJvQ29uZGl0aW9uIiwib3BlcmF0b3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFLQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLElBQWpCLEVBQXVCLFdBQXZCLENBQTdCO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsY0FBOUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1DLHlCQUF5QixHQUFHLGtCQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLG1CQUFuQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLGVBQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxh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VSxDQUFDQyxRQUFwQyxJQUFnRCxDQUFDLENBQXhEO0FBQ0EsU0FGeUIsQ0FBMUI7O0FBR0EsWUFBSUgsaUJBQUosRUFBdUI7QUFDdEIsaUJBQU8sS0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0E7QUEzQzRCLEdBQTlCO1NBOENlckIscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3JVdGlsIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9GaWx0ZXJPcGVyYXRvclV0aWxcIjtcbmltcG9ydCBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBNb2RlbE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5pbXBvcnQgeyBDb3JlRXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbmNvbnN0IGFTdXBwb3J0ZWRPcGVyYXRpb25zID0gW1wiREFURVwiLCBcIkZST01cIiwgXCJUT1wiLCBcIkRBVEVSQU5HRVwiXTtcbmNvbnN0IERZTkFNSUNfREFURV9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFXCI7XG5jb25zdCBGSVhFRF9EQVRFX0NBVEVHT1JZID0gXCJGSVhFRC5EQVRFXCI7XG5jb25zdCBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEUuSU5UXCI7XG5jb25zdCBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFUkFOR0VcIjtcbmNvbnN0IERZTkFNSUNfTU9OVEhfQ0FURUdPUlkgPSBcIkRZTkFNSUMuTU9OVEhcIjtcbmNvbnN0IEZJWEVEX1dFRUtfQ0FURUdPUlkgPSBcIkZJWEVELldFRUtcIjtcbmNvbnN0IEZJWEVEX01PTlRIX0NBVEVHT1JZID0gXCJGSVhFRC5NT05USFwiO1xuY29uc3QgRklYRURfUVVBUlRFUl9DQVRFR09SWSA9IFwiRklYRUQuUVVBUlRFUlwiO1xuY29uc3QgRklYRURfWUVBUl9DQVRFR09SWSA9IFwiRklYRUQuWUVBUlwiO1xuY29uc3QgRFlOQU1JQ19XRUVLX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5XRUVLLklOVFwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuTU9OVEguSU5UXCI7XG5jb25zdCBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLlFVQVJURVIuSU5UXCI7XG5jb25zdCBEWU5BTUlDX1lFQVJfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLllFQVIuSU5UXCI7XG5jb25zdCBtU2VtYW50aWNEYXRlT3BlcmF0aW9uczogYW55ID0ge1xuXHRcIkRBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiRlJPTVwiOiB7XG5cdFx0XCJrZXlcIjogXCJGUk9NXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJUT1wiOiB7XG5cdFx0XCJrZXlcIjogXCJUT1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiREFURVJBTkdFXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVSQU5HRVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUllcblx0fSxcblx0XCJTUEVDSUZJQ01PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIlNQRUNJRklDTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJUT0RBWVwiOiB7XG5cdFx0XCJrZXlcIjogXCJUT0RBWVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZRlJPTVRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZRlJPTVRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiWUVTVEVSREFZXCI6IHtcblx0XHRcImtleVwiOiBcIllFU1RFUkRBWVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPTU9SUk9XXCI6IHtcblx0XHRcImtleVwiOiBcIlRPTU9SUk9XXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVERBWVNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVERBWVNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNXRUVLXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNXRUVLXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9XRUVLX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFdFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFdFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1NcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFdFRUtTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFdFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFdFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1NcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFdFRUtTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU01PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVE1PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVE1PTlRIU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVE1PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVE1PTlRIU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTUVVBUlRFUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTUVVBUlRFUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RRVUFSVEVSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRRVUFSVEVSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIxXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIxXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjJcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSM1wiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSM1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVI0XCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVI0XCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1lFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUWUVBUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUWUVBUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRUFSVE9EQVRFXCI6IHtcblx0XHRcImtleVwiOiBcIllFQVJUT0RBVEVcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFVE9ZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVUT1lFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fVxufTtcblxuZnVuY3Rpb24gX2dldERhdGVSYW5nZU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZTogYW55KSB7XG5cdGNvbnN0IHNEYXRlUmFuZ2UgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVfUkFOR0VcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVJBTkdFXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuQlQsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoW14hXS4qKSBcXFxcLSAoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSAtIHsxfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGYsIChPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGVSYW5nZSxcblx0XHR0b2tlblRleHQ6IHNEYXRlUmFuZ2UsXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCIsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uKGFWYWx1ZXM6IGFueSwgb1R5cGU6IGFueSkge1xuXHRcdFx0aWYgKGFWYWx1ZXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJEYXRlIFJhbmdlIG11c3QgaGF2ZSB0d28gdmFsdWVzXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzBdKTtcblx0XHRcdFx0Y29uc3QgdG9EYXRlID0gbmV3IERhdGUoYVZhbHVlc1sxXSk7XG5cdFx0XHRcdGlmIChmcm9tRGF0ZS5nZXRUaW1lKCkgPiB0b0RhdGUuZ2V0VGltZSgpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRnJvbSBEYXRlIFNob3VsZCBCZSBMZXNzIFRoYW4gVG8gRGF0ZVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0T3BlcmF0b3IucHJvdG90eXBlLnZhbGlkYXRlLmFwcGx5KHRoaXMsIFthVmFsdWVzLCBvVHlwZV0pO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGUgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkVRLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGUsXG5cdFx0dG9rZW5UZXh0OiBzRGF0ZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRnJvbSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfRlJPTVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJGUk9NXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuR0UsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRnJvbSxcblx0XHR0b2tlblRleHQ6IHNGcm9tLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0VG9PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzVG8gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1RPXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIlRPXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuTEUsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzVG8sXG5cdFx0dG9rZW5UZXh0OiBzVG8sXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbjogYW55LCBhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0aWYgKCFhT3BlcmF0b3JDb25maWd1cmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbiA9IEFycmF5LmlzQXJyYXkoYU9wZXJhdG9yQ29uZmlndXJhdGlvbikgPyBhT3BlcmF0b3JDb25maWd1cmF0aW9uIDogW2FPcGVyYXRvckNvbmZpZ3VyYXRpb25dO1xuXHRsZXQgYlJlc3VsdDtcblxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uLnNvbWUoZnVuY3Rpb24ob09wZXJhdG9yQ29uZmlndXJhdGlvbjogYW55KSB7XG5cdFx0bGV0IGo7XG5cdFx0aWYgKCFvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGgpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBzVmFsdWUgPSBvT3BlcmF0aW9uW29PcGVyYXRvckNvbmZpZ3VyYXRpb24ucGF0aF07XG5cdFx0Y29uc3QgYkV4Y2x1ZGUgPSBvT3BlcmF0b3JDb25maWd1cmF0aW9uLmV4Y2x1ZGUgfHwgZmFsc2U7XG5cdFx0bGV0IGFPcGVyYXRvclZhbHVlcztcblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmNvbnRhaW5zICYmIHNWYWx1ZSkge1xuXHRcdFx0YU9wZXJhdG9yVmFsdWVzID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucy5zcGxpdChcIixcIik7XG5cdFx0XHRiUmVzdWx0ID0gYkV4Y2x1ZGU7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgYU9wZXJhdG9yVmFsdWVzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIWJFeGNsdWRlICYmIHNWYWx1ZS5pbmRleE9mKGFPcGVyYXRvclZhbHVlc1tqXSkgPiAtMSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzICYmIHNWYWx1ZSkge1xuXHRcdFx0YU9wZXJhdG9yVmFsdWVzID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5lcXVhbHMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlID09PSBhT3BlcmF0b3JWYWx1ZXNbal0pIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIWJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IHRydWU7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0pO1xuXHRyZXR1cm4gYlJlc3VsdDtcbn1cbmNvbnN0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyA9IHtcblx0Ly8gRXh0ZW5kaW5nIG9wZXJhdG9ycyBmb3IgU2VtYXRpYyBEYXRlIENvbnRyb2xcblx0YWRkU2VtYW50aWNEYXRlT3BlcmF0b3JzOiBmdW5jdGlvbigpIHtcblx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRcdEZpbHRlck9wZXJhdG9yVXRpbC5hZGRPcGVyYXRvcihfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXRGcm9tT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXRUb09wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZSkpO1xuXHR9LFxuXHRnZXRTdXBwb3J0ZWRPcGVyYXRpb25zOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gYVN1cHBvcnRlZE9wZXJhdGlvbnM7XG5cdH0sXG5cdGdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhtU2VtYW50aWNEYXRlT3BlcmF0aW9ucyk7XG5cdH0sXG5cdC8vIFRPRE86IFdvdWxkIG5lZWQgdG8gY2hlY2sgd2l0aCBNREMgZm9yIHJlbW92ZU9wZXJhdG9yIG1ldGhvZFxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5cdHJlbW92ZVNlbWFudGljRGF0ZU9wZXJhdG9yczogZnVuY3Rpb24oKSB7fSxcblx0Ly8gVG8gZmlsdGVyIG9wZXJhdG9ycyBiYXNlZCBvbiBtYW5pZmVzdCBhT3BlcmF0b3JDb25maWd1cmF0aW9uIHNldHRpbmdzXG5cdGdldEZpbHRlck9wZXJhdGlvbnM6IGZ1bmN0aW9uKGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGNvbnN0IGFPcGVyYXRpb25zID0gW107XG5cdFx0Zm9yIChjb25zdCBuIGluIG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBvT3BlcmF0aW9uID0gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnNbbl07XG5cdFx0XHRpZiAoX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uLCBhT3BlcmF0b3JDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRhT3BlcmF0aW9ucy5wdXNoKG9PcGVyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYU9wZXJhdGlvbnMubWFwKGZ1bmN0aW9uKG9PcGVyYXRpb246IGFueSkge1xuXHRcdFx0cmV0dXJuIG9PcGVyYXRpb24ua2V5O1xuXHRcdH0pO1xuXHR9LFxuXHRoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBmdW5jdGlvbihvQ29uZGl0aW9uczogYW55KSB7XG5cdFx0Y29uc3QgYVNlbWFudGljRGF0ZU9wcyA9IHRoaXMuZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucygpO1xuXHRcdGZvciAoY29uc3QgbiBpbiBvQ29uZGl0aW9ucykge1xuXHRcdFx0Y29uc3QgYUZpbHRlckNvbmR0aW9uID0gb0NvbmRpdGlvbnNbbl07XG5cdFx0XHRjb25zdCBvU2VtYW50aWNPcGVyYXRvciA9IGFGaWx0ZXJDb25kdGlvbi5maW5kKGZ1bmN0aW9uKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYVNlbWFudGljRGF0ZU9wcy5pbmRleE9mKG9Db25kaXRpb24ub3BlcmF0b3IpID4gLTE7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvU2VtYW50aWNPcGVyYXRvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG4iXX0=
349
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiYWRkT3BlcmF0b3IiLCJnZXRTdXBwb3J0ZWRPcGVyYXRpb25zIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRpb25zIiwiYU9wZXJhdGlvbnMiLCJuIiwicHVzaCIsIm1hcCIsImtleSIsImhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJvQ29uZGl0aW9ucyIsImFTZW1hbnRpY0RhdGVPcHMiLCJhRmlsdGVyQ29uZHRpb24iLCJvU2VtYW50aWNPcGVyYXRvciIsImZpbmQiLCJvQ29uZGl0aW9uIiwib3BlcmF0b3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFLQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLElBQWpCLEVBQXVCLFdBQXZCLENBQTdCO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsY0FBOUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1DLHlCQUF5QixHQUFHLGtCQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLG1CQUFuQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLGVBQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxh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VSxDQUFDQyxRQUFwQyxJQUFnRCxDQUFDLENBQXhEO0FBQ0EsU0FGeUIsQ0FBMUI7O0FBR0EsWUFBSUgsaUJBQUosRUFBdUI7QUFDdEIsaUJBQU8sS0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0E7QUEzQzRCLEdBQTlCO1NBOENlckIscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3JVdGlsIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9GaWx0ZXJPcGVyYXRvclV0aWxcIjtcbmltcG9ydCBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBNb2RlbE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IENvcmVFeCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuY29uc3QgYVN1cHBvcnRlZE9wZXJhdGlvbnMgPSBbXCJEQVRFXCIsIFwiRlJPTVwiLCBcIlRPXCIsIFwiREFURVJBTkdFXCJdO1xuY29uc3QgRFlOQU1JQ19EQVRFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVcIjtcbmNvbnN0IEZJWEVEX0RBVEVfQ0FURUdPUlkgPSBcIkZJWEVELkRBVEVcIjtcbmNvbnN0IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuREFURS5JTlRcIjtcbmNvbnN0IERZTkFNSUNfREFURVJBTkdFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVSQU5HRVwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USFwiO1xuY29uc3QgRklYRURfV0VFS19DQVRFR09SWSA9IFwiRklYRUQuV0VFS1wiO1xuY29uc3QgRklYRURfTU9OVEhfQ0FURUdPUlkgPSBcIkZJWEVELk1PTlRIXCI7XG5jb25zdCBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZID0gXCJGSVhFRC5RVUFSVEVSXCI7XG5jb25zdCBGSVhFRF9ZRUFSX0NBVEVHT1JZID0gXCJGSVhFRC5ZRUFSXCI7XG5jb25zdCBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLldFRUsuSU5UXCI7XG5jb25zdCBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USC5JTlRcIjtcbmNvbnN0IERZTkFNSUNfUVVBUlRFUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuUVVBUlRFUi5JTlRcIjtcbmNvbnN0IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuWUVBUi5JTlRcIjtcbmNvbnN0IG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBhbnkgPSB7XG5cdFwiREFURVwiOiB7XG5cdFx0XCJrZXlcIjogXCJEQVRFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJGUk9NXCI6IHtcblx0XHRcImtleVwiOiBcIkZST01cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFUkFOR0VcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVJBTkdFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWVxuXHR9LFxuXHRcIlNQRUNJRklDTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiU1BFQ0lGSUNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9EQVlGUk9NVE9cIjoge1xuXHRcdFwia2V5XCI6IFwiVE9EQVlGUk9NVE9cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRVNURVJEQVlcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVTVEVSREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9NT1JST1dcIjoge1xuXHRcdFwia2V5XCI6IFwiVE9NT1JST1dcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFREQVlTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFREQVlTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1dFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1dFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU01PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJORVhUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjFcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjFcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSMlwiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSMlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIzXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIzXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjRcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjRcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJUSElTWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIllFQVJUT0RBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVBUlRPREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkRBVEVUT1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVRPWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9XG59O1xuXG5mdW5jdGlvbiBfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGVSYW5nZSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfREFURV9SQU5HRVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJEQVRFUkFOR0VcIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5CVCxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKChbXiFdLiopIFxcXFwtICguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9IC0gezF9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZiwgKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRGF0ZVJhbmdlLFxuXHRcdHRva2VuVGV4dDogc0RhdGVSYW5nZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIixcblx0XHR2YWxpZGF0ZTogZnVuY3Rpb24gKGFWYWx1ZXM6IGFueSwgb1R5cGU6IGFueSkge1xuXHRcdFx0aWYgKGFWYWx1ZXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJEYXRlIFJhbmdlIG11c3QgaGF2ZSB0d28gdmFsdWVzXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzBdKTtcblx0XHRcdFx0Y29uc3QgdG9EYXRlID0gbmV3IERhdGUoYVZhbHVlc1sxXSk7XG5cdFx0XHRcdGlmIChmcm9tRGF0ZS5nZXRUaW1lKCkgPiB0b0RhdGUuZ2V0VGltZSgpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRnJvbSBEYXRlIFNob3VsZCBCZSBMZXNzIFRoYW4gVG8gRGF0ZVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0T3BlcmF0b3IucHJvdG90eXBlLnZhbGlkYXRlLmFwcGx5KHRoaXMsIFthVmFsdWVzLCBvVHlwZV0pO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGUgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkVRLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGUsXG5cdFx0dG9rZW5UZXh0OiBzRGF0ZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRnJvbSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfRlJPTVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJGUk9NXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuR0UsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRnJvbSxcblx0XHR0b2tlblRleHQ6IHNGcm9tLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0VG9PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzVG8gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1RPXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIlRPXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuTEUsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzVG8sXG5cdFx0dG9rZW5UZXh0OiBzVG8sXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbjogYW55LCBhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0aWYgKCFhT3BlcmF0b3JDb25maWd1cmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbiA9IEFycmF5LmlzQXJyYXkoYU9wZXJhdG9yQ29uZmlndXJhdGlvbikgPyBhT3BlcmF0b3JDb25maWd1cmF0aW9uIDogW2FPcGVyYXRvckNvbmZpZ3VyYXRpb25dO1xuXHRsZXQgYlJlc3VsdDtcblxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uLnNvbWUoZnVuY3Rpb24gKG9PcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGxldCBqO1xuXHRcdGlmICghb09wZXJhdG9yQ29uZmlndXJhdGlvbi5wYXRoKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc1ZhbHVlID0gb09wZXJhdGlvbltvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGhdO1xuXHRcdGNvbnN0IGJFeGNsdWRlID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5leGNsdWRlIHx8IGZhbHNlO1xuXHRcdGxldCBhT3BlcmF0b3JWYWx1ZXM7XG5cblx0XHRpZiAob09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uY29udGFpbnMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlLmluZGV4T2YoYU9wZXJhdG9yVmFsdWVzW2pdKSA+IC0xKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmVxdWFscyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzLnNwbGl0KFwiLFwiKTtcblx0XHRcdGJSZXN1bHQgPSBiRXhjbHVkZTtcblx0XHRcdGZvciAoaiA9IDA7IGogPCBhT3BlcmF0b3JWYWx1ZXMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0aWYgKGJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUgPT09IGFPcGVyYXRvclZhbHVlc1tqXSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KTtcblx0cmV0dXJuIGJSZXN1bHQ7XG59XG5jb25zdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSB7XG5cdC8vIEV4dGVuZGluZyBvcGVyYXRvcnMgZm9yIFNlbWF0aWMgRGF0ZSBDb250cm9sXG5cdGFkZFNlbWFudGljRGF0ZU9wZXJhdG9yczogZnVuY3Rpb24gKCkge1xuXHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlUmFuZ2VPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldERhdGVPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldFRvT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdH0sXG5cdGdldFN1cHBvcnRlZE9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gYVN1cHBvcnRlZE9wZXJhdGlvbnM7XG5cdH0sXG5cdGdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMobVNlbWFudGljRGF0ZU9wZXJhdGlvbnMpO1xuXHR9LFxuXHQvLyBUT0RPOiBXb3VsZCBuZWVkIHRvIGNoZWNrIHdpdGggTURDIGZvciByZW1vdmVPcGVyYXRvciBtZXRob2Rcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuXHRyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uICgpIHt9LFxuXHQvLyBUbyBmaWx0ZXIgb3BlcmF0b3JzIGJhc2VkIG9uIG1hbmlmZXN0IGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gc2V0dGluZ3Ncblx0Z2V0RmlsdGVyT3BlcmF0aW9uczogZnVuY3Rpb24gKGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGNvbnN0IGFPcGVyYXRpb25zID0gW107XG5cdFx0Zm9yIChjb25zdCBuIGluIG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBvT3BlcmF0aW9uID0gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnNbbl07XG5cdFx0XHRpZiAoX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uLCBhT3BlcmF0b3JDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRhT3BlcmF0aW9ucy5wdXNoKG9PcGVyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYU9wZXJhdGlvbnMubWFwKGZ1bmN0aW9uIChvT3BlcmF0aW9uOiBhbnkpIHtcblx0XHRcdHJldHVybiBvT3BlcmF0aW9uLmtleTtcblx0XHR9KTtcblx0fSxcblx0aGFzU2VtYW50aWNEYXRlT3BlcmF0aW9uczogZnVuY3Rpb24gKG9Db25kaXRpb25zOiBhbnkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNEYXRlT3BzID0gdGhpcy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBuIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRjb25zdCBhRmlsdGVyQ29uZHRpb24gPSBvQ29uZGl0aW9uc1tuXTtcblx0XHRcdGNvbnN0IG9TZW1hbnRpY09wZXJhdG9yID0gYUZpbHRlckNvbmR0aW9uLmZpbmQoZnVuY3Rpb24gKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYVNlbWFudGljRGF0ZU9wcy5pbmRleE9mKG9Db25kaXRpb24ub3BlcmF0b3IpID4gLTE7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvU2VtYW50aWNPcGVyYXRvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG4iXX0=
@@ -3,7 +3,7 @@ import FilterOperatorUtil from "sap/ui/mdc/condition/FilterOperatorUtil";
3
3
  import Operator from "sap/ui/mdc/condition/Operator";
4
4
  import ModelOperator from "sap/ui/model/FilterOperator";
5
5
  import ValidateException from "sap/ui/model/ValidateException";
6
- import { CoreEx } from "types/extension_types";
6
+ import type { CoreEx } from "types/extension_types";
7
7
 
8
8
  const aSupportedOperations = ["DATE", "FROM", "TO", "DATERANGE"];
9
9
  const DYNAMIC_DATE_CATEGORY = "DYNAMIC.DATE";
@@ -181,7 +181,7 @@ function _getDateRangeOperator(oResourceBundle: any) {
181
181
  longText: sDateRange,
182
182
  tokenText: sDateRange,
183
183
  additionalInfo: "",
184
- validate: function(aValues: any, oType: any) {
184
+ validate: function (aValues: any, oType: any) {
185
185
  if (aValues.length < 2) {
186
186
  throw new ValidateException("Date Range must have two values");
187
187
  } else {
@@ -245,7 +245,7 @@ function _filterOperation(oOperation: any, aOperatorConfiguration: any) {
245
245
  aOperatorConfiguration = Array.isArray(aOperatorConfiguration) ? aOperatorConfiguration : [aOperatorConfiguration];
246
246
  let bResult;
247
247
 
248
- aOperatorConfiguration.some(function(oOperatorConfiguration: any) {
248
+ aOperatorConfiguration.some(function (oOperatorConfiguration: any) {
249
249
  let j;
250
250
  if (!oOperatorConfiguration.path) {
251
251
  return false;
@@ -289,24 +289,24 @@ function _filterOperation(oOperation: any, aOperatorConfiguration: any) {
289
289
  }
290
290
  const SemanticDateOperators = {
291
291
  // Extending operators for Sematic Date Control
292
- addSemanticDateOperators: function() {
292
+ addSemanticDateOperators: function () {
293
293
  const oResourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
294
294
  FilterOperatorUtil.addOperator(_getDateRangeOperator(oResourceBundle));
295
295
  FilterOperatorUtil.addOperator(_getDateOperator(oResourceBundle));
296
296
  FilterOperatorUtil.addOperator(_getFromOperator(oResourceBundle));
297
297
  FilterOperatorUtil.addOperator(_getToOperator(oResourceBundle));
298
298
  },
299
- getSupportedOperations: function() {
299
+ getSupportedOperations: function () {
300
300
  return aSupportedOperations;
301
301
  },
302
- getSemanticDateOperations: function() {
302
+ getSemanticDateOperations: function () {
303
303
  return Object.keys(mSemanticDateOperations);
304
304
  },
305
305
  // TODO: Would need to check with MDC for removeOperator method
306
306
  // eslint-disable-next-line @typescript-eslint/no-empty-function
307
- removeSemanticDateOperators: function() {},
307
+ removeSemanticDateOperators: function () {},
308
308
  // To filter operators based on manifest aOperatorConfiguration settings
309
- getFilterOperations: function(aOperatorConfiguration: any) {
309
+ getFilterOperations: function (aOperatorConfiguration: any) {
310
310
  const aOperations = [];
311
311
  for (const n in mSemanticDateOperations) {
312
312
  const oOperation = mSemanticDateOperations[n];
@@ -314,15 +314,15 @@ const SemanticDateOperators = {
314
314
  aOperations.push(oOperation);
315
315
  }
316
316
  }
317
- return aOperations.map(function(oOperation: any) {
317
+ return aOperations.map(function (oOperation: any) {
318
318
  return oOperation.key;
319
319
  });
320
320
  },
321
- hasSemanticDateOperations: function(oConditions: any) {
321
+ hasSemanticDateOperations: function (oConditions: any) {
322
322
  const aSemanticDateOps = this.getSemanticDateOperations();
323
323
  for (const n in oConditions) {
324
324
  const aFilterCondtion = oConditions[n];
325
- const oSemanticOperator = aFilterCondtion.find(function(oCondition: any) {
325
+ const oSemanticOperator = aFilterCondtion.find(function (oCondition: any) {
326
326
  return aSemanticDateOps.indexOf(oCondition.operator) > -1;
327
327
  });
328
328
  if (oSemanticOperator) {
@@ -32,7 +32,7 @@ sap.ui.define(["sap/base/Log"], function (Log) {
32
32
 
33
33
  if (this._isPathForSemantic(sTechnicalPath) && oSemanticObjectInformation.semanticKeys) {
34
34
  var aSemanticKeys = oSemanticObjectInformation.semanticKeys,
35
- oEntityType = oMetaModel.getObject("/" + oMetaModel.getObject("/" + sEntitySetName).$Type);
35
+ oEntityType = oMetaModel.getObject("/".concat(oMetaModel.getObject("/".concat(sEntitySetName)).$Type));
36
36
 
37
37
  try {
38
38
  var sSemanticKeysPart = aSemanticKeys.map(function (oSemanticKey) {
@@ -40,7 +40,7 @@ sap.ui.define(["sap/base/Log"], function (Log) {
40
40
  var sKeyValue = oContext.getProperty(sPropertyPath);
41
41
 
42
42
  if (sKeyValue === undefined || sKeyValue === null) {
43
- throw new Error("Couldn't resolve semantic key value for " + sPropertyPath);
43
+ throw new Error("Couldn't resolve semantic key value for ".concat(sPropertyPath));
44
44
  } else {
45
45
  if (oEntityType[sPropertyPath].$Type === "Edm.String") {
46
46
  sKeyValue = "'".concat(encodeURIComponent(sKeyValue), "'");
@@ -73,4 +73,4 @@ sap.ui.define(["sap/base/Log"], function (Log) {
73
73
  };
74
74
  return SemanticKeyHelper;
75
75
  }, false);
76
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljS2V5SGVscGVyLnRzIl0sIm5hbWVzIjpbIlNlbWFudGljS2V5SGVscGVyIiwiZ2V0U2VtYW50aWNLZXlzIiwib01ldGFNb2RlbCIsInNFbnRpdHlTZXROYW1lIiwiZ2V0T2JqZWN0IiwiZ2V0U2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbiIsIm9TZW1hbnRpY09iamVjdCIsImFTZW1hbnRpY0tleXMiLCJzZW1hbnRpY09iamVjdCIsInNlbWFudGljS2V5cyIsImdldFNlbWFudGljUGF0aCIsIm9Db250ZXh0IiwiYlN0cmljdCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZ2V0TWV0YUNvbnRleHQiLCJnZXRQYXRoIiwib1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24iLCJzVGVjaG5pY2FsUGF0aCIsInNTZW1hbnRpY1BhdGgiLCJpc0EiLCJpc1JlbGF0aXZlIiwiZ2V0SGVhZGVyQ29udGV4dCIsIl9pc1BhdGhGb3JTZW1hbnRpYyIsIm9FbnRpdHlUeXBlIiwiJFR5cGUiLCJzU2VtYW50aWNLZXlzUGFydCIsIm1hcCIsIm9TZW1hbnRpY0tleSIsInNQcm9wZXJ0eVBhdGgiLCIkUHJvcGVydHlQYXRoIiwic0tleVZhbHVlIiwiZ2V0UHJvcGVydHkiLCJ1bmRlZmluZWQiLCJFcnJvciIsImVuY29kZVVSSUNvbXBvbmVudCIsImxlbmd0aCIsImpvaW4iLCJlIiwiTG9nIiwiaW5mbyIsInNQYXRoIiwidGVzdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUNBLE1BQU1BLGlCQUFpQixHQUFHO0FBQ3pCQyxJQUFBQSxlQUFlLEVBQUUsVUFBU0MsVUFBVCxFQUFxQ0MsY0FBckMsRUFBNkQ7QUFDN0UsYUFBT0QsVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixrREFBUDtBQUNBLEtBSHdCO0FBSXpCRSxJQUFBQSw0QkFBNEIsRUFBRSxVQUFTSCxVQUFULEVBQXFDQyxjQUFyQyxFQUE2RDtBQUMxRixVQUFNRyxlQUFlLEdBQUdK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QyxJQUF6QixDQUE4QkQsS0FBOUIsQ0FBUDtBQUNBO0FBbEV3QixHQUExQjtTQXFFZXpDLGlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbmNvbnN0IFNlbWFudGljS2V5SGVscGVyID0ge1xuXHRnZXRTZW1hbnRpY0tleXM6IGZ1bmN0aW9uKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY0tleWApO1xuXHR9LFxuXHRnZXRTZW1hbnRpY09iamVjdEluZm9ybWF0aW9uOiBmdW5jdGlvbihvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCwgc0VudGl0eVNldE5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IG9TZW1hbnRpY09iamVjdCA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdGApO1xuXHRcdGNvbnN0IGFTZW1hbnRpY0tleXMgPSB0aGlzLmdldFNlbWFudGljS2V5cyhvTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbWFudGljT2JqZWN0OiBvU2VtYW50aWNPYmplY3QsXG5cdFx0XHRzZW1hbnRpY0tleXM6IGFTZW1hbnRpY0tleXNcblx0XHR9O1xuXHR9LFxuXHRnZXRTZW1hbnRpY1BhdGg6IGZ1bmN0aW9uKG9Db250ZXh0OiBhbnksIGJTdHJpY3Q6IGJvb2xlYW4gPSBmYWxzZSkge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0c0VudGl0eVNldE5hbWUgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KG9Db250ZXh0LmdldFBhdGgoKSkuZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIiksXG5cdFx0XHRvU2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbiA9IHRoaXMuZ2V0U2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbihvTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZSk7XG5cdFx0bGV0IHNUZWNobmljYWxQYXRoLCBzU2VtYW50aWNQYXRoO1xuXG5cdFx0aWYgKG9Db250ZXh0LmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpICYmIG9Db250ZXh0LmlzUmVsYXRpdmUoKSkge1xuXHRcdFx0c1RlY2huaWNhbFBhdGggPSBvQ29udGV4dC5nZXRIZWFkZXJDb250ZXh0KCkuZ2V0UGF0aCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzVGVjaG5pY2FsUGF0aCA9IG9Db250ZXh0LmdldFBhdGgoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5faXNQYXRoRm9yU2VtYW50aWMoc1RlY2huaWNhbFBhdGgpICYmIG9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uLnNlbWFudGljS2V5cykge1xuXHRcdFx0Y29uc3QgYVNlbWFudGljS2V5cyA9IG9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uLnNlbWFudGljS2V5cyxcblx0XHRcdFx0b0VudGl0eVR5cGUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9cIiArIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiICsgc0VudGl0eVNldE5hbWUpLiRUeXBlKTtcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc1NlbWFudGljS2V5c1BhcnQgPSBhU2VtYW50aWNLZXlzXG5cdFx0XHRcdFx0Lm1hcChmdW5jdGlvbihvU2VtYW50aWNLZXk6IGFueSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IG9TZW1hbnRpY0tleS4kUHJvcGVydHlQYXRoO1xuXHRcdFx0XHRcdFx0bGV0IHNLZXlWYWx1ZSA9IG9Db250ZXh0LmdldFByb3BlcnR5KHNQcm9wZXJ0eVBhdGgpO1xuXG5cdFx0XHRcdFx0XHRpZiAoc0tleVZhbHVlID09PSB1bmRlZmluZWQgfHwgc0tleVZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IHJlc29sdmUgc2VtYW50aWMga2V5IHZhbHVlIGZvciBcIiArIHNQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKG9FbnRpdHlUeXBlW3NQcm9wZXJ0eVBhdGhdLiRUeXBlID09PSBcIkVkbS5TdHJpbmdcIikge1xuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAnJHtlbmNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlKX0nYDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYVNlbWFudGljS2V5cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gU2V2ZXJhbCBzZW1hbnRpYyBrZXlzIC0tPiBwYXRoIHNob3VsZCBiZSBlbnRpdHlTZXQoa2V5MT12YWx1ZTEsIGtleTI9dmFsdWUyLCAuLi4pXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtlZXAgZW50aXR5U2V0KGtleVZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAke3NQcm9wZXJ0eVBhdGh9PSR7c0tleVZhbHVlfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNLZXlWYWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5qb2luKFwiLFwiKTtcblxuXHRcdFx0XHRzU2VtYW50aWNQYXRoID0gYC8ke3NFbnRpdHlTZXROYW1lfSgke3NTZW1hbnRpY0tleXNQYXJ0fSlgO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRMb2cuaW5mbyhlIGFzIGFueSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGJTdHJpY3QgPyBzU2VtYW50aWNQYXRoIDogc1NlbWFudGljUGF0aCB8fCBzVGVjaG5pY2FsUGF0aDtcblx0fSxcblxuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblx0Ly8gSU5URVJOQUwgTUVUSE9EU1xuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXHRfaXNQYXRoRm9yU2VtYW50aWM6IGZ1bmN0aW9uKHNQYXRoOiBhbnkpIHtcblx0XHQvLyBPbmx5IHBhdGggb24gcm9vdCBvYmplY3RzIGFsbG93IHNlbWFudGljIGtleXMsIGkuZS4gc1BhdGggPSB4eHgoeXl5KVxuXHRcdHJldHVybiAvXlteXFwoXFwpXStcXChbXlxcKFxcKV0rXFwpJC8udGVzdChzUGF0aCk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlbWFudGljS2V5SGVscGVyO1xuIl19
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljS2V5SGVscGVyLnRzIl0sIm5hbWVzIjpbIlNlbWFudGljS2V5SGVscGVyIiwiZ2V0U2VtYW50aWNLZXlzIiwib01ldGFNb2RlbCIsInNFbnRpdHlTZXROYW1lIiwiZ2V0T2JqZWN0IiwiZ2V0U2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbiIsIm9TZW1hbnRpY09iamVjdCIsImFTZW1hbnRpY0tleXMiLCJzZW1hbnRpY09iamVjdCIsInNlbWFudGljS2V5cyIsImdldFNlbWFudGljUGF0aCIsIm9Db250ZXh0IiwiYlN0cmljdCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZ2V0TWV0YUNvbnRleHQiLCJnZXRQYXRoIiwib1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24iLCJzVGVjaG5pY2FsUGF0aCIsInNTZW1hbnRpY1BhdGgiLCJpc0EiLCJpc1JlbGF0aXZlIiwiZ2V0SGVhZGVyQ29udGV4dCIsIl9pc1BhdGhGb3JTZW1hbnRpYyIsIm9FbnRpdHlUeXBlIiwiJFR5cGUiLCJzU2VtYW50aWNLZXlzUGFydCIsIm1hcCIsIm9TZW1hbnRpY0tleSIsInNQcm9wZXJ0eVBhdGgiLCIkUHJvcGVydHlQYXRoIiwic0tleVZhbHVlIiwiZ2V0UHJvcGVydHkiLCJ1bmRlZmluZWQiLCJFcnJvciIsImVuY29kZVVSSUNvbXBvbmVudCIsImxlbmd0aCIsImpvaW4iLCJlIiwiTG9nIiwiaW5mbyIsInNQYXRoIiwidGVzdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUNBLE1BQU1BLGlCQUFpQixHQUFHO0FBQ3pCQyxJQUFBQSxlQUFlLEVBQUUsVUFBVUMsVUFBVixFQUFzQ0MsY0FBdEMsRUFBOEQ7QUFDOUUsYUFBT0QsVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixrREFBUDtBQUNBLEtBSHdCO0FBSXpCRSxJQUFBQSw0QkFBNEIsRUFBRSxVQUFVSCxVQUFWLEVBQXNDQyxjQUF0QyxFQUE4RDtBQUMzRixVQUFNRyxlQUFlLEdBQUdK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S0FBOUIsQ0FBUDtBQUNBO0FBbEV3QixHQUExQjtTQXFFZXpDLGlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuY29uc3QgU2VtYW50aWNLZXlIZWxwZXIgPSB7XG5cdGdldFNlbWFudGljS2V5czogZnVuY3Rpb24gKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY0tleWApO1xuXHR9LFxuXHRnZXRTZW1hbnRpY09iamVjdEluZm9ybWF0aW9uOiBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIHNFbnRpdHlTZXROYW1lOiBzdHJpbmcpIHtcblx0XHRjb25zdCBvU2VtYW50aWNPYmplY3QgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0VudGl0eVNldE5hbWV9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VtYW50aWNPYmplY3RgKTtcblx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gdGhpcy5nZXRTZW1hbnRpY0tleXMob01ldGFNb2RlbCwgc0VudGl0eVNldE5hbWUpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW1hbnRpY09iamVjdDogb1NlbWFudGljT2JqZWN0LFxuXHRcdFx0c2VtYW50aWNLZXlzOiBhU2VtYW50aWNLZXlzXG5cdFx0fTtcblx0fSxcblx0Z2V0U2VtYW50aWNQYXRoOiBmdW5jdGlvbiAob0NvbnRleHQ6IGFueSwgYlN0cmljdDogYm9vbGVhbiA9IGZhbHNlKSB7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRzRW50aXR5U2V0TmFtZSA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQob0NvbnRleHQuZ2V0UGF0aCgpKS5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSxcblx0XHRcdG9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uID0gdGhpcy5nZXRTZW1hbnRpY09iamVjdEluZm9ybWF0aW9uKG9NZXRhTW9kZWwsIHNFbnRpdHlTZXROYW1lKTtcblx0XHRsZXQgc1RlY2huaWNhbFBhdGgsIHNTZW1hbnRpY1BhdGg7XG5cblx0XHRpZiAob0NvbnRleHQuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikgJiYgb0NvbnRleHQuaXNSZWxhdGl2ZSgpKSB7XG5cdFx0XHRzVGVjaG5pY2FsUGF0aCA9IG9Db250ZXh0LmdldEhlYWRlckNvbnRleHQoKS5nZXRQYXRoKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNUZWNobmljYWxQYXRoID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9pc1BhdGhGb3JTZW1hbnRpYyhzVGVjaG5pY2FsUGF0aCkgJiYgb1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24uc2VtYW50aWNLZXlzKSB7XG5cdFx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gb1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24uc2VtYW50aWNLZXlzLFxuXHRcdFx0XHRvRW50aXR5VHlwZSA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0VudGl0eVNldE5hbWV9YCkuJFR5cGV9YCk7XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHNTZW1hbnRpY0tleXNQYXJ0ID0gYVNlbWFudGljS2V5c1xuXHRcdFx0XHRcdC5tYXAoZnVuY3Rpb24gKG9TZW1hbnRpY0tleTogYW55KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzUHJvcGVydHlQYXRoID0gb1NlbWFudGljS2V5LiRQcm9wZXJ0eVBhdGg7XG5cdFx0XHRcdFx0XHRsZXQgc0tleVZhbHVlID0gb0NvbnRleHQuZ2V0UHJvcGVydHkoc1Byb3BlcnR5UGF0aCk7XG5cblx0XHRcdFx0XHRcdGlmIChzS2V5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBzS2V5VmFsdWUgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCByZXNvbHZlIHNlbWFudGljIGtleSB2YWx1ZSBmb3IgJHtzUHJvcGVydHlQYXRofWApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKG9FbnRpdHlUeXBlW3NQcm9wZXJ0eVBhdGhdLiRUeXBlID09PSBcIkVkbS5TdHJpbmdcIikge1xuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAnJHtlbmNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlKX0nYDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYVNlbWFudGljS2V5cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gU2V2ZXJhbCBzZW1hbnRpYyBrZXlzIC0tPiBwYXRoIHNob3VsZCBiZSBlbnRpdHlTZXQoa2V5MT12YWx1ZTEsIGtleTI9dmFsdWUyLCAuLi4pXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtlZXAgZW50aXR5U2V0KGtleVZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAke3NQcm9wZXJ0eVBhdGh9PSR7c0tleVZhbHVlfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNLZXlWYWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5qb2luKFwiLFwiKTtcblxuXHRcdFx0XHRzU2VtYW50aWNQYXRoID0gYC8ke3NFbnRpdHlTZXROYW1lfSgke3NTZW1hbnRpY0tleXNQYXJ0fSlgO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRMb2cuaW5mbyhlIGFzIGFueSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGJTdHJpY3QgPyBzU2VtYW50aWNQYXRoIDogc1NlbWFudGljUGF0aCB8fCBzVGVjaG5pY2FsUGF0aDtcblx0fSxcblxuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblx0Ly8gSU5URVJOQUwgTUVUSE9EU1xuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXHRfaXNQYXRoRm9yU2VtYW50aWM6IGZ1bmN0aW9uIChzUGF0aDogYW55KSB7XG5cdFx0Ly8gT25seSBwYXRoIG9uIHJvb3Qgb2JqZWN0cyBhbGxvdyBzZW1hbnRpYyBrZXlzLCBpLmUuIHNQYXRoID0geHh4KHl5eSlcblx0XHRyZXR1cm4gL15bXlxcKFxcKV0rXFwoW15cXChcXCldK1xcKSQvLnRlc3Qoc1BhdGgpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0tleUhlbHBlcjtcbiJdfQ==
@@ -1,11 +1,11 @@
1
1
  import Log from "sap/base/Log";
2
- import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
2
+ import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
3
3
 
4
4
  const SemanticKeyHelper = {
5
- getSemanticKeys: function(oMetaModel: ODataMetaModel, sEntitySetName: string) {
5
+ getSemanticKeys: function (oMetaModel: ODataMetaModel, sEntitySetName: string) {
6
6
  return oMetaModel.getObject(`/${sEntitySetName}/@com.sap.vocabularies.Common.v1.SemanticKey`);
7
7
  },
8
- getSemanticObjectInformation: function(oMetaModel: ODataMetaModel, sEntitySetName: string) {
8
+ getSemanticObjectInformation: function (oMetaModel: ODataMetaModel, sEntitySetName: string) {
9
9
  const oSemanticObject = oMetaModel.getObject(`/${sEntitySetName}/@com.sap.vocabularies.Common.v1.SemanticObject`);
10
10
  const aSemanticKeys = this.getSemanticKeys(oMetaModel, sEntitySetName);
11
11
  return {
@@ -13,7 +13,7 @@ const SemanticKeyHelper = {
13
13
  semanticKeys: aSemanticKeys
14
14
  };
15
15
  },
16
- getSemanticPath: function(oContext: any, bStrict: boolean = false) {
16
+ getSemanticPath: function (oContext: any, bStrict: boolean = false) {
17
17
  const oMetaModel = oContext.getModel().getMetaModel(),
18
18
  sEntitySetName = oMetaModel.getMetaContext(oContext.getPath()).getObject("@sapui.name"),
19
19
  oSemanticObjectInformation = this.getSemanticObjectInformation(oMetaModel, sEntitySetName);
@@ -27,16 +27,16 @@ const SemanticKeyHelper = {
27
27
 
28
28
  if (this._isPathForSemantic(sTechnicalPath) && oSemanticObjectInformation.semanticKeys) {
29
29
  const aSemanticKeys = oSemanticObjectInformation.semanticKeys,
30
- oEntityType = oMetaModel.getObject("/" + oMetaModel.getObject("/" + sEntitySetName).$Type);
30
+ oEntityType = oMetaModel.getObject(`/${oMetaModel.getObject(`/${sEntitySetName}`).$Type}`);
31
31
 
32
32
  try {
33
33
  const sSemanticKeysPart = aSemanticKeys
34
- .map(function(oSemanticKey: any) {
34
+ .map(function (oSemanticKey: any) {
35
35
  const sPropertyPath = oSemanticKey.$PropertyPath;
36
36
  let sKeyValue = oContext.getProperty(sPropertyPath);
37
37
 
38
38
  if (sKeyValue === undefined || sKeyValue === null) {
39
- throw new Error("Couldn't resolve semantic key value for " + sPropertyPath);
39
+ throw new Error(`Couldn't resolve semantic key value for ${sPropertyPath}`);
40
40
  } else {
41
41
  if (oEntityType[sPropertyPath].$Type === "Edm.String") {
42
42
  sKeyValue = `'${encodeURIComponent(sKeyValue)}'`;
@@ -64,7 +64,7 @@ const SemanticKeyHelper = {
64
64
  // INTERNAL METHODS
65
65
  // ==============================
66
66
 
67
- _isPathForSemantic: function(sPath: any) {
67
+ _isPathForSemantic: function (sPath: any) {
68
68
  // Only path on root objects allow semantic keys, i.e. sPath = xxx(yyy)
69
69
  return /^[^\(\)]+\([^\(\)]+\)$/.test(sPath);
70
70
  }