@sapui5/sap.fe.core 1.102.3 → 1.105.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +120 -0
  4. package/src/sap/fe/core/ActionRuntime.ts +108 -0
  5. package/src/sap/fe/core/AppComponent.js +81 -35
  6. package/src/sap/fe/core/AppComponent.ts +68 -44
  7. package/src/sap/fe/core/AppStateHandler.js +82 -70
  8. package/src/sap/fe/core/AppStateHandler.ts +32 -37
  9. package/src/sap/fe/core/BaseController.js +12 -10
  10. package/src/sap/fe/core/BaseController.ts +15 -13
  11. package/src/sap/fe/core/CommonUtils.js +291 -218
  12. package/src/sap/fe/core/CommonUtils.ts +315 -251
  13. package/src/sap/fe/core/ExtensionAPI.js +25 -28
  14. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  15. package/src/sap/fe/core/PageController.js +5 -5
  16. package/src/sap/fe/core/PageController.ts +4 -5
  17. package/src/sap/fe/core/TemplateComponent.js +21 -10
  18. package/src/sap/fe/core/TemplateComponent.ts +9 -6
  19. package/src/sap/fe/core/TemplateModel.js +2 -2
  20. package/src/sap/fe/core/TemplateModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
  22. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +8 -2
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +197 -43
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +164 -24
  25. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
  26. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
  27. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -230
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +275 -128
  29. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
  30. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
  31. package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
  32. package/src/sap/fe/core/controllerextensions/EditFlow.js +761 -700
  33. package/src/sap/fe/core/controllerextensions/EditFlow.ts +478 -514
  34. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +10 -10
  35. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  36. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +104 -75
  37. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +71 -79
  38. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +68 -68
  39. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
  40. package/src/sap/fe/core/controllerextensions/InternalRouting.js +162 -102
  41. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +177 -121
  42. package/src/sap/fe/core/controllerextensions/KPIManagement.js +67 -69
  43. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  44. package/src/sap/fe/core/controllerextensions/MassEdit.js +10 -10
  45. package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
  46. package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -13
  47. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
  48. package/src/sap/fe/core/controllerextensions/PageReady.js +98 -26
  49. package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
  50. package/src/sap/fe/core/controllerextensions/Paginator.js +31 -32
  51. package/src/sap/fe/core/controllerextensions/Paginator.ts +33 -34
  52. package/src/sap/fe/core/controllerextensions/Placeholder.js +5 -7
  53. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  54. package/src/sap/fe/core/controllerextensions/Routing.js +11 -12
  55. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  56. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  57. package/src/sap/fe/core/controllerextensions/Share.js +171 -140
  58. package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
  59. package/src/sap/fe/core/controllerextensions/SideEffects.js +47 -51
  60. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  61. package/src/sap/fe/core/controllerextensions/ViewState.js +201 -132
  62. package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
  63. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  64. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  65. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +13 -12
  66. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
  67. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +13 -12
  68. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +15 -15
  69. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -18
  70. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +60 -28
  71. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +29 -21
  72. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1424 -940
  73. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +799 -836
  74. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +410 -377
  75. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +275 -358
  76. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
  77. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
  78. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +752 -579
  79. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +631 -599
  80. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +92 -74
  81. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +49 -52
  82. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -41
  83. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +110 -84
  84. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +69 -81
  85. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +64 -73
  86. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +18 -2
  87. package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
  88. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +25 -24
  89. package/src/sap/fe/core/controls/Any.js +9 -5
  90. package/src/sap/fe/core/controls/Any.ts +10 -4
  91. package/src/sap/fe/core/controls/CommandExecution.js +12 -26
  92. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  93. package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -3
  94. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  95. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +26 -26
  96. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  97. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -3
  98. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  99. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  100. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  101. package/src/sap/fe/core/controls/FieldWrapper.js +3 -3
  102. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  103. package/src/sap/fe/core/controls/FileWrapper.js +9 -4
  104. package/src/sap/fe/core/controls/FileWrapper.ts +16 -12
  105. package/src/sap/fe/core/controls/FilterBar.js +7 -3
  106. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  107. package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
  108. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  109. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  110. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  111. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
  112. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +44 -19
  113. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
  114. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +17 -13
  115. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  116. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +4 -4
  117. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  118. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
  119. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
  120. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  121. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  122. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  123. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  124. package/src/sap/fe/core/converters/ConverterContext.js +48 -34
  125. package/src/sap/fe/core/converters/ConverterContext.ts +81 -67
  126. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  127. package/src/sap/fe/core/converters/ManifestSettings.ts +18 -15
  128. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  129. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  130. package/src/sap/fe/core/converters/MetaModelConverter.js +74 -40
  131. package/src/sap/fe/core/converters/MetaModelConverter.ts +176 -140
  132. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  133. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  134. package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
  135. package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
  136. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1956 -1494
  137. package/src/sap/fe/core/converters/controls/Common/Action.js +78 -51
  138. package/src/sap/fe/core/converters/controls/Common/Action.ts +87 -52
  139. package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -16
  140. package/src/sap/fe/core/converters/controls/Common/Chart.ts +42 -43
  141. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  142. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  143. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +65 -29
  144. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +93 -62
  145. package/src/sap/fe/core/converters/controls/Common/Form.js +31 -31
  146. package/src/sap/fe/core/converters/controls/Common/Form.ts +46 -57
  147. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  148. package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
  149. package/src/sap/fe/core/converters/controls/Common/Table.js +251 -264
  150. package/src/sap/fe/core/converters/controls/Common/Table.ts +344 -370
  151. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  152. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +147 -144
  153. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +89 -59
  154. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +118 -71
  155. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  156. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  157. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  158. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  159. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +131 -95
  160. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +123 -87
  161. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +98 -87
  162. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +121 -117
  163. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  164. package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
  165. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  166. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  167. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +8 -6
  168. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +18 -10
  169. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +136 -0
  170. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +139 -0
  171. package/src/sap/fe/core/converters/helpers/ID.js +48 -46
  172. package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
  173. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  174. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  175. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  176. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  177. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
  178. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  179. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  180. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +53 -75
  181. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +59 -90
  182. package/src/sap/fe/core/converters/templates/ListReportConverter.js +58 -57
  183. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +93 -86
  184. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +58 -44
  185. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +87 -80
  186. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  187. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  188. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  189. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  190. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  191. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  192. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  193. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  194. package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
  195. package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
  196. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  197. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  198. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
  199. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  200. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  201. package/src/sap/fe/core/fpm/Component.js +33 -7
  202. package/src/sap/fe/core/fpm/Component.ts +14 -0
  203. package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
  204. package/src/sap/fe/core/helpers/AppStartupHelper.js +19 -18
  205. package/src/sap/fe/core/helpers/AppStartupHelper.ts +41 -43
  206. package/src/sap/fe/core/helpers/BindingToolkit.js +1836 -0
  207. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +397 -270
  208. package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
  209. package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
  210. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  211. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  212. package/src/sap/fe/core/helpers/EditState.js +1 -6
  213. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  214. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  215. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  216. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  217. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  218. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  219. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  220. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
  221. package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
  222. package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
  223. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  224. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  225. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  226. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  227. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  228. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  229. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  230. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  231. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  232. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  233. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  234. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  235. package/src/sap/fe/core/helpers/Synchronization.js +1 -1
  236. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  237. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  238. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  239. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  240. package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
  241. package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
  242. package/src/sap/fe/core/jsx-runtime/jsx-control.js +110 -0
  243. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +92 -0
  244. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  245. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  246. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  247. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  248. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  249. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
  250. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
  251. package/src/sap/fe/core/library.js +42 -3
  252. package/src/sap/fe/core/library.support.js +1 -1
  253. package/src/sap/fe/core/library.ts +38 -0
  254. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  255. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  256. package/src/sap/fe/core/messagebundle.properties +39 -67
  257. package/src/sap/fe/core/messagebundle_ar.properties +27 -44
  258. package/src/sap/fe/core/messagebundle_bg.properties +27 -44
  259. package/src/sap/fe/core/messagebundle_ca.properties +27 -44
  260. package/src/sap/fe/core/messagebundle_cs.properties +27 -44
  261. package/src/sap/fe/core/messagebundle_cy.properties +26 -43
  262. package/src/sap/fe/core/messagebundle_da.properties +27 -44
  263. package/src/sap/fe/core/messagebundle_de.properties +25 -42
  264. package/src/sap/fe/core/messagebundle_el.properties +28 -45
  265. package/src/sap/fe/core/messagebundle_en.properties +27 -44
  266. package/src/sap/fe/core/messagebundle_en_GB.properties +27 -44
  267. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -42
  268. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -40
  269. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +25 -42
  270. package/src/sap/fe/core/messagebundle_es.properties +27 -44
  271. package/src/sap/fe/core/messagebundle_es_MX.properties +27 -44
  272. package/src/sap/fe/core/messagebundle_et.properties +27 -44
  273. package/src/sap/fe/core/messagebundle_fi.properties +27 -44
  274. package/src/sap/fe/core/messagebundle_fr.properties +26 -43
  275. package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -42
  276. package/src/sap/fe/core/messagebundle_hi.properties +27 -44
  277. package/src/sap/fe/core/messagebundle_hr.properties +27 -44
  278. package/src/sap/fe/core/messagebundle_hu.properties +27 -44
  279. package/src/sap/fe/core/messagebundle_id.properties +27 -44
  280. package/src/sap/fe/core/messagebundle_it.properties +43 -60
  281. package/src/sap/fe/core/messagebundle_iw.properties +27 -44
  282. package/src/sap/fe/core/messagebundle_ja.properties +27 -44
  283. package/src/sap/fe/core/messagebundle_kk.properties +27 -44
  284. package/src/sap/fe/core/messagebundle_ko.properties +30 -47
  285. package/src/sap/fe/core/messagebundle_lt.properties +27 -44
  286. package/src/sap/fe/core/messagebundle_lv.properties +27 -44
  287. package/src/sap/fe/core/messagebundle_ms.properties +27 -44
  288. package/src/sap/fe/core/messagebundle_nl.properties +29 -46
  289. package/src/sap/fe/core/messagebundle_no.properties +27 -44
  290. package/src/sap/fe/core/messagebundle_pl.properties +28 -45
  291. package/src/sap/fe/core/messagebundle_pt.properties +28 -45
  292. package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -44
  293. package/src/sap/fe/core/messagebundle_ro.properties +27 -44
  294. package/src/sap/fe/core/messagebundle_ru.properties +27 -44
  295. package/src/sap/fe/core/messagebundle_sh.properties +27 -44
  296. package/src/sap/fe/core/messagebundle_sk.properties +27 -44
  297. package/src/sap/fe/core/messagebundle_sl.properties +27 -44
  298. package/src/sap/fe/core/messagebundle_sv.properties +27 -44
  299. package/src/sap/fe/core/messagebundle_th.properties +25 -42
  300. package/src/sap/fe/core/messagebundle_tr.properties +27 -44
  301. package/src/sap/fe/core/messagebundle_uk.properties +27 -44
  302. package/src/sap/fe/core/messagebundle_vi.properties +27 -44
  303. package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -44
  304. package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -44
  305. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
  306. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  307. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +103 -75
  308. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +72 -73
  309. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
  310. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  311. package/src/sap/fe/core/services/NavigationServiceFactory.js +62 -50
  312. package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
  313. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
  314. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  315. package/src/sap/fe/core/services/RoutingServiceFactory.js +56 -56
  316. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  317. package/src/sap/fe/core/services/ShellServicesFactory.js +93 -77
  318. package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
  319. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +64 -64
  320. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  321. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +232 -200
  322. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +145 -142
  323. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
  324. package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
  325. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
  326. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
  327. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  328. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  329. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  330. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  331. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
  332. package/src/sap/fe/core/templating/CommonFormatters.js +85 -0
  333. package/src/sap/fe/core/templating/CommonFormatters.ts +90 -0
  334. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  335. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  336. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  337. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  338. package/src/sap/fe/core/templating/DataModelPathHelper.js +23 -15
  339. package/src/sap/fe/core/templating/DataModelPathHelper.ts +47 -34
  340. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  341. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  342. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  343. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  344. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  345. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  346. package/src/sap/fe/core/templating/FilterHelper.js +18 -17
  347. package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
  348. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  349. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  350. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  351. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  352. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  353. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  354. package/src/sap/fe/core/templating/UIFormatters.js +152 -95
  355. package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
  356. package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
  357. package/src/sap/fe/core/type/Email.js +3 -3
  358. package/src/sap/fe/core/type/Email.ts +2 -2
  359. 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRJbmZvRm9yRW50aXR5UHJvcGVydHkiLCJwcm9wZXJ0eVBhdGgiLCJyb3dCaW5kaW5nUGF0aCIsIm1ldGFDb250ZXh0IiwibWV0YU1vZGVsIiwicHJvcGVydHkiLCJnZXRQcm9wZXJ0eSIsImZvcm1hdE9wdGlvbnMiLCJwYXJzZUtlZXBzRW1wdHlTdHJpbmciLCJ0eXBlIiwiZ2V0VUk1VHlwZSIsImlzSWdub3JlZCIsImlnbm9yZSIsImRpc3BsYXlFcnJvck1lc3NhZ2VzIiwiZXJyb3JNZXNzYWdlcyIsIm1lc3NhZ2VEZXRhaWxzIiwicmVzb3VyY2VCdW5kbGUiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiZXJyb3JDb3JyZWN0aW9uTWVzc2FnZSIsImdldFRleHQiLCJub3RlTWVzc2FnZSIsInBhc3RlRXJyb3JNZXNzYWdlIiwibGVuZ3RoIiwidW5zaGlmdCIsIk1lc3NhZ2VCb3giLCJlcnJvciIsInRpdGxlIiwiZGV0YWlscyIsImpvaW4iLCJQYXN0ZUhlbHBlciIsImZvcm1hdEN1c3RvbU1lc3NhZ2UiLCJ2YWxpZGF0aW9uTWVzc2FnZXMiLCJpUm93TnVtYmVyIiwiZXJyb3JNZXNzYWdlIiwibnVtYmVyTWVzc2FnZXMiLCJpMThuUm93IiwiZm9yRWFjaCIsIm1lc3NhZ2UiLCJpbmRleE1lc3NhZ2UiLCJtZXNzYWdlVGV4dCIsImdldENvbHVtbkluZm8iLCJ0YWJsZSIsIm1vZGVsIiwiZ2V0Um93QmluZGluZyIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwicmVzb2x2ZSIsImdldFBhdGgiLCJnZXRDb250ZXh0IiwiZ2V0TWV0YUNvbnRleHQiLCJnZXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaFByb3BlcnRpZXMiLCJ0aGVuIiwicHJvcGVydHlJbmZvIiwiUHJvcGVydHlJbmZvRGljdCIsIk9iamVjdCIsImFzc2lnbiIsIm1hcCIsIm5hbWUiLCJjb2x1bW5JbmZvcyIsImdldENvbHVtbnMiLCJjb2x1bW4iLCJpbmZvUHJvcGVydHkiLCJnZXREYXRhUHJvcGVydHkiLCJwcm9wZXJ0eUluZm9zIiwiZGF0YVByb3BlcnR5IiwicGF0aCIsImluZGV4T2YiLCJwdXNoIiwicGFyc2VQYXN0ZWREYXRhIiwicmF3RGF0YSIsInBhc3RlSW5mb3MiLCJwYXN0ZWRDb2x1bW5Db3VudCIsImZpcnN0RWRpdGFibGVDb2x1bW5JbmRleCIsIkkiLCJQcm9taXNlIiwiQ29yZVBhc3RlSGVscGVyIiwicGFyc2UiLCJwYXJzZVJlc3VsdCIsImVycm9ycyIsIm9FbGVtZW50IiwicGFyc2VkRGF0YSIsInBhc3RlRGF0YSIsImNvbnRyb2xsZXIiLCJvSW50ZXJuYWxFZGl0RmxvdyIsIl9lZGl0RmxvdyIsInRhYmxlRGVmaW5pdGlvbiIsImdldFBhcmVudCIsImdldFRhYmxlRGVmaW5pdGlvbiIsImFEYXRhIiwiYVBhcnNlZERhdGEiLCJhbGwiLCJtRGF0YSIsImdldFRyYW5zYWN0aW9uSGVscGVyIiwidmFsaWRhdGVEb2N1bWVudCIsImdldEJpbmRpbmdDb250ZXh0IiwiZGF0YSIsImN1c3RvbVZhbGlkYXRpb25GdW5jdGlvbiIsImNvbnRyb2wiLCJnZXRWaWV3IiwiYVZhbGlkYXRpb25NZXNzYWdlcyIsImFFcnJvck1lc3NhZ2VzIiwicmVkdWNlIiwiYU1lc3NhZ2VzIiwiYUN1c3RvbU1lc3NhZ2VzIiwiaW5kZXgiLCJtZXNzYWdlcyIsInJvdyIsImFSb3dNZXNzYWdlcyIsIm1FcnJvciIsImFWYWxpZGF0ZWREYXRhIiwiY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMiLCJjcmVhdGVBdEVuZCIsImVkaXRGbG93Iiwib25CZWZvcmVDcmVhdGUiLCJ1bmRlZmluZWQiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFzdGVIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0ICogYXMgQ29yZVBhc3RlSGVscGVyIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1Bhc3RlSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvcmVFeCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgPSB7XG5cdG1lc3NhZ2VUZXh0Pzogc3RyaW5nO1xuXHRtZXNzYWdlVGFyZ2V0Pzogc3RyaW5nO1xufTtcblxuY29uc3QgZ2V0SW5mb0ZvckVudGl0eVByb3BlcnR5ID0gZnVuY3Rpb24gKHByb3BlcnR5UGF0aDogYW55LCByb3dCaW5kaW5nUGF0aDogYW55LCBtZXRhQ29udGV4dDogYW55LCBtZXRhTW9kZWw6IGFueSk6IGFueSB7XG5cdGNvbnN0IHByb3BlcnR5ID0gbWV0YUNvbnRleHQuZ2V0UHJvcGVydHkocHJvcGVydHlQYXRoKSxcblx0XHRmb3JtYXRPcHRpb25zID0geyBwYXJzZUtlZXBzRW1wdHlTdHJpbmc6IHRydWUgfSxcblx0XHR0eXBlID0gbWV0YU1vZGVsLmdldFVJNVR5cGUoYCR7cm93QmluZGluZ1BhdGh9LyR7cHJvcGVydHlQYXRofWAsIGZvcm1hdE9wdGlvbnMpLFxuXHRcdGlzSWdub3JlZCA9ICFwcm9wZXJ0eSB8fCBtZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShgJHtwcm9wZXJ0eVBhdGh9QE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkYCk7XG5cdHJldHVybiB7XG5cdFx0cHJvcGVydHk6IHByb3BlcnR5UGF0aCxcblx0XHRpZ25vcmU6IGlzSWdub3JlZCxcblx0XHR0eXBlOiB0eXBlXG5cdH07XG59O1xuXG5jb25zdCBkaXNwbGF5RXJyb3JNZXNzYWdlcyA9IGZ1bmN0aW9uIChlcnJvck1lc3NhZ2VzOiBzdHJpbmdbXSk6IHZvaWQge1xuXHRjb25zdCBtZXNzYWdlRGV0YWlscyA9IFsuLi5lcnJvck1lc3NhZ2VzXTtcblx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLFxuXHRcdGVycm9yQ29ycmVjdGlvbk1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfQ09SUkVDVElPTl9NRVNTQUdFXCIpLFxuXHRcdG5vdGVNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX0NPUlJFQ1RJT05fTk9URVwiKTtcblx0bGV0IHBhc3RlRXJyb3JNZXNzYWdlO1xuXG5cdGlmIChtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAxKSB7XG5cdFx0cGFzdGVFcnJvck1lc3NhZ2UgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19QQVNURV9IRUxQRVJfU0FQRkVfUEFTVEVfRVJST1JfTUVTU0FHRV9QTFVSQUxcIiwgW21lc3NhZ2VEZXRhaWxzLmxlbmd0aF0pO1xuXHR9IGVsc2Uge1xuXHRcdHBhc3RlRXJyb3JNZXNzYWdlID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfUEFTVEVfSEVMUEVSX1NBUEZFX1BBU1RFX0VSUk9SX01FU1NBR0VfU0lOR1VMQVJcIik7XG5cdH1cblx0bWVzc2FnZURldGFpbHMudW5zaGlmdChcIlwiKTsgLy8gVG8gc2hvdyBzcGFjZSBiZXR3ZWVuIHRoZSBzaG9ydCB0ZXh0IGFuZCB0aGUgbGlzdCBvZiBlcnJvcnNcblx0bWVzc2FnZURldGFpbHMudW5zaGlmdChub3RlTWVzc2FnZSk7XG5cdG1lc3NhZ2VEZXRhaWxzLnVuc2hpZnQoZXJyb3JDb3JyZWN0aW9uTWVzc2FnZSk7XG5cdE1lc3NhZ2VCb3guZXJyb3IocGFzdGVFcnJvck1lc3NhZ2UsIHtcblx0XHR0aXRsZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfRVJST1JcIiksXG5cdFx0ZGV0YWlsczogbWVzc2FnZURldGFpbHMuam9pbihcIjxicj5cIilcblx0fSk7XG59O1xuXG5jb25zdCBQYXN0ZUhlbHBlciA9IHtcblx0ZGlzcGxheUVycm9yTWVzc2FnZXM6IGRpc3BsYXlFcnJvck1lc3NhZ2VzLFxuXHRmb3JtYXRDdXN0b21NZXNzYWdlOiBmdW5jdGlvbiAodmFsaWRhdGlvbk1lc3NhZ2VzOiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZVtdLCBpUm93TnVtYmVyOiBudW1iZXIpOiBzdHJpbmcge1xuXHRcdGxldCBlcnJvck1lc3NhZ2UgPSBcIlwiO1xuXHRcdGNvbnN0IG51bWJlck1lc3NhZ2VzID0gdmFsaWRhdGlvbk1lc3NhZ2VzLmxlbmd0aDtcblx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIiksXG5cdFx0XHRpMThuUm93ID0gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfTUVTU0FHRV9HUk9VUF9ERVNDUklQVElPTl9UQUJMRV9ST1dcIik7XG5cdFx0aWYgKG51bWJlck1lc3NhZ2VzID4gMCkge1xuXHRcdFx0ZXJyb3JNZXNzYWdlICs9IGAke2kxOG5Sb3d9ICR7aVJvd051bWJlcn06IGA7XG5cdFx0XHR2YWxpZGF0aW9uTWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSwgaW5kZXhNZXNzYWdlKSA9PiB7XG5cdFx0XHRcdGlmIChtZXNzYWdlLm1lc3NhZ2VUZXh0KSB7XG5cdFx0XHRcdFx0ZXJyb3JNZXNzYWdlICs9IG1lc3NhZ2UubWVzc2FnZVRleHQgKyAoaW5kZXhNZXNzYWdlICsgMSAhPT0gbnVtYmVyTWVzc2FnZXMgPyBcIiBcIiA6IFwiXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGVycm9yTWVzc2FnZTtcblx0fSxcblx0Z2V0Q29sdW1uSW5mbzogZnVuY3Rpb24gKHRhYmxlOiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG5cdFx0Y29uc3QgbW9kZWwgPSB0YWJsZS5nZXRSb3dCaW5kaW5nKCkuZ2V0TW9kZWwoKSxcblx0XHRcdG1ldGFNb2RlbCA9IG1vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0cm93QmluZGluZ1BhdGggPSBtb2RlbC5yZXNvbHZlKHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRQYXRoKCksIHRhYmxlLmdldFJvd0JpbmRpbmcoKS5nZXRDb250ZXh0KCkpLFxuXHRcdFx0bWV0YUNvbnRleHQgPSBtZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQocm93QmluZGluZ1BhdGgpO1xuXHRcdHJldHVybiB0YWJsZVxuXHRcdFx0LmdldENvbnRyb2xEZWxlZ2F0ZSgpXG5cdFx0XHQuZmV0Y2hQcm9wZXJ0aWVzKHRhYmxlKVxuXHRcdFx0LnRoZW4oKHByb3BlcnR5SW5mbzogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IFByb3BlcnR5SW5mb0RpY3QgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5wcm9wZXJ0eUluZm8ubWFwKChwcm9wZXJ0eTogYW55KSA9PiAoeyBbcHJvcGVydHkubmFtZV06IHByb3BlcnR5IH0pKSk7XG5cdFx0XHRcdGNvbnN0IGNvbHVtbkluZm9zOiBhbnlbXSA9IFtdO1xuXHRcdFx0XHR0YWJsZS5nZXRDb2x1bW5zKCkuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpbmZvUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W2NvbHVtbi5nZXREYXRhUHJvcGVydHkoKV07XG5cdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgaXQncyBhIGNvbXBsZXggcHJvcGVydHkgKHByb3BlcnR5IGFzc29jaWF0ZWQgdG8gbXVsdGlwbGUgc2ltcGxlIHByb3BlcnRpZXMpXG5cdFx0XHRcdFx0aWYgKGluZm9Qcm9wZXJ0eS5wcm9wZXJ0eUluZm9zKSB7XG5cdFx0XHRcdFx0XHQvLyBHZXQgZGF0YSBmcm9tIHNpbXBsZSBwcm9wZXJ0eVxuXHRcdFx0XHRcdFx0aW5mb1Byb3BlcnR5LnByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBkYXRhUHJvcGVydHkgPSBQcm9wZXJ0eUluZm9EaWN0W3Byb3BlcnR5XTtcblxuXHRcdFx0XHRcdFx0XHQvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHNpbXBsZSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHRvIGEgUmF0aW5nIG9yIFByb2dyZXNzIENvbXBsZXhQcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIE9yIGNoZWNrIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoaW4gdGhlIGN1cnJlbnQgQ29tcGxleCBwcm9wZXJ0eSAtLT4gaWdub3JlXG5cdFx0XHRcdFx0XHRcdC8vIEEgZmFrZSBwcm9wZXJ0eSB3YXMgY3JlYXRlZCBpbnRvIHRoZSBwcm9wZXJ0eUluZm9zIHRvIGluY2x1ZGUgdGhlIFRhcmdldCBWYWx1ZVxuXHRcdFx0XHRcdFx0XHQvLyBmcm9tIHRoZSBEYXRhUG9pbnQgKHBhdGggaW5jbHVkZXMgdGhlIEBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnQgYW5ub3RhdGlvbilcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdChkYXRhUHJvcGVydHkgJiYgZGF0YVByb3BlcnR5LnBhdGguaW5kZXhPZihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikgPiAtMSkgfHxcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSA+IC0xXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydHk6IGRhdGFQcm9wZXJ0eS5wYXRoLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShkYXRhUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpbmZvUHJvcGVydHkucGF0aCkge1xuXHRcdFx0XHRcdFx0Y29sdW1uSW5mb3MucHVzaCh0aGlzLmdldEluZm9Gb3JFbnRpdHlQcm9wZXJ0eShpbmZvUHJvcGVydHkucGF0aCwgcm93QmluZGluZ1BhdGgsIG1ldGFDb250ZXh0LCBtZXRhTW9kZWwpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gRW1wdHkgY29sdW1uIC0tPiBpZ25vcmVcblx0XHRcdFx0XHRcdGNvbHVtbkluZm9zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eTogXCJ1bnVzZWRcIixcblx0XHRcdFx0XHRcdFx0dHlwZTogbnVsbCxcblx0XHRcdFx0XHRcdFx0aWdub3JlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gY29sdW1uSW5mb3M7XG5cdFx0XHR9KTtcblx0fSxcblx0Z2V0SW5mb0ZvckVudGl0eVByb3BlcnR5OiBnZXRJbmZvRm9yRW50aXR5UHJvcGVydHksXG5cblx0cGFyc2VQYXN0ZWREYXRhOiBmdW5jdGlvbiAocmF3RGF0YTogYW55LCB0YWJsZTogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbHVtbkluZm8odGFibGUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAocGFzdGVJbmZvczogYW55W10pIHtcblx0XHRcdFx0Ly8gQ2hlY2sgaWYgd2UgaGF2ZSBkYXRhIGZvciBhdCBsZWFzdCB0aGUgZmlyc3QgZWRpdGFibGUgY29sdW1uXG5cdFx0XHRcdGNvbnN0IHBhc3RlZENvbHVtbkNvdW50ID0gcmF3RGF0YS5sZW5ndGggPyByYXdEYXRhWzBdLmxlbmd0aCA6IDA7XG5cdFx0XHRcdGxldCBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSAtMTtcblx0XHRcdFx0Zm9yIChsZXQgSSA9IDA7IEkgPCBwYXN0ZUluZm9zLmxlbmd0aCAmJiBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPCAwOyBJKyspIHtcblx0XHRcdFx0XHRpZiAoIXBhc3RlSW5mb3NbSV0uaWdub3JlKSB7XG5cdFx0XHRcdFx0XHRmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPSBJO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4IDwgMCB8fCBmaXJzdEVkaXRhYmxlQ29sdW1uSW5kZXggPiBwYXN0ZWRDb2x1bW5Db3VudCAtIDFcblx0XHRcdFx0XHQ/IFByb21pc2UucmVzb2x2ZSh7fSkgLy8gV2UgZG9uJ3QgaGF2ZSBkYXRhIGZvciBhbiBlZGl0YWJsZSBjb2x1bW4gLS0+IHJldHVybiBlbXB0eSBwYXJzZWQgZGF0YVxuXHRcdFx0XHRcdDogKENvcmVQYXN0ZUhlbHBlciBhcyBhbnkpLnBhcnNlKHJhd0RhdGEsIHBhc3RlSW5mb3MpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChwYXJzZVJlc3VsdDogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChwYXJzZVJlc3VsdC5lcnJvcnMpIHtcblx0XHRcdFx0XHRjb25zdCBlcnJvck1lc3NhZ2VzID0gcGFyc2VSZXN1bHQuZXJyb3JzLm1hcChmdW5jdGlvbiAob0VsZW1lbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9FbGVtZW50Lm1lc3NhZ2U7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5RXJyb3JNZXNzYWdlcyhlcnJvck1lc3NhZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gW107IC8vIEVycm9ycyAtLT4gcmV0dXJuIG5vdGhpbmdcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2VSZXN1bHQucGFyc2VkRGF0YSA/IHBhcnNlUmVzdWx0LnBhcnNlZERhdGEgOiBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdH0sXG5cdHBhc3RlRGF0YTogZnVuY3Rpb24gKHJhd0RhdGE6IGFueSwgdGFibGU6IGFueSwgY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IG9JbnRlcm5hbEVkaXRGbG93ID0gKGNvbnRyb2xsZXIgYXMgYW55KS5fZWRpdEZsb3c7XG5cdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gdGFibGUuZ2V0UGFyZW50KCkuZ2V0VGFibGVEZWZpbml0aW9uKCk7XG5cdFx0bGV0IGFEYXRhOiBhbnlbXSA9IFtdO1xuXHRcdHJldHVybiB0aGlzLnBhcnNlUGFzdGVkRGF0YShyYXdEYXRhLCB0YWJsZSlcblx0XHRcdC50aGVuKChhUGFyc2VkRGF0YSkgPT4ge1xuXHRcdFx0XHRhRGF0YSA9IGFQYXJzZWREYXRhIHx8IFtdO1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG5cdFx0XHRcdFx0YURhdGEubWFwKChtRGF0YSkgPT5cblx0XHRcdFx0XHRcdG9JbnRlcm5hbEVkaXRGbG93LmdldFRyYW5zYWN0aW9uSGVscGVyKCkudmFsaWRhdGVEb2N1bWVudChcblx0XHRcdFx0XHRcdFx0dGFibGUuZ2V0QmluZGluZ0NvbnRleHQoKSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGRhdGE6IG1EYXRhLFxuXHRcdFx0XHRcdFx0XHRcdGN1c3RvbVZhbGlkYXRpb25GdW5jdGlvbjogdGFibGVEZWZpbml0aW9uPy5jb250cm9sPy5jdXN0b21WYWxpZGF0aW9uRnVuY3Rpb25cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5nZXRWaWV3KClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKGFWYWxpZGF0aW9uTWVzc2FnZXMpID0+IHtcblx0XHRcdFx0Y29uc3QgYUVycm9yTWVzc2FnZXMgPSBhVmFsaWRhdGlvbk1lc3NhZ2VzLnJlZHVjZShmdW5jdGlvbiAoYU1lc3NhZ2VzLCBhQ3VzdG9tTWVzc2FnZXMsIGluZGV4KSB7XG5cdFx0XHRcdFx0aWYgKGFDdXN0b21NZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRhTWVzc2FnZXMucHVzaCh7IG1lc3NhZ2VzOiBhQ3VzdG9tTWVzc2FnZXMsIHJvdzogaW5kZXggKyAxIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gYU1lc3NhZ2VzO1xuXHRcdFx0XHR9LCBbXSk7XG5cdFx0XHRcdGlmIChhRXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29uc3QgYVJvd01lc3NhZ2VzID0gYUVycm9yTWVzc2FnZXMubWFwKChtRXJyb3I6IGFueSkgPT4gdGhpcy5mb3JtYXRDdXN0b21NZXNzYWdlKG1FcnJvci5tZXNzYWdlcywgbUVycm9yLnJvdykpO1xuXHRcdFx0XHRcdHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZXMoYVJvd01lc3NhZ2VzKTtcblx0XHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGFEYXRhO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChhVmFsaWRhdGVkRGF0YSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYVZhbGlkYXRlZERhdGEubGVuZ3RoID4gMFxuXHRcdFx0XHRcdD8gb0ludGVybmFsRWRpdEZsb3cuY3JlYXRlTXVsdGlwbGVEb2N1bWVudHMoXG5cdFx0XHRcdFx0XHRcdHRhYmxlLmdldFJvd0JpbmRpbmcoKSxcblx0XHRcdFx0XHRcdFx0YVZhbGlkYXRlZERhdGEsXG5cdFx0XHRcdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj8uY29udHJvbD8uY3JlYXRlQXRFbmQsXG5cdFx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRcdChjb250cm9sbGVyIGFzIGFueSkuZWRpdEZsb3cub25CZWZvcmVDcmVhdGVcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKG9FcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBwYXN0aW5nIGRhdGFcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQYXN0ZUhlbHBlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBWUEsSUFBTUEsd0JBQXdCLEdBQUcsVUFBVUMsWUFBVixFQUE2QkMsY0FBN0IsRUFBa0RDLFdBQWxELEVBQW9FQyxTQUFwRSxFQUF5RjtJQUN6SCxJQUFNQyxRQUFRLEdBQUdGLFdBQVcsQ0FBQ0csV0FBWixDQUF3QkwsWUFBeEIsQ0FBakI7SUFBQSxJQUNDTSxhQUFhLEdBQUc7TUFBRUMscUJBQXFCLEVBQUU7SUFBekIsQ0FEakI7SUFBQSxJQUVDQyxJQUFJLEdBQUdMLFNBQVMsQ0FBQ00sVUFBVixXQUF3QlIsY0FBeEIsY0FBMENELFlBQTFDLEdBQTBETSxhQUExRCxDQUZSO0lBQUEsSUFHQ0ksU0FBUyxHQUFHLENBQUNOLFFBQUQsSUFBYUYsV0FBVyxDQUFDRyxXQUFaLFdBQTJCTCxZQUEzQixpQ0FIMUI7SUFJQSxPQUFPO01BQ05JLFFBQVEsRUFBRUosWUFESjtNQUVOVyxNQUFNLEVBQUVELFNBRkY7TUFHTkYsSUFBSSxFQUFFQTtJQUhBLENBQVA7RUFLQSxDQVZEOztFQVlBLElBQU1JLG9CQUFvQixHQUFHLFVBQVVDLGFBQVYsRUFBeUM7SUFDckUsSUFBTUMsY0FBYyxzQkFBT0QsYUFBUCxDQUFwQjs7SUFDQSxJQUFNRSxjQUFjLEdBQUlDLElBQUQsQ0FBaUJDLHdCQUFqQixDQUEw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
@@ -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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiYWRkT3BlcmF0b3IiLCJnZXRTdXBwb3J0ZWRPcGVyYXRpb25zIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRpb25zIiwiYU9wZXJhdGlvbnMiLCJuIiwicHVzaCIsIm1hcCIsImtleSIsImhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJvQ29uZGl0aW9ucyIsImFTZW1hbnRpY0RhdGVPcHMiLCJhRmlsdGVyQ29uZHRpb24iLCJvU2VtYW50aWNPcGVyYXRvciIsImZpbmQiLCJvQ29uZGl0aW9uIiwib3BlcmF0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yVXRpbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vRmlsdGVyT3BlcmF0b3JVdGlsXCI7XG5pbXBvcnQgT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL09wZXJhdG9yXCI7XG5pbXBvcnQgTW9kZWxPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgVmFsaWRhdGVFeGNlcHRpb24gZnJvbSBcInNhcC91aS9tb2RlbC9WYWxpZGF0ZUV4Y2VwdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDb3JlRXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbmNvbnN0IGFTdXBwb3J0ZWRPcGVyYXRpb25zID0gW1wiREFURVwiLCBcIkZST01cIiwgXCJUT1wiLCBcIkRBVEVSQU5HRVwiXTtcbmNvbnN0IERZTkFNSUNfREFURV9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFXCI7XG5jb25zdCBGSVhFRF9EQVRFX0NBVEVHT1JZID0gXCJGSVhFRC5EQVRFXCI7XG5jb25zdCBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEUuSU5UXCI7XG5jb25zdCBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFUkFOR0VcIjtcbmNvbnN0IERZTkFNSUNfTU9OVEhfQ0FURUdPUlkgPSBcIkRZTkFNSUMuTU9OVEhcIjtcbmNvbnN0IEZJWEVEX1dFRUtfQ0FURUdPUlkgPSBcIkZJWEVELldFRUtcIjtcbmNvbnN0IEZJWEVEX01PTlRIX0NBVEVHT1JZID0gXCJGSVhFRC5NT05USFwiO1xuY29uc3QgRklYRURfUVVBUlRFUl9DQVRFR09SWSA9IFwiRklYRUQuUVVBUlRFUlwiO1xuY29uc3QgRklYRURfWUVBUl9DQVRFR09SWSA9IFwiRklYRUQuWUVBUlwiO1xuY29uc3QgRFlOQU1JQ19XRUVLX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5XRUVLLklOVFwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuTU9OVEguSU5UXCI7XG5jb25zdCBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLlFVQVJURVIuSU5UXCI7XG5jb25zdCBEWU5BTUlDX1lFQVJfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLllFQVIuSU5UXCI7XG5jb25zdCBtU2VtYW50aWNEYXRlT3BlcmF0aW9uczogYW55ID0ge1xuXHRcIkRBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiRlJPTVwiOiB7XG5cdFx0XCJrZXlcIjogXCJGUk9NXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJUT1wiOiB7XG5cdFx0XCJrZXlcIjogXCJUT1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiREFURVJBTkdFXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVSQU5HRVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUllcblx0fSxcblx0XCJTUEVDSUZJQ01PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIlNQRUNJRklDTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJUT0RBWVwiOiB7XG5cdFx0XCJrZXlcIjogXCJUT0RBWVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZRlJPTVRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZRlJPTVRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiWUVTVEVSREFZXCI6IHtcblx0XHRcImtleVwiOiBcIllFU1RFUkRBWVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPTU9SUk9XXCI6IHtcblx0XHRcImtleVwiOiBcIlRPTU9SUk9XXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVERBWVNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVERBWVNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNXRUVLXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNXRUVLXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9XRUVLX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFdFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFdFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1NcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFdFRUtTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFdFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFdFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1NcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFdFRUtTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU01PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVE1PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVE1PTlRIU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVE1PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVE1PTlRIU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTUVVBUlRFUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTUVVBUlRFUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RRVUFSVEVSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRRVUFSVEVSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIxXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIxXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjJcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSM1wiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSM1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVI0XCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVI0XCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1lFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUWUVBUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUWUVBUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRUFSVE9EQVRFXCI6IHtcblx0XHRcImtleVwiOiBcIllFQVJUT0RBVEVcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFVE9ZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVUT1lFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fVxufTtcblxuZnVuY3Rpb24gX2dldERhdGVSYW5nZU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZTogYW55KSB7XG5cdGNvbnN0IHNEYXRlUmFuZ2UgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVfUkFOR0VcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVJBTkdFXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuQlQsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoW14hXS4qKSBcXFxcLSAoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSAtIHsxfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGYsIChPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGVSYW5nZSxcblx0XHR0b2tlblRleHQ6IHNEYXRlUmFuZ2UsXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCIsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChhVmFsdWVzOiBhbnksIG9UeXBlOiBhbnkpIHtcblx0XHRcdGlmIChhVmFsdWVzLmxlbmd0aCA8IDIpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRGF0ZSBSYW5nZSBtdXN0IGhhdmUgdHdvIHZhbHVlc1wiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUoYVZhbHVlc1swXSk7XG5cdFx0XHRcdGNvbnN0IHRvRGF0ZSA9IG5ldyBEYXRlKGFWYWx1ZXNbMV0pO1xuXHRcdFx0XHRpZiAoZnJvbURhdGUuZ2V0VGltZSgpID4gdG9EYXRlLmdldFRpbWUoKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBWYWxpZGF0ZUV4Y2VwdGlvbihcIkZyb20gRGF0ZSBTaG91bGQgQmUgTGVzcyBUaGFuIFRvIERhdGVcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdE9wZXJhdG9yLnByb3RvdHlwZS52YWxpZGF0ZS5hcHBseSh0aGlzLCBbYVZhbHVlcywgb1R5cGVdKTtcblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0RGF0ZU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZTogYW55KSB7XG5cdGNvbnN0IHNEYXRlID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19EQVRFXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIkRBVEVcIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5FUSxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKCguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZl0sXG5cdFx0bG9uZ1RleHQ6IHNEYXRlLFxuXHRcdHRva2VuVGV4dDogc0RhdGUsXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXRGcm9tT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0Zyb20gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0ZST01cIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiRlJPTVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkdFLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0Zyb20sXG5cdFx0dG9rZW5UZXh0OiBzRnJvbSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldFRvT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc1RvID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19UT1wiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJUT1wiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkxFLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc1RvLFxuXHRcdHRva2VuVGV4dDogc1RvLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZmlsdGVyT3BlcmF0aW9uKG9PcGVyYXRpb246IGFueSwgYU9wZXJhdG9yQ29uZmlndXJhdGlvbjogYW55KSB7XG5cdGlmICghYU9wZXJhdG9yQ29uZmlndXJhdGlvbikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gPSBBcnJheS5pc0FycmF5KGFPcGVyYXRvckNvbmZpZ3VyYXRpb24pID8gYU9wZXJhdG9yQ29uZmlndXJhdGlvbiA6IFthT3BlcmF0b3JDb25maWd1cmF0aW9uXTtcblx0bGV0IGJSZXN1bHQ7XG5cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbi5zb21lKGZ1bmN0aW9uIChvT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0XHRsZXQgajtcblx0XHRpZiAoIW9PcGVyYXRvckNvbmZpZ3VyYXRpb24ucGF0aCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNWYWx1ZSA9IG9PcGVyYXRpb25bb09wZXJhdG9yQ29uZmlndXJhdGlvbi5wYXRoXTtcblx0XHRjb25zdCBiRXhjbHVkZSA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXhjbHVkZSB8fCBmYWxzZTtcblx0XHRsZXQgYU9wZXJhdG9yVmFsdWVzO1xuXG5cdFx0aWYgKG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uY29udGFpbnMgJiYgc1ZhbHVlKSB7XG5cdFx0XHRhT3BlcmF0b3JWYWx1ZXMgPSBvT3BlcmF0b3JDb25maWd1cmF0aW9uLmNvbnRhaW5zLnNwbGl0KFwiLFwiKTtcblx0XHRcdGJSZXN1bHQgPSBiRXhjbHVkZTtcblx0XHRcdGZvciAoaiA9IDA7IGogPCBhT3BlcmF0b3JWYWx1ZXMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0aWYgKGJFeGNsdWRlICYmIHNWYWx1ZS5pbmRleE9mKGFPcGVyYXRvclZhbHVlc1tqXSkgPiAtMSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSBmYWxzZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmICghYkV4Y2x1ZGUgJiYgc1ZhbHVlLmluZGV4T2YoYU9wZXJhdG9yVmFsdWVzW2pdKSA+IC0xKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IHRydWU7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAob09wZXJhdG9yQ29uZmlndXJhdGlvbi5lcXVhbHMgJiYgc1ZhbHVlKSB7XG5cdFx0XHRhT3BlcmF0b3JWYWx1ZXMgPSBvT3BlcmF0b3JDb25maWd1cmF0aW9uLmVxdWFscy5zcGxpdChcIixcIik7XG5cdFx0XHRiUmVzdWx0ID0gYkV4Y2x1ZGU7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgYU9wZXJhdG9yVmFsdWVzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChiRXhjbHVkZSAmJiBzVmFsdWUgPT09IGFPcGVyYXRvclZhbHVlc1tqXSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSBmYWxzZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmICghYkV4Y2x1ZGUgJiYgc1ZhbHVlID09PSBhT3BlcmF0b3JWYWx1ZXNbal0pIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fSk7XG5cdHJldHVybiBiUmVzdWx0O1xufVxuY29uc3QgU2VtYW50aWNEYXRlT3BlcmF0b3JzID0ge1xuXHQvLyBFeHRlbmRpbmcgb3BlcmF0b3JzIGZvciBTZW1hdGljIERhdGUgQ29udHJvbFxuXHRhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uICgpIHtcblx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRcdEZpbHRlck9wZXJhdG9yVXRpbC5hZGRPcGVyYXRvcihfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXRGcm9tT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXRUb09wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZSkpO1xuXHR9LFxuXHRnZXRTdXBwb3J0ZWRPcGVyYXRpb25zOiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIGFTdXBwb3J0ZWRPcGVyYXRpb25zO1xuXHR9LFxuXHRnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKTtcblx0fSxcblx0Ly8gVE9ETzogV291bGQgbmVlZCB0byBjaGVjayB3aXRoIE1EQyBmb3IgcmVtb3ZlT3BlcmF0b3IgbWV0aG9kXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cblx0cmVtb3ZlU2VtYW50aWNEYXRlT3BlcmF0b3JzOiBmdW5jdGlvbiAoKSB7fSxcblx0Ly8gVG8gZmlsdGVyIG9wZXJhdG9ycyBiYXNlZCBvbiBtYW5pZmVzdCBhT3BlcmF0b3JDb25maWd1cmF0aW9uIHNldHRpbmdzXG5cdGdldEZpbHRlck9wZXJhdGlvbnM6IGZ1bmN0aW9uIChhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0XHRjb25zdCBhT3BlcmF0aW9ucyA9IFtdO1xuXHRcdGZvciAoY29uc3QgbiBpbiBtU2VtYW50aWNEYXRlT3BlcmF0aW9ucykge1xuXHRcdFx0Y29uc3Qgb09wZXJhdGlvbiA9IG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zW25dO1xuXHRcdFx0aWYgKF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbiwgYU9wZXJhdG9yQ29uZmlndXJhdGlvbikpIHtcblx0XHRcdFx0YU9wZXJhdGlvbnMucHVzaChvT3BlcmF0aW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFPcGVyYXRpb25zLm1hcChmdW5jdGlvbiAob09wZXJhdGlvbjogYW55KSB7XG5cdFx0XHRyZXR1cm4gb09wZXJhdGlvbi5rZXk7XG5cdFx0fSk7XG5cdH0sXG5cdGhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uIChvQ29uZGl0aW9uczogYW55KSB7XG5cdFx0Y29uc3QgYVNlbWFudGljRGF0ZU9wcyA9IHRoaXMuZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucygpO1xuXHRcdGZvciAoY29uc3QgbiBpbiBvQ29uZGl0aW9ucykge1xuXHRcdFx0Y29uc3QgYUZpbHRlckNvbmR0aW9uID0gb0NvbmRpdGlvbnNbbl07XG5cdFx0XHRjb25zdCBvU2VtYW50aWNPcGVyYXRvciA9IGFGaWx0ZXJDb25kdGlvbi5maW5kKGZ1bmN0aW9uIChvQ29uZGl0aW9uOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIGFTZW1hbnRpY0RhdGVPcHMuaW5kZXhPZihvQ29uZGl0aW9uLm9wZXJhdG9yKSA+IC0xO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAob1NlbWFudGljT3BlcmF0b3IpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VtYW50aWNEYXRlT3BlcmF0b3JzO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBT0EsSUFBTUEsb0JBQW9CLEdBQUcsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixJQUFqQixFQUF1QixXQUF2QixDQUE3QjtFQUNBLElBQU1DLHFCQUFxQixHQUFHLGNBQTlCO0VBQ0EsSUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7RUFDQSxJQUFNQyx5QkFBeUIsR0FBRyxrQkFBbEM7RUFDQSxJQUFNQywwQkFBMEIsR0FBRyxtQkFBbkM7RUFDQSxJQUFNQyxzQkFBc0IsR0FBRyxlQUEvQjtFQUNBLElBQU1DLG1CQUFtQixHQUFHLFlBQTVCO0VBQ0EsSUFBTUMsb0JBQW9CLEdBQUcsYUFBN0I7RUFDQSxJQUFNQyxzQkFBc0IsR0FBRyxlQUEvQjtFQUNBLElBQU1DLG1CQUFtQixHQUFHLFlBQTVCO0VBQ0EsSUFBTUMseUJBQXlCLEdBQUcsa0JBQWxDO0VBQ0EsSUFBTUMsMEJBQTBCLEdBQUcsbUJBQW5DO0VBQ0EsSUFBTUMsNEJBQTRCLEdBQUcscUJBQXJDO0VBQ0EsSUFBTUMseUJBQXlCLEdBQUcsa0JBQWxDO0VBQ0EsSUFBTUMsdUJBQTRCLEdBQUc7SUFDcEMsUUFBUTtNQUNQLE9BQU8sTUFEQTtNQUVQLFlBQVliO0lBRkwsQ0FENEI7SUFLcEMs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
@@ -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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZW1hbnRpY0tleUhlbHBlciIsImdldFNlbWFudGljS2V5cyIsIm9NZXRhTW9kZWwiLCJzRW50aXR5U2V0TmFtZSIsImdldE9iamVjdCIsImdldFNlbWFudGljT2JqZWN0SW5mb3JtYXRpb24iLCJvU2VtYW50aWNPYmplY3QiLCJhU2VtYW50aWNLZXlzIiwic2VtYW50aWNPYmplY3QiLCJzZW1hbnRpY0tleXMiLCJnZXRTZW1hbnRpY1BhdGgiLCJvQ29udGV4dCIsImJTdHJpY3QiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFDb250ZXh0IiwiZ2V0UGF0aCIsIm9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uIiwic1RlY2huaWNhbFBhdGgiLCJzU2VtYW50aWNQYXRoIiwiaXNBIiwiaXNSZWxhdGl2ZSIsImdldEhlYWRlckNvbnRleHQiLCJfaXNQYXRoRm9yU2VtYW50aWMiLCJvRW50aXR5VHlwZSIsIiRUeXBlIiwic1NlbWFudGljS2V5c1BhcnQiLCJtYXAiLCJvU2VtYW50aWNLZXkiLCJzUHJvcGVydHlQYXRoIiwiJFByb3BlcnR5UGF0aCIsInNLZXlWYWx1ZSIsImdldFByb3BlcnR5IiwidW5kZWZpbmVkIiwiRXJyb3IiLCJlbmNvZGVVUklDb21wb25lbnQiLCJsZW5ndGgiLCJqb2luIiwiZSIsIkxvZyIsImluZm8iLCJzUGF0aCIsInRlc3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlNlbWFudGljS2V5SGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuXG5jb25zdCBTZW1hbnRpY0tleUhlbHBlciA9IHtcblx0Z2V0U2VtYW50aWNLZXlzOiBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIHNFbnRpdHlTZXROYW1lOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gb01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke3NFbnRpdHlTZXROYW1lfS9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlbWFudGljS2V5YCk7XG5cdH0sXG5cdGdldFNlbWFudGljT2JqZWN0SW5mb3JtYXRpb246IGZ1bmN0aW9uIChvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCwgc0VudGl0eVNldE5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IG9TZW1hbnRpY09iamVjdCA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdGApO1xuXHRcdGNvbnN0IGFTZW1hbnRpY0tleXMgPSB0aGlzLmdldFNlbWFudGljS2V5cyhvTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbWFudGljT2JqZWN0OiBvU2VtYW50aWNPYmplY3QsXG5cdFx0XHRzZW1hbnRpY0tleXM6IGFTZW1hbnRpY0tleXNcblx0XHR9O1xuXHR9LFxuXHRnZXRTZW1hbnRpY1BhdGg6IGZ1bmN0aW9uIChvQ29udGV4dDogYW55LCBiU3RyaWN0OiBib29sZWFuID0gZmFsc2UpIHtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdHNFbnRpdHlTZXROYW1lID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChvQ29udGV4dC5nZXRQYXRoKCkpLmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0b1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24gPSB0aGlzLmdldFNlbWFudGljT2JqZWN0SW5mb3JtYXRpb24ob01ldGFNb2RlbCwgc0VudGl0eVNldE5hbWUpO1xuXHRcdGxldCBzVGVjaG5pY2FsUGF0aCwgc1NlbWFudGljUGF0aDtcblxuXHRcdGlmIChvQ29udGV4dC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSAmJiBvQ29udGV4dC5pc1JlbGF0aXZlKCkpIHtcblx0XHRcdHNUZWNobmljYWxQYXRoID0gb0NvbnRleHQuZ2V0SGVhZGVyQ29udGV4dCgpLmdldFBhdGgoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c1RlY2huaWNhbFBhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2lzUGF0aEZvclNlbWFudGljKHNUZWNobmljYWxQYXRoKSAmJiBvU2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbi5zZW1hbnRpY0tleXMpIHtcblx0XHRcdGNvbnN0IGFTZW1hbnRpY0tleXMgPSBvU2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbi5zZW1hbnRpY0tleXMsXG5cdFx0XHRcdG9FbnRpdHlUeXBlID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke29NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX1gKS4kVHlwZX1gKTtcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc1NlbWFudGljS2V5c1BhcnQgPSBhU2VtYW50aWNLZXlzXG5cdFx0XHRcdFx0Lm1hcChmdW5jdGlvbiAob1NlbWFudGljS2V5OiBhbnkpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNQcm9wZXJ0eVBhdGggPSBvU2VtYW50aWNLZXkuJFByb3BlcnR5UGF0aDtcblx0XHRcdFx0XHRcdGxldCBzS2V5VmFsdWUgPSBvQ29udGV4dC5nZXRQcm9wZXJ0eShzUHJvcGVydHlQYXRoKTtcblxuXHRcdFx0XHRcdFx0aWYgKHNLZXlWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHNLZXlWYWx1ZSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IHJlc29sdmUgc2VtYW50aWMga2V5IHZhbHVlIGZvciAke3NQcm9wZXJ0eVBhdGh9YCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpZiAob0VudGl0eVR5cGVbc1Byb3BlcnR5UGF0aF0uJFR5cGUgPT09IFwiRWRtLlN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0XHRcdFx0c0tleVZhbHVlID0gYCcke2VuY29kZVVSSUNvbXBvbmVudChzS2V5VmFsdWUpfSdgO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChhU2VtYW50aWNLZXlzLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBTZXZlcmFsIHNlbWFudGljIGtleXMgLS0+IHBhdGggc2hvdWxkIGJlIGVudGl0eVNldChrZXkxPXZhbHVlMSwga2V5Mj12YWx1ZTIsIC4uLilcblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2Ugd2Uga2VlcCBlbnRpdHlTZXQoa2V5VmFsdWUpXG5cdFx0XHRcdFx0XHRcdFx0c0tleVZhbHVlID0gYCR7c1Byb3BlcnR5UGF0aH09JHtzS2V5VmFsdWV9YDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc0tleVZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmpvaW4oXCIsXCIpO1xuXG5cdFx0XHRcdHNTZW1hbnRpY1BhdGggPSBgLyR7c0VudGl0eVNldE5hbWV9KCR7c1NlbWFudGljS2V5c1BhcnR9KWA7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdExvZy5pbmZvKGUgYXMgYW55KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gYlN0cmljdCA/IHNTZW1hbnRpY1BhdGggOiBzU2VtYW50aWNQYXRoIHx8IHNUZWNobmljYWxQYXRoO1xuXHR9LFxuXG5cdC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXHQvLyBJTlRFUk5BTCBNRVRIT0RTXG5cdC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cdF9pc1BhdGhGb3JTZW1hbnRpYzogZnVuY3Rpb24gKHNQYXRoOiBhbnkpIHtcblx0XHQvLyBPbmx5IHBhdGggb24gcm9vdCBvYmplY3RzIGFsbG93IHNlbWFudGljIGtleXMsIGkuZS4gc1BhdGggPSB4eHgoeXl5KVxuXHRcdHJldHVybiAvXlteXFwoXFwpXStcXChbXlxcKFxcKV0rXFwpJC8udGVzdChzUGF0aCk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlbWFudGljS2V5SGVscGVyO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBR0EsSUFBTUEsaUJBQWlCLEdBQUc7SUFDekJDLGVBQWUsRUFBRSxVQUFVQyxVQUFWLEVBQXNDQyxjQUF0QyxFQUE4RDtNQUM5RSxPQUFPRCxVQUFVLENBQUNFLFNBQVgsWUFBeUJELGNBQXpCLGtEQUFQO0lBQ0EsQ0FId0I7SUFJekJFLDRCQUE0QixFQUFFLFVBQVVILFVBQVYsRUFBc0NDLGNBQXRDLEVBQThEO01BQzNGLElBQU1HLGVBQWUsR0FBR0osVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixxREFBeEI7TUFDQSxJQUFNSSxhQUFhLEdBQUcsS0FBS04sZUFBTCxDQUFxQkMsVUFBckIsRUFBaUNDLGNBQWpDLENBQXRCO01BQ0EsT0FBTztRQUNOSyxjQUFjLEVBQUVGLGVBRFY7UUFFTkcsWUFBWSxFQUFFRjtNQUZSLENBQVA7SUFJQSxDQVh3QjtJQVl6QkcsZUFBZSxFQUFFLFVBQVVDLFFBQVYsRUFBbUQ7TUFBQSxJQUExQkMsT0FBMEIsdUVBQVAsS0FBTztNQUNuRSxJQUFNVixVQUFVLEdBQUdTLFFBQVEsQ0FBQ0UsUUFBVCxHQUFvQkMsWUFBcEIsRUFBbkI7TUFBQSxJQUNDWCxjQUFjLEdBQUdELFVBQVUsQ0FBQ2EsY0FBWCxDQUEwQkosUUFBUSxDQUFDSyxPQUFULEVBQTFCLEVBQThDWixTQUE5QyxDQUF3RCxhQUF4RCxDQURsQjtNQUFBLElBRUNhLDBCQUEwQixHQUFHLEtBQUtaLDRCQUFMLENBQWtDSCxVQUFsQyxFQUE4Q0MsY0FBOUMsQ0FGOUI7TUFHQSxJQUFJZSxjQUFKLEVBQW9CQyxhQUFwQjs7TUFFQSxJQUFJUixRQUFRLENBQUNTLEdBQVQsQ0FBYSx3Q0FBYixLQUEwRFQsUUFBUSxDQUFDVSxVQUFULEVBQTlELEVBQXFGO1FBQ3BGSCxjQUFjLEdBQUdQLFFBQVEsQ0FBQ1csZ0JBQVQsR0FBNEJOLE9BQTVCLEVBQWpCO01BQ0EsQ0FGRCxNQUVPO1FBQ05FLGNBQWMsR0FBR1AsUUFBUSxDQUFDSyxPQUFULEVBQWpCO01BQ0E7O01BRUQsSUFBSSxLQUFLTyxrQkFBTCxDQUF3QkwsY0FBeEIsS0FBMkNELDBCQUEwQixDQUFDUixZQUExRSxFQUF3RjtRQUN2RixJQUFNRixhQUFhLEdBQUdVLDBCQUEwQixDQUFDUixZQUFqRDtRQUFBLElBQ0NlLFdBQVcsR0FBR3RCLFVBQVUsQ0FBQ0UsU0FBWCxZQUF5QkYsVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixHQUEyQ3NCLEtBQXBFLEVBRGY7O1FBR0EsSUFBSTtVQUNILElBQU1DLGlCQUFpQixHQUFHbkIsYUFBYSxDQUNyQ29CLEdBRHdCLENBQ3BCLFVBQVVDLFlBQVYsRUFBNkI7WUFDakMsSUFBTUMsYUFBYSxHQUFHRCxZQUFZLENBQUNFLGFBQW5DO1lBQ0EsSUFBSUMsU0FBUyxHQUFHcEIsUUFBUSxDQUFDcUIsV0FBVCxDQUFxQkgsYUFBckIsQ0FBaEI7O1lBRUEsSUFBSUUsU0FBUyxLQUFLRSxTQUFkLElBQTJCRixTQUFTLEtBQUssSUFBN0MsRUFBbUQ7Y0FDbEQsTUFBTSxJQUFJRyxLQUFKLG1EQUFxREwsYUFBckQsRUFBTjtZQUNBLENBRkQsTUFFTztjQUNOLElBQUlMLFdBQVcsQ0FBQ0ssYUFBRCxDQUFYLENBQTJCSixLQUEzQixLQUFxQyxZQUF6QyxFQUF1RDtnQkFDdERNLFNBQVMsY0FBT0ksa0JBQWtCLENBQUNKLFNBQUQsQ0FBekIsTUFBVDtjQUNBOztjQUNELElBQUl4QixhQUFhLENBQUM2QixNQUFkLEdBQXVCLENBQTNCLEVBQThCO2dCQUM3QjtnQkFDQTtnQkFDQUwsU0FBUyxhQUFNRixhQUFOLGNBQXVCRSxTQUF2QixDQUFUO2NBQ0E7O2NBQ0QsT0FBT0EsU0FBUDtZQUNBO1VBQ0QsQ0FsQndCLEVBbUJ4Qk0sSUFuQndCLENBbUJuQixHQW5CbUIsQ0FBMUI7VUFxQkFsQixhQUFhLGNBQU9oQixjQUFQLGNBQXlCdUIsaUJBQXpCLE1BQWI7UUFDQSxDQXZCRCxDQXVCRSxPQUFPWSxDQUFQLEVBQVU7VUFDWEMsR0FBRyxDQUFDQyxJQUFKLENBQVNGLENBQVQ7UUFDQTtNQUNEOztNQUVELE9BQU8xQixPQUFPLEdBQUdPLGFBQUgsR0FBbUJBLGFBQWEsSUFBSUQsY0FBbEQ7SUFDQSxDQXpEd0I7SUEyRHpCO0lBQ0E7SUFDQTtJQUVBSyxrQkFBa0IsRUFBRSxVQUFVa0IsS0FBVixFQUFzQjtNQUN6QztNQUNBLE9BQU8seUJBQXlCQyxJQUF6QixDQUE4QkQsS0FBOUIsQ0FBUDtJQUNBO0VBbEV3QixDQUExQjtTQXFFZXpDLGlCIn0=
@@ -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
  }