@sapui5/sap.fe.core 1.111.1 → 1.112.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 (524) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime-dbg.js +4 -4
  4. package/src/sap/fe/core/ActionRuntime.js +1 -1
  5. package/src/sap/fe/core/ActionRuntime.js.map +1 -1
  6. package/src/sap/fe/core/ActionRuntime.ts +11 -11
  7. package/src/sap/fe/core/AppComponent-dbg.js +27 -5
  8. package/src/sap/fe/core/AppComponent.js +1 -1
  9. package/src/sap/fe/core/AppComponent.js.map +1 -1
  10. package/src/sap/fe/core/AppComponent.ts +58 -3
  11. package/src/sap/fe/core/AppStateHandler-dbg.js +5 -2
  12. package/src/sap/fe/core/AppStateHandler.js +1 -1
  13. package/src/sap/fe/core/AppStateHandler.js.map +1 -1
  14. package/src/sap/fe/core/AppStateHandler.ts +10 -1
  15. package/src/sap/fe/core/BaseController-dbg.js +1 -1
  16. package/src/sap/fe/core/BaseController.ts +2 -1
  17. package/src/sap/fe/core/CommonUtils-dbg.js +152 -365
  18. package/src/sap/fe/core/CommonUtils.js +1 -1
  19. package/src/sap/fe/core/CommonUtils.js.map +1 -1
  20. package/src/sap/fe/core/CommonUtils.ts +201 -478
  21. package/src/sap/fe/core/ExtensionAPI-dbg.js +2 -1
  22. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  23. package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
  24. package/src/sap/fe/core/ExtensionAPI.ts +9 -1
  25. package/src/sap/fe/core/PageController-dbg.js +26 -31
  26. package/src/sap/fe/core/PageController.js +1 -1
  27. package/src/sap/fe/core/PageController.js.map +1 -1
  28. package/src/sap/fe/core/PageController.ts +17 -3
  29. package/src/sap/fe/core/ResourceModel-dbg.js +71 -0
  30. package/src/sap/fe/core/ResourceModel.js +6 -0
  31. package/src/sap/fe/core/ResourceModel.js.map +1 -0
  32. package/src/sap/fe/core/ResourceModel.ts +67 -0
  33. package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
  34. package/src/sap/fe/core/TemplateComponent.ts +1 -0
  35. package/src/sap/fe/core/TemplateModel-dbg.js +1 -1
  36. package/src/sap/fe/core/TemplateModel.ts +6 -1
  37. package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +5 -7
  38. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  39. package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -1
  40. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +6 -5
  41. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +163 -0
  42. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +6 -0
  43. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -0
  44. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +169 -0
  45. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +88 -0
  46. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +6 -0
  47. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -0
  48. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +147 -0
  49. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +905 -0
  50. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +21 -0
  51. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -0
  52. package/src/sap/fe/core/buildingBlocks/{BuildingBlockRuntime.ts → BuildingBlockTemplateProcessor.ts} +290 -362
  53. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +79 -0
  54. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +15 -0
  55. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -0
  56. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +68 -0
  57. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +162 -0
  58. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +6 -0
  59. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -0
  60. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +181 -0
  61. package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +4 -2
  62. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
  63. package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -1
  64. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -3
  65. package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +890 -220
  66. package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  67. package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
  68. package/src/sap/fe/core/controllerextensions/EditFlow.ts +974 -239
  69. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +24 -34
  70. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  71. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
  72. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +71 -61
  73. package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +14 -17
  74. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  75. package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
  76. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +23 -17
  77. package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1 -1
  78. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -0
  79. package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +3 -3
  80. package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
  81. package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
  82. package/src/sap/fe/core/controllerextensions/MassEdit.ts +2 -2
  83. package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +2 -1
  84. package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -1
  85. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +2 -0
  86. package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +1 -1
  87. package/src/sap/fe/core/controllerextensions/PageReady.ts +24 -0
  88. package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +2 -1
  89. package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
  90. package/src/sap/fe/core/controllerextensions/Paginator.ts +7 -0
  91. package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +1 -1
  92. package/src/sap/fe/core/controllerextensions/Placeholder.ts +8 -0
  93. package/src/sap/fe/core/controllerextensions/Share-dbg.js +8 -1
  94. package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
  95. package/src/sap/fe/core/controllerextensions/Share.ts +11 -0
  96. package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +14 -13
  97. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  98. package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
  99. package/src/sap/fe/core/controllerextensions/SideEffects.ts +27 -27
  100. package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +17 -8
  101. package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  102. package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
  103. package/src/sap/fe/core/controllerextensions/ViewState.ts +35 -14
  104. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +6 -5
  105. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
  106. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -1
  107. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +7 -4
  108. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +285 -82
  109. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
  110. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
  111. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +326 -89
  112. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +23 -2
  113. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
  114. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
  115. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +32 -3
  116. package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +1 -1
  117. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
  118. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -3
  119. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +17 -3
  120. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +65 -34
  121. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +1 -1
  122. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -1
  123. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +33 -18
  124. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +45 -31
  125. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
  126. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
  127. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +52 -42
  128. package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +44 -49
  129. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
  130. package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
  131. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +43 -63
  132. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
  133. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +77 -0
  134. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +6 -0
  135. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -0
  136. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +114 -0
  137. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1505 -0
  138. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -0
  139. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -0
  140. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1985 -0
  141. package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +3 -1415
  142. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
  143. package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -1
  144. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +2 -1921
  145. package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +10 -11
  146. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
  147. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
  148. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +9 -13
  149. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +43 -41
  150. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
  151. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
  152. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +44 -47
  153. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +12 -1
  154. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -1
  155. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +19 -0
  156. package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +12 -13
  157. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
  158. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
  159. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +32 -13
  160. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -1
  161. package/src/sap/fe/core/controls/CommandExecution-dbg.js +16 -5
  162. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  163. package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
  164. package/src/sap/fe/core/controls/CommandExecution.ts +15 -3
  165. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +3 -2
  166. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
  167. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -1
  168. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +4 -1
  169. package/src/sap/fe/core/controls/FilterBar-dbg.js +1 -1
  170. package/src/sap/fe/core/controls/FilterBar.ts +5 -0
  171. package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +1 -1
  172. package/src/sap/fe/core/controls/FormElementWrapper.ts +3 -0
  173. package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +1 -1
  174. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +7 -0
  175. package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +1 -1
  176. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +4 -0
  177. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +1 -1
  178. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +10 -0
  179. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +4 -3
  180. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
  181. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
  182. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -2
  183. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +0 -1
  184. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +2 -0
  185. package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +6 -1
  186. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
  187. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
  188. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +5 -0
  189. package/src/sap/fe/core/converters/ConverterContext-dbg.js +1 -1
  190. package/src/sap/fe/core/converters/ConverterContext.ts +2 -1
  191. package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -8
  192. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  193. package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
  194. package/src/sap/fe/core/converters/ManifestSettings.ts +15 -6
  195. package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +17 -1
  196. package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  197. package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
  198. package/src/sap/fe/core/converters/ManifestWrapper.ts +16 -0
  199. package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +61 -49
  200. package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  201. package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
  202. package/src/sap/fe/core/converters/MetaModelConverter.ts +65 -51
  203. package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -1
  204. package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
  205. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  206. package/src/sap/fe/core/converters/annotations/DataField-dbg.js +65 -16
  207. package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  208. package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
  209. package/src/sap/fe/core/converters/annotations/DataField.ts +62 -18
  210. package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1010 -957
  211. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  212. package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
  213. package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +8 -8
  214. package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  215. package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
  216. package/src/sap/fe/core/converters/controls/Common/Action.ts +28 -26
  217. package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +95 -33
  218. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  219. package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
  220. package/src/sap/fe/core/converters/controls/Common/Chart.ts +133 -49
  221. package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +99 -62
  222. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  223. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
  224. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +140 -75
  225. package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +1 -1
  226. package/src/sap/fe/core/converters/controls/Common/Form.ts +3 -3
  227. package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +6 -6
  228. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  229. package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
  230. package/src/sap/fe/core/converters/controls/Common/KPI.ts +15 -15
  231. package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +97 -69
  232. package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  233. package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
  234. package/src/sap/fe/core/converters/controls/Common/Table.ts +161 -137
  235. package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +3 -3
  236. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  237. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
  238. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +10 -9
  239. package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +48 -44
  240. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  241. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
  242. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +130 -86
  243. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +34 -26
  244. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
  245. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
  246. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +62 -45
  247. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +1 -1
  248. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +1 -1
  249. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +6 -6
  250. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
  251. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -1
  252. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -8
  253. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +34 -13
  254. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
  255. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
  256. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +54 -20
  257. package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +3 -1
  258. package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
  259. package/src/sap/fe/core/converters/helpers/Aggregation.ts +8 -0
  260. package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +7 -6
  261. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  262. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
  263. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +19 -10
  264. package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +1 -1
  265. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +7 -2
  266. package/src/sap/fe/core/converters/helpers/ID-dbg.js +1 -1
  267. package/src/sap/fe/core/converters/helpers/ID.ts +2 -1
  268. package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +9 -8
  269. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  270. package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
  271. package/src/sap/fe/core/converters/helpers/IssueManager.ts +8 -7
  272. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +8 -7
  273. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  274. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
  275. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +9 -6
  276. package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +25 -33
  277. package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  278. package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
  279. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +35 -35
  280. package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +11 -4
  281. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  282. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
  283. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +7 -1
  284. package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
  285. package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
  286. package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +2 -2
  287. package/src/sap/fe/core/formatters/FiscalFormat.ts +6 -1
  288. package/src/sap/fe/core/formatters/TableFormatter-dbg.js +2 -2
  289. package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  290. package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
  291. package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
  292. package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +5 -5
  293. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  294. package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
  295. package/src/sap/fe/core/formatters/ValueFormatter.ts +6 -4
  296. package/src/sap/fe/core/fpm/Component-dbg.js +1 -1
  297. package/src/sap/fe/core/fpm/Component.ts +1 -0
  298. package/src/sap/fe/core/fpm/manifest.json +1 -1
  299. package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
  300. package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  301. package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -1
  302. package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
  303. package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +6 -6
  304. package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
  305. package/src/sap/fe/core/helpers/BindingToolkit.ts +8 -8
  306. package/src/sap/fe/core/helpers/ClassSupport-dbg.js +1 -1
  307. package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -1
  308. package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
  309. package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +93 -62
  310. package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
  311. package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
  312. package/src/sap/fe/core/helpers/DeleteHelper.ts +140 -185
  313. package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +20 -18
  314. package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
  315. package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
  316. package/src/sap/fe/core/helpers/MassEditHelper.ts +22 -23
  317. package/src/sap/fe/core/helpers/MessageStrip-dbg.js +4 -5
  318. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  319. package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
  320. package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
  321. package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +354 -0
  322. package/src/sap/fe/core/helpers/MetaModelFunction.js +6 -0
  323. package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -0
  324. package/src/sap/fe/core/helpers/MetaModelFunction.ts +408 -0
  325. package/src/sap/fe/core/helpers/ModelHelper-dbg.js +13 -13
  326. package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
  327. package/src/sap/fe/core/helpers/ModelHelper.ts +13 -13
  328. package/src/sap/fe/core/helpers/PasteHelper-dbg.js +5 -5
  329. package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
  330. package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -1
  331. package/src/sap/fe/core/helpers/PasteHelper.ts +6 -10
  332. package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +26 -0
  333. package/src/sap/fe/core/helpers/ResourceModelHelper.js +6 -0
  334. package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -0
  335. package/src/sap/fe/core/helpers/ResourceModelHelper.ts +19 -0
  336. package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +93 -18
  337. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  338. package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
  339. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +70 -17
  340. package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +2 -2
  341. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  342. package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -1
  343. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  344. package/src/sap/fe/core/helpers/Synchronization-dbg.js +1 -1
  345. package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
  346. package/src/sap/fe/core/helpers/TypeGuards-dbg.js +5 -1
  347. package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
  348. package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
  349. package/src/sap/fe/core/helpers/TypeGuards.ts +12 -1
  350. package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +2 -1
  351. package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
  352. package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +6 -2
  353. package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +1 -1
  354. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +3 -1
  355. package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +3 -3
  356. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
  357. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -1
  358. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
  359. package/src/sap/fe/core/library-dbg.js +2 -2
  360. package/src/sap/fe/core/library-preload.js +127 -125
  361. package/src/sap/fe/core/library-preload.js.map +1 -1
  362. package/src/sap/fe/core/library.js +1 -1
  363. package/src/sap/fe/core/library.ts +7 -0
  364. package/src/sap/fe/core/manifest.json +1 -1
  365. package/src/sap/fe/core/messagebundle.properties +33 -0
  366. package/src/sap/fe/core/messagebundle_ar.properties +12 -10
  367. package/src/sap/fe/core/messagebundle_bg.properties +11 -9
  368. package/src/sap/fe/core/messagebundle_ca.properties +11 -9
  369. package/src/sap/fe/core/messagebundle_cs.properties +11 -9
  370. package/src/sap/fe/core/messagebundle_cy.properties +11 -9
  371. package/src/sap/fe/core/messagebundle_da.properties +11 -9
  372. package/src/sap/fe/core/messagebundle_de.properties +3 -1
  373. package/src/sap/fe/core/messagebundle_el.properties +11 -9
  374. package/src/sap/fe/core/messagebundle_en.properties +3 -1
  375. package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
  376. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
  377. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -0
  378. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -3
  379. package/src/sap/fe/core/messagebundle_es.properties +11 -9
  380. package/src/sap/fe/core/messagebundle_es_MX.properties +11 -9
  381. package/src/sap/fe/core/messagebundle_et.properties +11 -9
  382. package/src/sap/fe/core/messagebundle_fi.properties +11 -9
  383. package/src/sap/fe/core/messagebundle_fr.properties +11 -9
  384. package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
  385. package/src/sap/fe/core/messagebundle_hi.properties +2 -0
  386. package/src/sap/fe/core/messagebundle_hr.properties +11 -9
  387. package/src/sap/fe/core/messagebundle_hu.properties +11 -9
  388. package/src/sap/fe/core/messagebundle_id.properties +3 -1
  389. package/src/sap/fe/core/messagebundle_it.properties +11 -9
  390. package/src/sap/fe/core/messagebundle_iw.properties +11 -9
  391. package/src/sap/fe/core/messagebundle_ja.properties +11 -9
  392. package/src/sap/fe/core/messagebundle_kk.properties +11 -9
  393. package/src/sap/fe/core/messagebundle_ko.properties +2 -0
  394. package/src/sap/fe/core/messagebundle_lt.properties +11 -9
  395. package/src/sap/fe/core/messagebundle_lv.properties +2 -0
  396. package/src/sap/fe/core/messagebundle_ms.properties +12 -10
  397. package/src/sap/fe/core/messagebundle_nl.properties +12 -10
  398. package/src/sap/fe/core/messagebundle_no.properties +11 -9
  399. package/src/sap/fe/core/messagebundle_pl.properties +2 -0
  400. package/src/sap/fe/core/messagebundle_pt.properties +11 -9
  401. package/src/sap/fe/core/messagebundle_pt_PT.properties +11 -9
  402. package/src/sap/fe/core/messagebundle_ro.properties +3 -1
  403. package/src/sap/fe/core/messagebundle_ru.properties +3 -1
  404. package/src/sap/fe/core/messagebundle_sh.properties +11 -9
  405. package/src/sap/fe/core/messagebundle_sk.properties +11 -9
  406. package/src/sap/fe/core/messagebundle_sl.properties +11 -9
  407. package/src/sap/fe/core/messagebundle_sv.properties +2 -0
  408. package/src/sap/fe/core/messagebundle_th.properties +11 -9
  409. package/src/sap/fe/core/messagebundle_tr.properties +11 -9
  410. package/src/sap/fe/core/messagebundle_uk.properties +11 -9
  411. package/src/sap/fe/core/messagebundle_vi.properties +12 -10
  412. package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
  413. package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
  414. package/src/sap/fe/core/operationsHelper-dbg.js +70 -44
  415. package/src/sap/fe/core/operationsHelper.js +1 -1
  416. package/src/sap/fe/core/operationsHelper.js.map +1 -1
  417. package/src/sap/fe/core/operationsHelper.ts +88 -63
  418. package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +1 -1
  419. package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -0
  420. package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +2 -2
  421. package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
  422. package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
  423. package/src/sap/fe/core/rootView/NavContainer.controller.ts +5 -3
  424. package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +4 -3
  425. package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
  426. package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
  427. package/src/sap/fe/core/rootView/RootViewBaseController.ts +15 -5
  428. package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
  429. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  430. package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +1 -1
  431. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -1
  432. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +15 -1
  433. package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
  434. package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
  435. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -1
  436. package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +9 -1
  437. package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
  438. package/src/sap/fe/core/services/NavigationServiceFactory.ts +19 -1
  439. package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +2 -2
  440. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  441. package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -1
  442. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +10 -3
  443. package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +3 -3
  444. package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  445. package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
  446. package/src/sap/fe/core/services/RoutingServiceFactory.ts +29 -3
  447. package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
  448. package/src/sap/fe/core/services/ShellServicesFactory.ts +14 -2
  449. package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +448 -279
  450. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  451. package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
  452. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +502 -333
  453. package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +18 -5
  454. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  455. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
  456. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +41 -12
  457. package/src/sap/fe/core/support/Diagnostics-dbg.js +1 -1
  458. package/src/sap/fe/core/support/Diagnostics.ts +5 -0
  459. package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +185 -86
  460. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  461. package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
  462. package/src/sap/fe/core/templating/DataModelPathHelper.ts +190 -82
  463. package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +1 -1
  464. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
  465. package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +2 -3
  466. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
  467. package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
  468. package/src/sap/fe/core/templating/EntitySetHelper.ts +1 -3
  469. package/src/sap/fe/core/templating/FilterHelper-dbg.js +3 -3
  470. package/src/sap/fe/core/templating/FilterHelper.js +1 -1
  471. package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
  472. package/src/sap/fe/core/templating/FilterHelper.ts +5 -3
  473. package/src/sap/fe/core/templating/PropertyHelper-dbg.js +1 -1
  474. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
  475. package/src/sap/fe/core/templating/UIFormatters-dbg.js +1 -1
  476. package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
  477. package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +1 -1
  478. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -0
  479. package/src/sap/fe/core/type/FiscalDate-dbg.js +2 -2
  480. package/src/sap/fe/core/type/FiscalDate.js.map +1 -1
  481. package/src/sap/fe/core/type/FiscalDate.ts +2 -1
  482. package/src/sap/fe/core/type/TypeUtil-dbg.js +5 -10
  483. package/src/sap/fe/core/type/TypeUtil.js +1 -1
  484. package/src/sap/fe/core/type/TypeUtil.js.map +1 -1
  485. package/src/sap/fe/core/type/TypeUtil.ts +3 -6
  486. package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +0 -410
  487. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +0 -15
  488. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +0 -1
  489. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +0 -536
  490. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +0 -44
  491. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +0 -6
  492. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +0 -1
  493. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +0 -14
  494. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +0 -948
  495. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +0 -19
  496. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +0 -1
  497. package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +0 -711
  498. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +0 -6
  499. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +0 -1
  500. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +0 -863
  501. package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +0 -151
  502. package/src/sap/fe/core/controls/ConditionalWrapper.js +0 -6
  503. package/src/sap/fe/core/controls/ConditionalWrapper.js.map +0 -1
  504. package/src/sap/fe/core/controls/ConditionalWrapper.ts +0 -88
  505. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +0 -330
  506. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +0 -6
  507. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +0 -1
  508. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -292
  509. package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +0 -126
  510. package/src/sap/fe/core/controls/CustomQuickViewPage.js +0 -6
  511. package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +0 -1
  512. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +0 -105
  513. package/src/sap/fe/core/controls/FieldWrapper-dbg.js +0 -194
  514. package/src/sap/fe/core/controls/FieldWrapper.js +0 -6
  515. package/src/sap/fe/core/controls/FieldWrapper.js.map +0 -1
  516. package/src/sap/fe/core/controls/FieldWrapper.ts +0 -121
  517. package/src/sap/fe/core/controls/FileWrapper-dbg.js +0 -280
  518. package/src/sap/fe/core/controls/FileWrapper.js +0 -6
  519. package/src/sap/fe/core/controls/FileWrapper.js.map +0 -1
  520. package/src/sap/fe/core/controls/FileWrapper.ts +0 -202
  521. package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +0 -141
  522. package/src/sap/fe/core/helpers/SideEffectsHelper.js +0 -6
  523. package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +0 -1
  524. package/src/sap/fe/core/helpers/SideEffectsHelper.ts +0 -129
@@ -0,0 +1,354 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/type/EDM", "sap/fe/macros/ODataMetaModelUtil"], function (IssueManager, BindingToolkit, ModelHelper, EDM, metaModelUtil) {
6
+ "use strict";
7
+
8
+ var _exports = {};
9
+ var isTypeFilterable = EDM.isTypeFilterable;
10
+ var pathInModel = BindingToolkit.pathInModel;
11
+ var or = BindingToolkit.or;
12
+ var not = BindingToolkit.not;
13
+ var compileExpression = BindingToolkit.compileExpression;
14
+ var IssueSeverity = IssueManager.IssueSeverity;
15
+ var IssueCategoryType = IssueManager.IssueCategoryType;
16
+ var IssueCategory = IssueManager.IssueCategory;
17
+ // From FilterBar.block.ts only
18
+ function getSearchRestrictions(fullPath, metaModel) {
19
+ let searchRestrictions;
20
+ let navigationSearchRestrictions;
21
+ const navigationText = "$NavigationPropertyBinding";
22
+ const searchRestrictionsTerm = "@Org.OData.Capabilities.V1.SearchRestrictions";
23
+ const entityTypePathParts = fullPath.replaceAll("%2F", "/").split("/").filter(ModelHelper.filterOutNavPropBinding);
24
+ const entitySetPath = ModelHelper.getEntitySetPath(fullPath, metaModel);
25
+ const entitySetPathParts = entitySetPath.split("/").filter(ModelHelper.filterOutNavPropBinding);
26
+ const isContainment = metaModel.getObject(`/${entityTypePathParts.join("/")}/$ContainsTarget`) ? true : false;
27
+ const containmentNavPath = isContainment ? entityTypePathParts[entityTypePathParts.length - 1] : "";
28
+
29
+ //LEAST PRIORITY - Search restrictions directly at Entity Set
30
+ //e.g. FR in "NS.EntityContainer/SalesOrderManage" ContextPath: /SalesOrderManage
31
+ if (!isContainment) {
32
+ searchRestrictions = metaModel.getObject(`${entitySetPath}${searchRestrictionsTerm}`);
33
+ }
34
+ if (entityTypePathParts.length > 1) {
35
+ const navPath = isContainment ? containmentNavPath : entitySetPathParts[entitySetPathParts.length - 1];
36
+ // In case of containment we take entitySet provided as parent. And in case of normal we would remove the last navigation from entitySetPath.
37
+ const parentEntitySetPath = isContainment ? entitySetPath : `/${entitySetPathParts.slice(0, -1).join(`/${navigationText}/`)}`;
38
+
39
+ //HIGHEST priority - Navigation restrictions
40
+ //e.g. Parent "/Customer" with NavigationPropertyPath="Set" ContextPath: Customer/Set
41
+ const navigationRestrictions = METAMODEL_FUNCTIONS.getNavigationRestrictions(metaModel, parentEntitySetPath, navPath.replaceAll("%2F", "/"));
42
+ navigationSearchRestrictions = navigationRestrictions === null || navigationRestrictions === void 0 ? void 0 : navigationRestrictions.SearchRestrictions;
43
+ }
44
+ return navigationSearchRestrictions ?? searchRestrictions;
45
+ }
46
+
47
+ // From CommonUtils
48
+ _exports.getSearchRestrictions = getSearchRestrictions;
49
+ function getNavigationRestrictions(metaModelContext, entitySetPath, navigationPath) {
50
+ const navigationRestrictions = metaModelContext.getObject(`${entitySetPath}@Org.OData.Capabilities.V1.NavigationRestrictions`);
51
+ const restrictedProperties = navigationRestrictions === null || navigationRestrictions === void 0 ? void 0 : navigationRestrictions.RestrictedProperties;
52
+ return restrictedProperties === null || restrictedProperties === void 0 ? void 0 : restrictedProperties.find(function (restrictedProperty) {
53
+ var _restrictedProperty$N;
54
+ return ((_restrictedProperty$N = restrictedProperty.NavigationProperty) === null || _restrictedProperty$N === void 0 ? void 0 : _restrictedProperty$N.$NavigationPropertyPath) === navigationPath;
55
+ });
56
+ }
57
+
58
+ // Internal usage only
59
+ _exports.getNavigationRestrictions = getNavigationRestrictions;
60
+ function isInNonFilterableProperties(metamodelContext, entitySetPath, contextPath) {
61
+ let isNotFilterable = false;
62
+ const filterRestrictionsAnnotation = metamodelContext.getObject(`${entitySetPath}@Org.OData.Capabilities.V1.FilterRestrictions`);
63
+ if (filterRestrictionsAnnotation !== null && filterRestrictionsAnnotation !== void 0 && filterRestrictionsAnnotation.NonFilterableProperties) {
64
+ isNotFilterable = filterRestrictionsAnnotation.NonFilterableProperties.some(function (property) {
65
+ return property.$NavigationPropertyPath === contextPath || property.$PropertyPath === contextPath;
66
+ });
67
+ }
68
+ return isNotFilterable;
69
+ }
70
+
71
+ // Internal usage only
72
+ function isCustomAggregate(metamodelContext, entitySetPath, contextPath) {
73
+ let interanlIsCustomAggregate = false;
74
+ // eslint-disable-next-line regex/invalid-warn
75
+ const isApplySupported = metamodelContext.getObject(entitySetPath + "@Org.OData.Aggregation.V1.ApplySupported") ? true : false;
76
+ if (isApplySupported) {
77
+ const entitySetAnnotations = metamodelContext.getObject(`${entitySetPath}@`);
78
+ const customAggregatesAnnotations = metaModelUtil.getAllCustomAggregates(entitySetAnnotations);
79
+ const customAggregates = customAggregatesAnnotations ? Object.keys(customAggregatesAnnotations) : undefined;
80
+ if (customAggregates !== null && customAggregates !== void 0 && customAggregates.includes(contextPath)) {
81
+ interanlIsCustomAggregate = true;
82
+ }
83
+ }
84
+ return interanlIsCustomAggregate;
85
+ }
86
+
87
+ // Internal usage only
88
+ _exports.isCustomAggregate = isCustomAggregate;
89
+ function checkEntitySetIsFilterable(entitySetPath, metaModelContext, property, navigationContext) {
90
+ let isFilterable = entitySetPath.split("/").length === 2 && !property.includes("/") ? !isInNonFilterableProperties(metaModelContext, entitySetPath, property) && !isCustomAggregate(metaModelContext, entitySetPath, property) : !isContextPathFilterable(metaModelContext, entitySetPath, property);
91
+ // check if type can be used for filtering
92
+ if (isFilterable && navigationContext) {
93
+ const propertyDataType = getPropertyDataType(navigationContext);
94
+ if (propertyDataType) {
95
+ isFilterable = propertyDataType ? isTypeFilterable(propertyDataType) : false;
96
+ } else {
97
+ isFilterable = false;
98
+ }
99
+ }
100
+ return isFilterable;
101
+ }
102
+
103
+ // Internal usage only
104
+ function isContextPathFilterable(metaModelContext, entitySetPath, contextPath) {
105
+ const fullPath = `${entitySetPath}/${contextPath}`,
106
+ esParts = fullPath.split("/").splice(0, 2),
107
+ contexts = fullPath.split("/").splice(2);
108
+ let isNoFilterable = false,
109
+ context = "";
110
+ entitySetPath = esParts.join("/");
111
+ isNoFilterable = contexts.some(function (item, index, array) {
112
+ if (context.length > 0) {
113
+ context += `/${item}`;
114
+ } else {
115
+ context = item;
116
+ }
117
+ if (index === array.length - 2) {
118
+ // In case of "/Customer/Set/Property" this is to check navigation restrictions of "Customer" for non-filterable properties in "Set"
119
+ const navigationRestrictions = METAMODEL_FUNCTIONS.getNavigationRestrictions(metaModelContext, entitySetPath, item);
120
+ const filterRestrictions = navigationRestrictions === null || navigationRestrictions === void 0 ? void 0 : navigationRestrictions.FilterRestrictions;
121
+ const nonFilterableProperties = filterRestrictions === null || filterRestrictions === void 0 ? void 0 : filterRestrictions.NonFilterableProperties;
122
+ const targetPropertyPath = array[array.length - 1];
123
+ if (nonFilterableProperties !== null && nonFilterableProperties !== void 0 && nonFilterableProperties.find(function (propertyPath) {
124
+ return propertyPath.$PropertyPath === targetPropertyPath;
125
+ })) {
126
+ return true;
127
+ }
128
+ }
129
+ if (index === array.length - 1) {
130
+ //last path segment
131
+ isNoFilterable = isInNonFilterableProperties(metaModelContext, entitySetPath, context);
132
+ } else if (metaModelContext.getObject(`${entitySetPath}/$NavigationPropertyBinding/${item}`)) {
133
+ //check existing context path and initialize it
134
+ isNoFilterable = isInNonFilterableProperties(metaModelContext, entitySetPath, context);
135
+ context = "";
136
+ //set the new EntitySet
137
+ entitySetPath = `/${metaModelContext.getObject(`${entitySetPath}/$NavigationPropertyBinding/${item}`)}`;
138
+ }
139
+ return isNoFilterable;
140
+ });
141
+ return isNoFilterable;
142
+ }
143
+
144
+ // Internal usage only
145
+
146
+ function getPropertyDataType(navigationContext) {
147
+ let dataType = navigationContext.getProperty("$Type");
148
+ // if $kind exists, it's not a DataField and we have the final type already
149
+ if (!navigationContext.getProperty("$kind")) {
150
+ switch (dataType) {
151
+ case "com.sap.vocabularies.UI.v1.DataFieldForAction":
152
+ case "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":
153
+ dataType = undefined;
154
+ break;
155
+ case "com.sap.vocabularies.UI.v1.DataField":
156
+ case "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":
157
+ case "com.sap.vocabularies.UI.v1.DataFieldWithUrl":
158
+ case "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":
159
+ case "com.sap.vocabularies.UI.v1.DataFieldWithAction":
160
+ dataType = navigationContext.getProperty("Value/$Path/$Type");
161
+ break;
162
+ case "com.sap.vocabularies.UI.v1.DataFieldForAnnotation":
163
+ default:
164
+ const annotationPath = navigationContext.getProperty("Target/$AnnotationPath");
165
+ if (annotationPath) {
166
+ if (annotationPath.includes("com.sap.vocabularies.Communication.v1.Contact")) {
167
+ dataType = navigationContext.getProperty("Target/$AnnotationPath/fn/$Path/$Type");
168
+ } else if (annotationPath.includes("com.sap.vocabularies.UI.v1.DataPoint")) {
169
+ dataType = navigationContext.getProperty("Value/$Path/$Type");
170
+ } else {
171
+ // e.g. FieldGroup or Chart
172
+ dataType = undefined;
173
+ }
174
+ } else {
175
+ dataType = undefined;
176
+ }
177
+ break;
178
+ }
179
+ }
180
+ return dataType;
181
+ }
182
+
183
+ // From CommonUtils, CommonHelper, FilterBarDelegate, FilterField, ValueListHelper, TableDelegate
184
+ // TODO check used places and rework this
185
+ function isPropertyFilterable(metaModelContext, entitySetPath, property, skipHiddenFilters) {
186
+ if (typeof property !== "string") {
187
+ throw new Error("sProperty parameter must be a string");
188
+ }
189
+
190
+ // Parameters should be rendered as filterfields
191
+ if (metaModelContext.getObject(`${entitySetPath}/@com.sap.vocabularies.Common.v1.ResultContext`) === true) {
192
+ return true;
193
+ }
194
+ const navigationContext = metaModelContext.createBindingContext(`${entitySetPath}/${property}`);
195
+ if (navigationContext && !skipHiddenFilters) {
196
+ if (navigationContext.getProperty("@com.sap.vocabularies.UI.v1.Hidden") === true || navigationContext.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter") === true) {
197
+ return false;
198
+ }
199
+ const hiddenPath = navigationContext.getProperty("@com.sap.vocabularies.UI.v1.Hidden/$Path");
200
+ const hiddenFilterPath = navigationContext.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter/$Path");
201
+ if (hiddenPath && hiddenFilterPath) {
202
+ return compileExpression(not(or(pathInModel(hiddenPath), pathInModel(hiddenFilterPath))));
203
+ } else if (hiddenPath) {
204
+ return compileExpression(not(pathInModel(hiddenPath)));
205
+ } else if (hiddenFilterPath) {
206
+ return compileExpression(not(pathInModel(hiddenFilterPath)));
207
+ }
208
+ }
209
+ return checkEntitySetIsFilterable(entitySetPath, metaModelContext, property, navigationContext);
210
+ }
211
+
212
+ // From TransactionHelper / EditFlow
213
+ _exports.isPropertyFilterable = isPropertyFilterable;
214
+ function getNonComputedVisibleFields(metaModelContext, path, appComponent) {
215
+ const technicalKeys = metaModelContext.getObject(`${path}/`).$Key;
216
+ const nonComputedVisibleKeys = [];
217
+ const immutableVisibleFields = [];
218
+ const entityType = metaModelContext.getObject(`${path}/`);
219
+ for (const item in entityType) {
220
+ if (entityType[item].$kind && entityType[item].$kind === "Property") {
221
+ const annotations = metaModelContext.getObject(`${path}/${item}@`) || {},
222
+ isKey = technicalKeys.includes(item),
223
+ isImmutable = annotations["@Org.OData.Core.V1.Immutable"],
224
+ isNonComputed = !annotations["@Org.OData.Core.V1.Computed"],
225
+ isVisible = !annotations["@com.sap.vocabularies.UI.v1.Hidden"],
226
+ isComputedDefaultValue = annotations["@Org.OData.Core.V1.ComputedDefaultValue"],
227
+ isKeyComputedDefaultValueWithText = isKey && entityType[item].$Type === "Edm.Guid" ? isComputedDefaultValue && annotations["@com.sap.vocabularies.Common.v1.Text"] : false;
228
+ if ((isKeyComputedDefaultValueWithText || isKey && entityType[item].$Type !== "Edm.Guid") && isNonComputed && isVisible) {
229
+ nonComputedVisibleKeys.push(item);
230
+ } else if (isImmutable && isNonComputed && isVisible) {
231
+ immutableVisibleFields.push(item);
232
+ }
233
+ if (!isNonComputed && isComputedDefaultValue && appComponent) {
234
+ const diagnostics = appComponent.getDiagnostics();
235
+ const message = "Core.ComputedDefaultValue is ignored as Core.Computed is already set to true";
236
+ diagnostics.addIssue(IssueCategory.Annotation, IssueSeverity.Medium, message, IssueCategoryType, IssueCategoryType.Annotations.IgnoredAnnotation);
237
+ }
238
+ }
239
+ }
240
+ const requiredProperties = METAMODEL_FUNCTIONS.getRequiredPropertiesFromInsertRestrictions(path, metaModelContext);
241
+ if (requiredProperties.length) {
242
+ requiredProperties.forEach(function (property) {
243
+ const annotations = metaModelContext.getObject(`${path}/${property}@`),
244
+ isVisible = !(annotations !== null && annotations !== void 0 && annotations["@com.sap.vocabularies.UI.v1.Hidden"]);
245
+ if (isVisible && !nonComputedVisibleKeys.includes(property) && !immutableVisibleFields.includes(property)) {
246
+ nonComputedVisibleKeys.push(property);
247
+ }
248
+ });
249
+ }
250
+ return nonComputedVisibleKeys.concat(immutableVisibleFields);
251
+ }
252
+ // Internal only, exposed for tests
253
+ _exports.getNonComputedVisibleFields = getNonComputedVisibleFields;
254
+ function getRequiredProperties(path, metaModelContext) {
255
+ let checkUpdateRestrictions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
256
+ const requiredProperties = [];
257
+ let requiredPropertiesWithPath = [];
258
+ const navigationText = "$NavigationPropertyBinding";
259
+ let entitySetAnnotation = null;
260
+ if (path.endsWith("$")) {
261
+ // if sPath comes with a $ in the end, removing it as it is of no significance
262
+ path = path.replace("/$", "");
263
+ }
264
+ const entityTypePathParts = path.replaceAll("%2F", "/").split("/").filter(ModelHelper.filterOutNavPropBinding);
265
+ const entitySetPath = ModelHelper.getEntitySetPath(path, metaModelContext);
266
+ const entitySetPathParts = entitySetPath.split("/").filter(ModelHelper.filterOutNavPropBinding);
267
+ const isContainment = metaModelContext.getObject(`/${entityTypePathParts.join("/")}/$ContainsTarget`) ? true : false;
268
+ const containmentNavPath = isContainment ? entityTypePathParts[entityTypePathParts.length - 1] : "";
269
+
270
+ //Restrictions directly at Entity Set
271
+ //e.g. FR in "NS.EntityContainer/SalesOrderManage" ContextPath: /SalesOrderManage
272
+ if (!isContainment) {
273
+ entitySetAnnotation = metaModelContext.getObject(`${entitySetPath}@`);
274
+ }
275
+ if (entityTypePathParts.length > 1) {
276
+ const navPath = isContainment ? containmentNavPath : entitySetPathParts[entitySetPathParts.length - 1];
277
+ const parentEntitySetPath = isContainment ? entitySetPath : `/${entitySetPathParts.slice(0, -1).join(`/${navigationText}/`)}`;
278
+ //Navigation restrictions
279
+ //e.g. Parent "/Customer" with NavigationPropertyPath="Set" ContextPath: Customer/Set
280
+ const navigationRestrictions = METAMODEL_FUNCTIONS.getNavigationRestrictions(metaModelContext, parentEntitySetPath, navPath.replaceAll("%2F", "/"));
281
+ if (navigationRestrictions !== undefined && METAMODEL_FUNCTIONS.hasRestrictedPropertiesInAnnotations(navigationRestrictions, true, checkUpdateRestrictions)) {
282
+ var _navigationRestrictio, _navigationRestrictio2;
283
+ requiredPropertiesWithPath = checkUpdateRestrictions ? ((_navigationRestrictio = navigationRestrictions.UpdateRestrictions) === null || _navigationRestrictio === void 0 ? void 0 : _navigationRestrictio.RequiredProperties) ?? [] : ((_navigationRestrictio2 = navigationRestrictions.InsertRestrictions) === null || _navigationRestrictio2 === void 0 ? void 0 : _navigationRestrictio2.RequiredProperties) ?? [];
284
+ }
285
+ if (!requiredPropertiesWithPath.length && METAMODEL_FUNCTIONS.hasRestrictedPropertiesInAnnotations(entitySetAnnotation, false, checkUpdateRestrictions)) {
286
+ requiredPropertiesWithPath = METAMODEL_FUNCTIONS.getRequiredPropertiesFromAnnotations(entitySetAnnotation, checkUpdateRestrictions);
287
+ }
288
+ } else if (METAMODEL_FUNCTIONS.hasRestrictedPropertiesInAnnotations(entitySetAnnotation, false, checkUpdateRestrictions)) {
289
+ requiredPropertiesWithPath = METAMODEL_FUNCTIONS.getRequiredPropertiesFromAnnotations(entitySetAnnotation, checkUpdateRestrictions);
290
+ }
291
+ requiredPropertiesWithPath.forEach(function (requiredProperty) {
292
+ const propertyPath = requiredProperty.$PropertyPath;
293
+ requiredProperties.push(propertyPath);
294
+ });
295
+ return requiredProperties;
296
+ }
297
+
298
+ // TransactionHelper // InternalField
299
+ function getRequiredPropertiesFromInsertRestrictions(path, metamodelContext) {
300
+ return METAMODEL_FUNCTIONS.getRequiredProperties(path, metamodelContext);
301
+ }
302
+
303
+ // InternalField
304
+ _exports.getRequiredPropertiesFromInsertRestrictions = getRequiredPropertiesFromInsertRestrictions;
305
+ function getRequiredPropertiesFromUpdateRestrictions(path, metamodelContext) {
306
+ return METAMODEL_FUNCTIONS.getRequiredProperties(path, metamodelContext, true);
307
+ }
308
+
309
+ // Internal only, exposed for tests
310
+ _exports.getRequiredPropertiesFromUpdateRestrictions = getRequiredPropertiesFromUpdateRestrictions;
311
+ function getRequiredPropertiesFromAnnotations(annotations) {
312
+ var _annotations$OrgODa2;
313
+ let checkUpdateRestrictions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
314
+ if (checkUpdateRestrictions) {
315
+ var _annotations$OrgODa;
316
+ return (annotations === null || annotations === void 0 ? void 0 : (_annotations$OrgODa = annotations["@Org.OData.Capabilities.V1.UpdateRestrictions"]) === null || _annotations$OrgODa === void 0 ? void 0 : _annotations$OrgODa.RequiredProperties) ?? [];
317
+ }
318
+ return (annotations === null || annotations === void 0 ? void 0 : (_annotations$OrgODa2 = annotations["@Org.OData.Capabilities.V1.InsertRestrictions"]) === null || _annotations$OrgODa2 === void 0 ? void 0 : _annotations$OrgODa2.RequiredProperties) ?? [];
319
+ }
320
+
321
+ // Internal only, exposed for tests
322
+ function hasRestrictedPropertiesInAnnotations(annotations) {
323
+ var _entitytSetAnnotation;
324
+ let isNavigationRestrictions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
325
+ let checkUpdateRestrictions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
326
+ if (isNavigationRestrictions) {
327
+ var _navAnnotations$Inser;
328
+ const navAnnotations = annotations;
329
+ if (checkUpdateRestrictions) {
330
+ var _navAnnotations$Updat;
331
+ return navAnnotations !== null && navAnnotations !== void 0 && (_navAnnotations$Updat = navAnnotations.UpdateRestrictions) !== null && _navAnnotations$Updat !== void 0 && _navAnnotations$Updat.RequiredProperties ? true : false;
332
+ }
333
+ return navAnnotations !== null && navAnnotations !== void 0 && (_navAnnotations$Inser = navAnnotations.InsertRestrictions) !== null && _navAnnotations$Inser !== void 0 && _navAnnotations$Inser.RequiredProperties ? true : false;
334
+ } else if (checkUpdateRestrictions) {
335
+ var _entityAnnotations$O;
336
+ const entityAnnotations = annotations;
337
+ return entityAnnotations !== null && entityAnnotations !== void 0 && (_entityAnnotations$O = entityAnnotations["@Org.OData.Capabilities.V1.UpdateRestrictions"]) !== null && _entityAnnotations$O !== void 0 && _entityAnnotations$O.RequiredProperties ? true : false;
338
+ }
339
+ const entitytSetAnnotations = annotations;
340
+ return entitytSetAnnotations !== null && entitytSetAnnotations !== void 0 && (_entitytSetAnnotation = entitytSetAnnotations["@Org.OData.Capabilities.V1.InsertRestrictions"]) !== null && _entitytSetAnnotation !== void 0 && _entitytSetAnnotation.RequiredProperties ? true : false;
341
+ }
342
+
343
+ // DO NOT USE, only for tests and internally in this file
344
+ const METAMODEL_FUNCTIONS = {
345
+ getRequiredProperties,
346
+ getRequiredPropertiesFromAnnotations,
347
+ hasRestrictedPropertiesInAnnotations,
348
+ getRequiredPropertiesFromInsertRestrictions,
349
+ getNavigationRestrictions
350
+ };
351
+ _exports.METAMODEL_FUNCTIONS = METAMODEL_FUNCTIONS;
352
+ return _exports;
353
+ }, false);
354
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRTZWFyY2hSZXN0cmljdGlvbnMiLCJmdWxsUGF0aCIsIm1ldGFNb2RlbCIsInNlYXJjaFJlc3RyaWN0aW9ucyIsIm5hdmlnYXRpb25TZWFyY2hSZXN0cmljdGlvbnMiLCJuYXZpZ2F0aW9uVGV4dCIsInNlYXJjaFJlc3RyaWN0aW9uc1Rlcm0iLCJlbnRpdHlUeXBlUGF0aFBhcnRzIiwicmVwbGFjZUFsbCIsInNwbGl0IiwiZmlsdGVyIiwiTW9kZWxIZWxwZXIiLCJmaWx0ZXJPdXROYXZQcm9wQmluZGluZyIsImVudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwiZW50aXR5U2V0UGF0aFBhcnRzIiwiaXNDb250YWlubWVudCIsImdldE9iamVjdCIsImpvaW4iLCJjb250YWlubWVudE5hdlBhdGgiLCJsZW5ndGgiLCJuYXZQYXRoIiwicGFyZW50RW50aXR5U2V0UGF0aCIsInNsaWNlIiwibmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIk1FVEFNT0RFTF9GVU5DVElPTlMiLCJnZXROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwiU2VhcmNoUmVzdHJpY3Rpb25zIiwibWV0YU1vZGVsQ29udGV4dCIsIm5hdmlnYXRpb25QYXRoIiwicmVzdHJpY3RlZFByb3BlcnRpZXMiLCJSZXN0cmljdGVkUHJvcGVydGllcyIsImZpbmQiLCJyZXN0cmljdGVkUHJvcGVydHkiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsImlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyIsIm1ldGFtb2RlbENvbnRleHQiLCJjb250ZXh0UGF0aCIsImlzTm90RmlsdGVyYWJsZSIsImZpbHRlclJlc3RyaWN0aW9uc0Fubm90YXRpb24iLCJOb25GaWx0ZXJhYmxlUHJvcGVydGllcyIsInNvbWUiLCJwcm9wZXJ0eSIsIiRQcm9wZXJ0eVBhdGgiLCJpc0N1c3RvbUFnZ3JlZ2F0ZSIsImludGVyYW5sSXNDdXN0b21BZ2dyZWdhdGUiLCJpc0FwcGx5U3VwcG9ydGVkIiwiZW50aXR5U2V0QW5ub3RhdGlvbnMiLCJjdXN0b21BZ2dyZWdhdGVzQW5ub3RhdGlvbnMiLCJtZXRhTW9kZWxVdGlsIiwiZ2V0QWxsQ3VzdG9tQWdncmVnYXRlcyIsImN1c3RvbUFnZ3JlZ2F0ZXMiLCJPYmplY3QiLCJrZXlzIiwidW5kZWZpbmVkIiwiaW5jbHVkZXMiLCJjaGVja0VudGl0eVNldElzRmlsdGVyYWJsZSIsIm5hdmlnYXRpb25Db250ZXh0IiwiaXNGaWx0ZXJhYmxlIiwiaXNDb250ZXh0UGF0aEZpbHRlcmFibGUiLCJwcm9wZXJ0eURhdGFUeXBlIiwiZ2V0UHJvcGVydHlEYXRhVHlwZSIsImlzVHlwZUZpbHRlcmFibGUiLCJlc1BhcnRzIiwic3BsaWNlIiwiY29udGV4dHMiLCJpc05vRmlsdGVyYWJsZSIsImNvbnRleHQiLCJpdGVtIiwiaW5kZXgiLCJhcnJheSIsImZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIm5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzIiwidGFyZ2V0UHJvcGVydHlQYXRoIiwicHJvcGVydHlQYXRoIiwiZGF0YVR5cGUiLCJnZXRQcm9wZXJ0eSIsImFubm90YXRpb25QYXRoIiwiaXNQcm9wZXJ0eUZpbHRlcmFibGUiLCJza2lwSGlkZGVuRmlsdGVycyIsIkVycm9yIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJoaWRkZW5QYXRoIiwiaGlkZGVuRmlsdGVyUGF0aCIsImNvbXBpbGVFeHByZXNzaW9uIiwibm90Iiwib3IiLCJwYXRoSW5Nb2RlbCIsImdldE5vbkNvbXB1dGVkVmlzaWJsZUZpZWxkcyIsInBhdGgiLCJhcHBDb21wb25lbnQiLCJ0ZWNobmljYWxLZXlzIiwiJEtleSIsIm5vbkNvbXB1dGVkVmlzaWJsZUtleXMiLCJpbW11dGFibGVWaXNpYmxlRmllbGRzIiwiZW50aXR5VHlwZSIsIiRraW5kIiwiYW5ub3RhdGlvbnMiLCJpc0tleSIsImlzSW1tdXRhYmxlIiwiaXNOb25Db21wdXRlZCIsImlzVmlzaWJsZSIsImlzQ29tcHV0ZWREZWZhdWx0VmFsdWUiLCJpc0tleUNvbXB1dGVkRGVmYXVsdFZhbHVlV2l0aFRleHQiLCIkVHlwZSIsInB1c2giLCJkaWFnbm9zdGljcyIsImdldERpYWdub3N0aWNzIiwibWVzc2FnZSIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVDYXRlZ29yeVR5cGUiLCJBbm5vdGF0aW9ucyIsIklnbm9yZWRBbm5vdGF0aW9uIiwicmVxdWlyZWRQcm9wZXJ0aWVzIiwiZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsImZvckVhY2giLCJjb25jYXQiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXMiLCJjaGVja1VwZGF0ZVJlc3RyaWN0aW9ucyIsInJlcXVpcmVkUHJvcGVydGllc1dpdGhQYXRoIiwiZW50aXR5U2V0QW5ub3RhdGlvbiIsImVuZHNXaXRoIiwicmVwbGFjZSIsImhhc1Jlc3RyaWN0ZWRQcm9wZXJ0aWVzSW5Bbm5vdGF0aW9ucyIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlJlcXVpcmVkUHJvcGVydGllcyIsIkluc2VydFJlc3RyaWN0aW9ucyIsImdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21Bbm5vdGF0aW9ucyIsInJlcXVpcmVkUHJvcGVydHkiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zIiwiaXNOYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwibmF2QW5ub3RhdGlvbnMiLCJlbnRpdHlBbm5vdGF0aW9ucyIsImVudGl0eXRTZXRBbm5vdGF0aW9ucyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWV0YU1vZGVsRnVuY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIGdvYWwgb2YgdGhpcyBmaWxlIGlzIHRvIGRpc2FwcGVhciBhcyBzb29uIGFzIHdlIGNhbi5cbi8vIEl0IGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIHRvIG1vdmUgYWxsIG1ldGFtb2RlbCByZWxhdGVkIG9wZXJhdGlvbiBmcm9tIENvbW1vblV0aWxzIHRvIGEgc2VwYXJhdGUgZmlsZS5cblxuaW1wb3J0IHR5cGUgKiBhcyBFZG0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHR5cGUge1xuXHRGaWx0ZXJSZXN0cmljdGlvbnNUeXBlLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzLFxuXHROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zVHlwZSxcblx0U2VhcmNoUmVzdHJpY3Rpb25zVHlwZVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlQ2F0ZWdvcnlUeXBlLCBJc3N1ZVNldmVyaXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIG5vdCwgb3IsIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEZWZhdWx0VHlwZUZvckVkbVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdHlwZS9FRE1cIjtcbmltcG9ydCB7IGlzVHlwZUZpbHRlcmFibGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdHlwZS9FRE1cIjtcbmltcG9ydCBtZXRhTW9kZWxVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL09EYXRhTWV0YU1vZGVsVXRpbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRXhwYW5kUGF0aFR5cGUsIE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24sIE1ldGFNb2RlbEVudGl0eVR5cGUsIE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwidHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5cbi8vIEZyb20gRmlsdGVyQmFyLmJsb2NrLnRzIG9ubHlcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWFyY2hSZXN0cmljdGlvbnMoZnVsbFBhdGg6IHN0cmluZywgbWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCkge1xuXHRsZXQgc2VhcmNoUmVzdHJpY3Rpb25zO1xuXHRsZXQgbmF2aWdhdGlvblNlYXJjaFJlc3RyaWN0aW9ucztcblx0Y29uc3QgbmF2aWdhdGlvblRleHQgPSBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCI7XG5cdGNvbnN0IHNlYXJjaFJlc3RyaWN0aW9uc1Rlcm0gPSBcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlYXJjaFJlc3RyaWN0aW9uc1wiO1xuXHRjb25zdCBlbnRpdHlUeXBlUGF0aFBhcnRzID0gZnVsbFBhdGgucmVwbGFjZUFsbChcIiUyRlwiLCBcIi9cIikuc3BsaXQoXCIvXCIpLmZpbHRlcihNb2RlbEhlbHBlci5maWx0ZXJPdXROYXZQcm9wQmluZGluZyk7XG5cdGNvbnN0IGVudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKGZ1bGxQYXRoLCBtZXRhTW9kZWwpO1xuXHRjb25zdCBlbnRpdHlTZXRQYXRoUGFydHMgPSBlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoTW9kZWxIZWxwZXIuZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmcpO1xuXHRjb25zdCBpc0NvbnRhaW5tZW50ID0gbWV0YU1vZGVsLmdldE9iamVjdChgLyR7ZW50aXR5VHlwZVBhdGhQYXJ0cy5qb2luKFwiL1wiKX0vJENvbnRhaW5zVGFyZ2V0YCkgPyB0cnVlIDogZmFsc2U7XG5cdGNvbnN0IGNvbnRhaW5tZW50TmF2UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlUeXBlUGF0aFBhcnRzW2VudGl0eVR5cGVQYXRoUGFydHMubGVuZ3RoIC0gMV0gOiBcIlwiO1xuXG5cdC8vTEVBU1QgUFJJT1JJVFkgLSBTZWFyY2ggcmVzdHJpY3Rpb25zIGRpcmVjdGx5IGF0IEVudGl0eSBTZXRcblx0Ly9lLmcuIEZSIGluIFwiTlMuRW50aXR5Q29udGFpbmVyL1NhbGVzT3JkZXJNYW5hZ2VcIiBDb250ZXh0UGF0aDogL1NhbGVzT3JkZXJNYW5hZ2Vcblx0aWYgKCFpc0NvbnRhaW5tZW50KSB7XG5cdFx0c2VhcmNoUmVzdHJpY3Rpb25zID0gbWV0YU1vZGVsLmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofSR7c2VhcmNoUmVzdHJpY3Rpb25zVGVybX1gKSBhc1xuXHRcdFx0fCBNZXRhTW9kZWxUeXBlPFNlYXJjaFJlc3RyaWN0aW9uc1R5cGU+XG5cdFx0XHR8IHVuZGVmaW5lZDtcblx0fVxuXHRpZiAoZW50aXR5VHlwZVBhdGhQYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0Y29uc3QgbmF2UGF0aDogc3RyaW5nID0gaXNDb250YWlubWVudCA/IGNvbnRhaW5tZW50TmF2UGF0aCA6IGVudGl0eVNldFBhdGhQYXJ0c1tlbnRpdHlTZXRQYXRoUGFydHMubGVuZ3RoIC0gMV07XG5cdFx0Ly8gSW4gY2FzZSBvZiBjb250YWlubWVudCB3ZSB0YWtlIGVudGl0eVNldCBwcm92aWRlZCBhcyBwYXJlbnQuIEFuZCBpbiBjYXNlIG9mIG5vcm1hbCB3ZSB3b3VsZCByZW1vdmUgdGhlIGxhc3QgbmF2aWdhdGlvbiBmcm9tIGVudGl0eVNldFBhdGguXG5cdFx0Y29uc3QgcGFyZW50RW50aXR5U2V0UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlTZXRQYXRoIDogYC8ke2VudGl0eVNldFBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuam9pbihgLyR7bmF2aWdhdGlvblRleHR9L2ApfWA7XG5cblx0XHQvL0hJR0hFU1QgcHJpb3JpdHkgLSBOYXZpZ2F0aW9uIHJlc3RyaWN0aW9uc1xuXHRcdC8vZS5nLiBQYXJlbnQgXCIvQ3VzdG9tZXJcIiB3aXRoIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg9XCJTZXRcIiBDb250ZXh0UGF0aDogQ3VzdG9tZXIvU2V0XG5cdFx0Y29uc3QgbmF2aWdhdGlvblJlc3RyaWN0aW9ucyA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0TmF2aWdhdGlvblJlc3RyaWN0aW9ucyhcblx0XHRcdG1ldGFNb2RlbCxcblx0XHRcdHBhcmVudEVudGl0eVNldFBhdGgsXG5cdFx0XHRuYXZQYXRoLnJlcGxhY2VBbGwoXCIlMkZcIiwgXCIvXCIpXG5cdFx0KTtcblx0XHRuYXZpZ2F0aW9uU2VhcmNoUmVzdHJpY3Rpb25zID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uU2VhcmNoUmVzdHJpY3Rpb25zO1xuXHR9XG5cdHJldHVybiBuYXZpZ2F0aW9uU2VhcmNoUmVzdHJpY3Rpb25zID8/IHNlYXJjaFJlc3RyaWN0aW9ucztcbn1cblxuLy8gRnJvbSBDb21tb25VdGlsc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdmlnYXRpb25SZXN0cmljdGlvbnMobWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsIGVudGl0eVNldFBhdGg6IHN0cmluZywgbmF2aWdhdGlvblBhdGg6IHN0cmluZykge1xuXHRjb25zdCBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYCR7ZW50aXR5U2V0UGF0aH1AT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zYCkgYXNcblx0XHR8IE1ldGFNb2RlbFR5cGU8TmF2aWdhdGlvblJlc3RyaWN0aW9uc1R5cGU+XG5cdFx0fCB1bmRlZmluZWQ7XG5cdGNvbnN0IHJlc3RyaWN0ZWRQcm9wZXJ0aWVzID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM7XG5cdHJldHVybiByZXN0cmljdGVkUHJvcGVydGllcz8uZmluZChmdW5jdGlvbiAocmVzdHJpY3RlZFByb3BlcnR5KSB7XG5cdFx0cmV0dXJuIHJlc3RyaWN0ZWRQcm9wZXJ0eS5OYXZpZ2F0aW9uUHJvcGVydHk/LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoID09PSBuYXZpZ2F0aW9uUGF0aDtcblx0fSk7XG59XG5cbi8vIEludGVybmFsIHVzYWdlIG9ubHlcbmZ1bmN0aW9uIGlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyhtZXRhbW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgZW50aXR5U2V0UGF0aDogc3RyaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKSB7XG5cdGxldCBpc05vdEZpbHRlcmFibGUgPSBmYWxzZTtcblx0Y29uc3QgZmlsdGVyUmVzdHJpY3Rpb25zQW5ub3RhdGlvbiA9IG1ldGFtb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9QE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zYCkgYXNcblx0XHR8IE1ldGFNb2RlbFR5cGU8RmlsdGVyUmVzdHJpY3Rpb25zVHlwZT5cblx0XHR8IHVuZGVmaW5lZDtcblx0aWYgKGZpbHRlclJlc3RyaWN0aW9uc0Fubm90YXRpb24/Lk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKSB7XG5cdFx0aXNOb3RGaWx0ZXJhYmxlID0gZmlsdGVyUmVzdHJpY3Rpb25zQW5ub3RhdGlvbi5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcy5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0KHByb3BlcnR5IGFzIHVua25vd24gYXMgRXhwYW5kUGF0aFR5cGU8RWRtLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg+KS4kTmF2aWdhdGlvblByb3BlcnR5UGF0aCA9PT0gY29udGV4dFBhdGggfHxcblx0XHRcdFx0cHJvcGVydHkuJFByb3BlcnR5UGF0aCA9PT0gY29udGV4dFBhdGhcblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGlzTm90RmlsdGVyYWJsZTtcbn1cblxuLy8gSW50ZXJuYWwgdXNhZ2Ugb25seVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tQWdncmVnYXRlKG1ldGFtb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsLCBlbnRpdHlTZXRQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoOiBzdHJpbmcpIHtcblx0bGV0IGludGVyYW5sSXNDdXN0b21BZ2dyZWdhdGUgPSBmYWxzZTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4L2ludmFsaWQtd2FyblxuXHRjb25zdCBpc0FwcGx5U3VwcG9ydGVkID0gbWV0YW1vZGVsQ29udGV4dC5nZXRPYmplY3QoZW50aXR5U2V0UGF0aCArIFwiQE9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BcHBseVN1cHBvcnRlZFwiKSA/IHRydWUgOiBmYWxzZTtcblx0aWYgKGlzQXBwbHlTdXBwb3J0ZWQpIHtcblx0XHRjb25zdCBlbnRpdHlTZXRBbm5vdGF0aW9ucyA9IG1ldGFtb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9QGApIGFzIE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb247XG5cdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRlc0Fubm90YXRpb25zID0gbWV0YU1vZGVsVXRpbC5nZXRBbGxDdXN0b21BZ2dyZWdhdGVzKGVudGl0eVNldEFubm90YXRpb25zKSBhcyBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRlcyA9IGN1c3RvbUFnZ3JlZ2F0ZXNBbm5vdGF0aW9ucyA/IE9iamVjdC5rZXlzKGN1c3RvbUFnZ3JlZ2F0ZXNBbm5vdGF0aW9ucykgOiB1bmRlZmluZWQ7XG5cdFx0aWYgKGN1c3RvbUFnZ3JlZ2F0ZXM/LmluY2x1ZGVzKGNvbnRleHRQYXRoKSkge1xuXHRcdFx0aW50ZXJhbmxJc0N1c3RvbUFnZ3JlZ2F0ZSA9IHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBpbnRlcmFubElzQ3VzdG9tQWdncmVnYXRlO1xufVxuXG4vLyBJbnRlcm5hbCB1c2FnZSBvbmx5XG5cbmZ1bmN0aW9uIGNoZWNrRW50aXR5U2V0SXNGaWx0ZXJhYmxlKFxuXHRlbnRpdHlTZXRQYXRoOiBzdHJpbmcsXG5cdG1ldGFNb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsLFxuXHRwcm9wZXJ0eTogc3RyaW5nLFxuXHRuYXZpZ2F0aW9uQ29udGV4dDogQ29udGV4dCB8IG51bGxcbikge1xuXHRsZXQgaXNGaWx0ZXJhYmxlID1cblx0XHRlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5sZW5ndGggPT09IDIgJiYgIXByb3BlcnR5LmluY2x1ZGVzKFwiL1wiKVxuXHRcdFx0PyAhaXNJbk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIHByb3BlcnR5KSAmJlxuXHRcdFx0ICAhaXNDdXN0b21BZ2dyZWdhdGUobWV0YU1vZGVsQ29udGV4dCwgZW50aXR5U2V0UGF0aCwgcHJvcGVydHkpXG5cdFx0XHQ6ICFpc0NvbnRleHRQYXRoRmlsdGVyYWJsZShtZXRhTW9kZWxDb250ZXh0LCBlbnRpdHlTZXRQYXRoLCBwcm9wZXJ0eSk7XG5cdC8vIGNoZWNrIGlmIHR5cGUgY2FuIGJlIHVzZWQgZm9yIGZpbHRlcmluZ1xuXHRpZiAoaXNGaWx0ZXJhYmxlICYmIG5hdmlnYXRpb25Db250ZXh0KSB7XG5cdFx0Y29uc3QgcHJvcGVydHlEYXRhVHlwZSA9IGdldFByb3BlcnR5RGF0YVR5cGUobmF2aWdhdGlvbkNvbnRleHQpO1xuXHRcdGlmIChwcm9wZXJ0eURhdGFUeXBlKSB7XG5cdFx0XHRpc0ZpbHRlcmFibGUgPSBwcm9wZXJ0eURhdGFUeXBlID8gaXNUeXBlRmlsdGVyYWJsZShwcm9wZXJ0eURhdGFUeXBlIGFzIGtleW9mIHR5cGVvZiBEZWZhdWx0VHlwZUZvckVkbVR5cGUpIDogZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlzRmlsdGVyYWJsZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gaXNGaWx0ZXJhYmxlO1xufVxuXG4vLyBJbnRlcm5hbCB1c2FnZSBvbmx5XG5mdW5jdGlvbiBpc0NvbnRleHRQYXRoRmlsdGVyYWJsZShtZXRhTW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgZW50aXR5U2V0UGF0aDogc3RyaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKSB7XG5cdGNvbnN0IGZ1bGxQYXRoID0gYCR7ZW50aXR5U2V0UGF0aH0vJHtjb250ZXh0UGF0aH1gLFxuXHRcdGVzUGFydHMgPSBmdWxsUGF0aC5zcGxpdChcIi9cIikuc3BsaWNlKDAsIDIpLFxuXHRcdGNvbnRleHRzID0gZnVsbFBhdGguc3BsaXQoXCIvXCIpLnNwbGljZSgyKTtcblx0bGV0IGlzTm9GaWx0ZXJhYmxlID0gZmFsc2UsXG5cdFx0Y29udGV4dCA9IFwiXCI7XG5cblx0ZW50aXR5U2V0UGF0aCA9IGVzUGFydHMuam9pbihcIi9cIik7XG5cblx0aXNOb0ZpbHRlcmFibGUgPSBjb250ZXh0cy5zb21lKGZ1bmN0aW9uIChpdGVtOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkge1xuXHRcdGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnRleHQgKz0gYC8ke2l0ZW19YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udGV4dCA9IGl0ZW07XG5cdFx0fVxuXHRcdGlmIChpbmRleCA9PT0gYXJyYXkubGVuZ3RoIC0gMikge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBcIi9DdXN0b21lci9TZXQvUHJvcGVydHlcIiB0aGlzIGlzIHRvIGNoZWNrIG5hdmlnYXRpb24gcmVzdHJpY3Rpb25zIG9mIFwiQ3VzdG9tZXJcIiBmb3Igbm9uLWZpbHRlcmFibGUgcHJvcGVydGllcyBpbiBcIlNldFwiXG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zID0gTUVUQU1PREVMX0ZVTkNUSU9OUy5nZXROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIGl0ZW0pO1xuXHRcdFx0Y29uc3QgZmlsdGVyUmVzdHJpY3Rpb25zID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uRmlsdGVyUmVzdHJpY3Rpb25zO1xuXHRcdFx0Y29uc3Qgbm9uRmlsdGVyYWJsZVByb3BlcnRpZXMgPSBmaWx0ZXJSZXN0cmljdGlvbnM/Lk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgdGFyZ2V0UHJvcGVydHlQYXRoID0gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzPy5maW5kKGZ1bmN0aW9uIChwcm9wZXJ0eVBhdGgpIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvcGVydHlQYXRoLiRQcm9wZXJ0eVBhdGggPT09IHRhcmdldFByb3BlcnR5UGF0aDtcblx0XHRcdFx0fSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGluZGV4ID09PSBhcnJheS5sZW5ndGggLSAxKSB7XG5cdFx0XHQvL2xhc3QgcGF0aCBzZWdtZW50XG5cdFx0XHRpc05vRmlsdGVyYWJsZSA9IGlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyhtZXRhTW9kZWxDb250ZXh0LCBlbnRpdHlTZXRQYXRoLCBjb250ZXh0KTtcblx0XHR9IGVsc2UgaWYgKG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9LyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLyR7aXRlbX1gKSkge1xuXHRcdFx0Ly9jaGVjayBleGlzdGluZyBjb250ZXh0IHBhdGggYW5kIGluaXRpYWxpemUgaXRcblx0XHRcdGlzTm9GaWx0ZXJhYmxlID0gaXNJbk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIGNvbnRleHQpO1xuXHRcdFx0Y29udGV4dCA9IFwiXCI7XG5cdFx0XHQvL3NldCB0aGUgbmV3IEVudGl0eVNldFxuXHRcdFx0ZW50aXR5U2V0UGF0aCA9IGAvJHttZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofS8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke2l0ZW19YCkgYXMgc3RyaW5nfWA7XG5cdFx0fVxuXHRcdHJldHVybiBpc05vRmlsdGVyYWJsZTtcblx0fSk7XG5cdHJldHVybiBpc05vRmlsdGVyYWJsZTtcbn1cblxuLy8gSW50ZXJuYWwgdXNhZ2Ugb25seVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURhdGFUeXBlKG5hdmlnYXRpb25Db250ZXh0OiBDb250ZXh0KSB7XG5cdGxldCBkYXRhVHlwZSA9IG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiJFR5cGVcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHQvLyBpZiAka2luZCBleGlzdHMsIGl0J3Mgbm90IGEgRGF0YUZpZWxkIGFuZCB3ZSBoYXZlIHRoZSBmaW5hbCB0eXBlIGFscmVhZHlcblx0aWYgKCFuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIiRraW5kXCIpKSB7XG5cdFx0c3dpdGNoIChkYXRhVHlwZSkge1xuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiOlxuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0XHRkYXRhVHlwZSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIjpcblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIjpcblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCI6XG5cdFx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIjpcblx0XHRcdFx0ZGF0YVR5cGUgPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIlZhbHVlLyRQYXRoLyRUeXBlXCIpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aCA9IG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiVGFyZ2V0LyRBbm5vdGF0aW9uUGF0aFwiKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0XHRcdGlmIChhbm5vdGF0aW9uUGF0aC5pbmNsdWRlcyhcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFwiKSkge1xuXHRcdFx0XHRcdFx0ZGF0YVR5cGUgPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIlRhcmdldC8kQW5ub3RhdGlvblBhdGgvZm4vJFBhdGgvJFR5cGVcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvblBhdGguaW5jbHVkZXMoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikpIHtcblx0XHRcdFx0XHRcdGRhdGFUeXBlID0gbmF2aWdhdGlvbkNvbnRleHQuZ2V0UHJvcGVydHkoXCJWYWx1ZS8kUGF0aC8kVHlwZVwiKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIGUuZy4gRmllbGRHcm91cCBvciBDaGFydFxuXHRcdFx0XHRcdFx0ZGF0YVR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFUeXBlID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBkYXRhVHlwZTtcbn1cblxuLy8gRnJvbSBDb21tb25VdGlscywgQ29tbW9uSGVscGVyLCBGaWx0ZXJCYXJEZWxlZ2F0ZSwgRmlsdGVyRmllbGQsIFZhbHVlTGlzdEhlbHBlciwgVGFibGVEZWxlZ2F0ZVxuLy8gVE9ETyBjaGVjayB1c2VkIHBsYWNlcyBhbmQgcmV3b3JrIHRoaXNcbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5RmlsdGVyYWJsZShcblx0bWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsXG5cdGVudGl0eVNldFBhdGg6IHN0cmluZyxcblx0cHJvcGVydHk6IHN0cmluZyxcblx0c2tpcEhpZGRlbkZpbHRlcnM/OiBib29sZWFuXG4pOiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRpZiAodHlwZW9mIHByb3BlcnR5ICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwic1Byb3BlcnR5IHBhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nXCIpO1xuXHR9XG5cblx0Ly8gUGFyYW1ldGVycyBzaG91bGQgYmUgcmVuZGVyZWQgYXMgZmlsdGVyZmllbGRzXG5cdGlmIChtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofS9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlJlc3VsdENvbnRleHRgKSA9PT0gdHJ1ZSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y29uc3QgbmF2aWdhdGlvbkNvbnRleHQgPSBtZXRhTW9kZWxDb250ZXh0LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGAke2VudGl0eVNldFBhdGh9LyR7cHJvcGVydHl9YCk7XG5cblx0aWYgKG5hdmlnYXRpb25Db250ZXh0ICYmICFza2lwSGlkZGVuRmlsdGVycykge1xuXHRcdGlmIChcblx0XHRcdG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiKSA9PT0gdHJ1ZSB8fFxuXHRcdFx0bmF2aWdhdGlvbkNvbnRleHQuZ2V0UHJvcGVydHkoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGlkZGVuRmlsdGVyXCIpID09PSB0cnVlXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IGhpZGRlblBhdGggPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW4vJFBhdGhcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGhpZGRlbkZpbHRlclBhdGggPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5GaWx0ZXIvJFBhdGhcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKGhpZGRlblBhdGggJiYgaGlkZGVuRmlsdGVyUGF0aCkge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKG5vdChvcihwYXRoSW5Nb2RlbChoaWRkZW5QYXRoKSwgcGF0aEluTW9kZWwoaGlkZGVuRmlsdGVyUGF0aCkpKSk7XG5cdFx0fSBlbHNlIGlmIChoaWRkZW5QYXRoKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24obm90KHBhdGhJbk1vZGVsKGhpZGRlblBhdGgpKSk7XG5cdFx0fSBlbHNlIGlmIChoaWRkZW5GaWx0ZXJQYXRoKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24obm90KHBhdGhJbk1vZGVsKGhpZGRlbkZpbHRlclBhdGgpKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBjaGVja0VudGl0eVNldElzRmlsdGVyYWJsZShlbnRpdHlTZXRQYXRoLCBtZXRhTW9kZWxDb250ZXh0LCBwcm9wZXJ0eSwgbmF2aWdhdGlvbkNvbnRleHQpO1xufVxuXG4vLyBGcm9tIFRyYW5zYWN0aW9uSGVscGVyIC8gRWRpdEZsb3dcbmV4cG9ydCBmdW5jdGlvbiBnZXROb25Db21wdXRlZFZpc2libGVGaWVsZHMobWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsIHBhdGg6IHN0cmluZywgYXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50KSB7XG5cdGNvbnN0IHRlY2huaWNhbEtleXM6IHN0cmluZ1tdID0gKG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke3BhdGh9L2ApIGFzIE1ldGFNb2RlbEVudGl0eVR5cGUpLiRLZXk7XG5cdGNvbnN0IG5vbkNvbXB1dGVkVmlzaWJsZUtleXM6IHVua25vd25bXSA9IFtdO1xuXHRjb25zdCBpbW11dGFibGVWaXNpYmxlRmllbGRzOiB1bmtub3duW10gPSBbXTtcblx0Y29uc3QgZW50aXR5VHlwZSA9IG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke3BhdGh9L2ApIGFzIE1ldGFNb2RlbEVudGl0eVR5cGU7XG5cdGZvciAoY29uc3QgaXRlbSBpbiBlbnRpdHlUeXBlKSB7XG5cdFx0aWYgKGVudGl0eVR5cGVbaXRlbV0uJGtpbmQgJiYgZW50aXR5VHlwZVtpdGVtXS4ka2luZCA9PT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9ucyA9IChtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtwYXRofS8ke2l0ZW19QGApIHx8IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0aXNLZXkgPSB0ZWNobmljYWxLZXlzLmluY2x1ZGVzKGl0ZW0pLFxuXHRcdFx0XHRpc0ltbXV0YWJsZSA9IGFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkltbXV0YWJsZVwiXSxcblx0XHRcdFx0aXNOb25Db21wdXRlZCA9ICFhbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZFwiXSxcblx0XHRcdFx0aXNWaXNpYmxlID0gIWFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiXSxcblx0XHRcdFx0aXNDb21wdXRlZERlZmF1bHRWYWx1ZSA9IGFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkRGVmYXVsdFZhbHVlXCJdLFxuXHRcdFx0XHRpc0tleUNvbXB1dGVkRGVmYXVsdFZhbHVlV2l0aFRleHQgPVxuXHRcdFx0XHRcdGlzS2V5ICYmIGVudGl0eVR5cGVbaXRlbV0uJFR5cGUgPT09IFwiRWRtLkd1aWRcIlxuXHRcdFx0XHRcdFx0PyBpc0NvbXB1dGVkRGVmYXVsdFZhbHVlICYmIGFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0XCJdXG5cdFx0XHRcdFx0XHQ6IGZhbHNlO1xuXHRcdFx0aWYgKChpc0tleUNvbXB1dGVkRGVmYXVsdFZhbHVlV2l0aFRleHQgfHwgKGlzS2V5ICYmIGVudGl0eVR5cGVbaXRlbV0uJFR5cGUgIT09IFwiRWRtLkd1aWRcIikpICYmIGlzTm9uQ29tcHV0ZWQgJiYgaXNWaXNpYmxlKSB7XG5cdFx0XHRcdG5vbkNvbXB1dGVkVmlzaWJsZUtleXMucHVzaChpdGVtKTtcblx0XHRcdH0gZWxzZSBpZiAoaXNJbW11dGFibGUgJiYgaXNOb25Db21wdXRlZCAmJiBpc1Zpc2libGUpIHtcblx0XHRcdFx0aW1tdXRhYmxlVmlzaWJsZUZpZWxkcy5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzTm9uQ29tcHV0ZWQgJiYgaXNDb21wdXRlZERlZmF1bHRWYWx1ZSAmJiBhcHBDb21wb25lbnQpIHtcblx0XHRcdFx0Y29uc3QgZGlhZ25vc3RpY3MgPSBhcHBDb21wb25lbnQuZ2V0RGlhZ25vc3RpY3MoKTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IFwiQ29yZS5Db21wdXRlZERlZmF1bHRWYWx1ZSBpcyBpZ25vcmVkIGFzIENvcmUuQ29tcHV0ZWQgaXMgYWxyZWFkeSBzZXQgdG8gdHJ1ZVwiO1xuXHRcdFx0XHRkaWFnbm9zdGljcy5hZGRJc3N1ZShcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sXG5cdFx0XHRcdFx0SXNzdWVTZXZlcml0eS5NZWRpdW0sXG5cdFx0XHRcdFx0bWVzc2FnZSxcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZSxcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZS5Bbm5vdGF0aW9ucy5JZ25vcmVkQW5ub3RhdGlvblxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRjb25zdCByZXF1aXJlZFByb3BlcnRpZXMgPSBNRVRBTU9ERUxfRlVOQ1RJT05TLmdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMocGF0aCwgbWV0YU1vZGVsQ29udGV4dCk7XG5cdGlmIChyZXF1aXJlZFByb3BlcnRpZXMubGVuZ3RoKSB7XG5cdFx0cmVxdWlyZWRQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcblx0XHRcdGNvbnN0IGFubm90YXRpb25zID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYCR7cGF0aH0vJHtwcm9wZXJ0eX1AYCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG5cdFx0XHRcdGlzVmlzaWJsZSA9ICFhbm5vdGF0aW9ucz8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiXTtcblx0XHRcdGlmIChpc1Zpc2libGUgJiYgIW5vbkNvbXB1dGVkVmlzaWJsZUtleXMuaW5jbHVkZXMocHJvcGVydHkpICYmICFpbW11dGFibGVWaXNpYmxlRmllbGRzLmluY2x1ZGVzKHByb3BlcnR5KSkge1xuXHRcdFx0XHRub25Db21wdXRlZFZpc2libGVLZXlzLnB1c2gocHJvcGVydHkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBub25Db21wdXRlZFZpc2libGVLZXlzLmNvbmNhdChpbW11dGFibGVWaXNpYmxlRmllbGRzKTtcbn1cbi8vIEludGVybmFsIG9ubHksIGV4cG9zZWQgZm9yIHRlc3RzXG5mdW5jdGlvbiBnZXRSZXF1aXJlZFByb3BlcnRpZXMocGF0aDogc3RyaW5nLCBtZXRhTW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMgPSBmYWxzZSkge1xuXHRjb25zdCByZXF1aXJlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cdGxldCByZXF1aXJlZFByb3BlcnRpZXNXaXRoUGF0aDogeyAkUHJvcGVydHlQYXRoOiBzdHJpbmcgfVtdID0gW107XG5cdGNvbnN0IG5hdmlnYXRpb25UZXh0ID0gXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiO1xuXHRsZXQgZW50aXR5U2V0QW5ub3RhdGlvbjogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IG51bGwgPSBudWxsO1xuXHRpZiAocGF0aC5lbmRzV2l0aChcIiRcIikpIHtcblx0XHQvLyBpZiBzUGF0aCBjb21lcyB3aXRoIGEgJCBpbiB0aGUgZW5kLCByZW1vdmluZyBpdCBhcyBpdCBpcyBvZiBubyBzaWduaWZpY2FuY2Vcblx0XHRwYXRoID0gcGF0aC5yZXBsYWNlKFwiLyRcIiwgXCJcIik7XG5cdH1cblx0Y29uc3QgZW50aXR5VHlwZVBhdGhQYXJ0cyA9IHBhdGgucmVwbGFjZUFsbChcIiUyRlwiLCBcIi9cIikuc3BsaXQoXCIvXCIpLmZpbHRlcihNb2RlbEhlbHBlci5maWx0ZXJPdXROYXZQcm9wQmluZGluZyk7XG5cdGNvbnN0IGVudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKHBhdGgsIG1ldGFNb2RlbENvbnRleHQpO1xuXHRjb25zdCBlbnRpdHlTZXRQYXRoUGFydHMgPSBlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoTW9kZWxIZWxwZXIuZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmcpO1xuXHRjb25zdCBpc0NvbnRhaW5tZW50ID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYC8ke2VudGl0eVR5cGVQYXRoUGFydHMuam9pbihcIi9cIil9LyRDb250YWluc1RhcmdldGApID8gdHJ1ZSA6IGZhbHNlO1xuXHRjb25zdCBjb250YWlubWVudE5hdlBhdGggPSBpc0NvbnRhaW5tZW50ID8gZW50aXR5VHlwZVBhdGhQYXJ0c1tlbnRpdHlUeXBlUGF0aFBhcnRzLmxlbmd0aCAtIDFdIDogXCJcIjtcblxuXHQvL1Jlc3RyaWN0aW9ucyBkaXJlY3RseSBhdCBFbnRpdHkgU2V0XG5cdC8vZS5nLiBGUiBpbiBcIk5TLkVudGl0eUNvbnRhaW5lci9TYWxlc09yZGVyTWFuYWdlXCIgQ29udGV4dFBhdGg6IC9TYWxlc09yZGVyTWFuYWdlXG5cdGlmICghaXNDb250YWlubWVudCkge1xuXHRcdGVudGl0eVNldEFubm90YXRpb24gPSBtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofUBgKSBhcyBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uO1xuXHR9XG5cdGlmIChlbnRpdHlUeXBlUGF0aFBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHRjb25zdCBuYXZQYXRoID0gaXNDb250YWlubWVudCA/IGNvbnRhaW5tZW50TmF2UGF0aCA6IGVudGl0eVNldFBhdGhQYXJ0c1tlbnRpdHlTZXRQYXRoUGFydHMubGVuZ3RoIC0gMV07XG5cdFx0Y29uc3QgcGFyZW50RW50aXR5U2V0UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlTZXRQYXRoIDogYC8ke2VudGl0eVNldFBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuam9pbihgLyR7bmF2aWdhdGlvblRleHR9L2ApfWA7XG5cdFx0Ly9OYXZpZ2F0aW9uIHJlc3RyaWN0aW9uc1xuXHRcdC8vZS5nLiBQYXJlbnQgXCIvQ3VzdG9tZXJcIiB3aXRoIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg9XCJTZXRcIiBDb250ZXh0UGF0aDogQ3VzdG9tZXIvU2V0XG5cdFx0Y29uc3QgbmF2aWdhdGlvblJlc3RyaWN0aW9ucyA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0TmF2aWdhdGlvblJlc3RyaWN0aW9ucyhcblx0XHRcdG1ldGFNb2RlbENvbnRleHQsXG5cdFx0XHRwYXJlbnRFbnRpdHlTZXRQYXRoLFxuXHRcdFx0bmF2UGF0aC5yZXBsYWNlQWxsKFwiJTJGXCIsIFwiL1wiKVxuXHRcdCk7XG5cblx0XHRpZiAoXG5cdFx0XHRuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdE1FVEFNT0RFTF9GVU5DVElPTlMuaGFzUmVzdHJpY3RlZFByb3BlcnRpZXNJbkFubm90YXRpb25zKG5hdmlnYXRpb25SZXN0cmljdGlvbnMsIHRydWUsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKVxuXHRcdCkge1xuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzV2l0aFBhdGggPSBjaGVja1VwZGF0ZVJlc3RyaWN0aW9uc1xuXHRcdFx0XHQ/IG5hdmlnYXRpb25SZXN0cmljdGlvbnMuVXBkYXRlUmVzdHJpY3Rpb25zPy5SZXF1aXJlZFByb3BlcnRpZXMgPz8gW11cblx0XHRcdFx0OiBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zLkluc2VydFJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdO1xuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHQhcmVxdWlyZWRQcm9wZXJ0aWVzV2l0aFBhdGgubGVuZ3RoICYmXG5cdFx0XHRNRVRBTU9ERUxfRlVOQ1RJT05TLmhhc1Jlc3RyaWN0ZWRQcm9wZXJ0aWVzSW5Bbm5vdGF0aW9ucyhlbnRpdHlTZXRBbm5vdGF0aW9uLCBmYWxzZSwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMpXG5cdFx0KSB7XG5cdFx0XHRyZXF1aXJlZFByb3BlcnRpZXNXaXRoUGF0aCA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUFubm90YXRpb25zKFxuXHRcdFx0XHRlbnRpdHlTZXRBbm5vdGF0aW9uLFxuXHRcdFx0XHRjaGVja1VwZGF0ZVJlc3RyaWN0aW9uc1xuXHRcdFx0KTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoTUVUQU1PREVMX0ZVTkNUSU9OUy5oYXNSZXN0cmljdGVkUHJvcGVydGllc0luQW5ub3RhdGlvbnMoZW50aXR5U2V0QW5ub3RhdGlvbiwgZmFsc2UsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSkge1xuXHRcdHJlcXVpcmVkUHJvcGVydGllc1dpdGhQYXRoID0gTUVUQU1PREVMX0ZVTkNUSU9OUy5nZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tQW5ub3RhdGlvbnMoZW50aXR5U2V0QW5ub3RhdGlvbiwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMpO1xuXHR9XG5cdHJlcXVpcmVkUHJvcGVydGllc1dpdGhQYXRoLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVkUHJvcGVydHkpIHtcblx0XHRjb25zdCBwcm9wZXJ0eVBhdGggPSByZXF1aXJlZFByb3BlcnR5LiRQcm9wZXJ0eVBhdGg7XG5cdFx0cmVxdWlyZWRQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHlQYXRoKTtcblx0fSk7XG5cdHJldHVybiByZXF1aXJlZFByb3BlcnRpZXM7XG59XG5cbi8vIFRyYW5zYWN0aW9uSGVscGVyIC8vIEludGVybmFsRmllbGRcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zKHBhdGg6IHN0cmluZywgbWV0YW1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwpIHtcblx0cmV0dXJuIE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzKHBhdGgsIG1ldGFtb2RlbENvbnRleHQpO1xufVxuXG4vLyBJbnRlcm5hbEZpZWxkXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyhwYXRoOiBzdHJpbmcsIG1ldGFtb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsKSB7XG5cdHJldHVybiBNRVRBTU9ERUxfRlVOQ1RJT05TLmdldFJlcXVpcmVkUHJvcGVydGllcyhwYXRoLCBtZXRhbW9kZWxDb250ZXh0LCB0cnVlKTtcbn1cblxuLy8gSW50ZXJuYWwgb25seSwgZXhwb3NlZCBmb3IgdGVzdHNcbmZ1bmN0aW9uIGdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uczogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IG51bGwsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zID0gZmFsc2UpIHtcblx0aWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0cmV0dXJuIGFubm90YXRpb25zPy5bXCJAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5VcGRhdGVSZXN0cmljdGlvbnNcIl0/LlJlcXVpcmVkUHJvcGVydGllcyA/PyBbXTtcblx0fVxuXHRyZXR1cm4gYW5ub3RhdGlvbnM/LltcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluc2VydFJlc3RyaWN0aW9uc1wiXT8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdO1xufVxuXG4vLyBJbnRlcm5hbCBvbmx5LCBleHBvc2VkIGZvciB0ZXN0c1xuZnVuY3Rpb24gaGFzUmVzdHJpY3RlZFByb3BlcnRpZXNJbkFubm90YXRpb25zKFxuXHRhbm5vdGF0aW9uczogTWV0YU1vZGVsVHlwZTxOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzPiB8IE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24gfCBudWxsLFxuXHRpc05hdmlnYXRpb25SZXN0cmljdGlvbnMgPSBmYWxzZSxcblx0Y2hlY2tVcGRhdGVSZXN0cmljdGlvbnMgPSBmYWxzZVxuKSB7XG5cdGlmIChpc05hdmlnYXRpb25SZXN0cmljdGlvbnMpIHtcblx0XHRjb25zdCBuYXZBbm5vdGF0aW9ucyA9IGFubm90YXRpb25zIGFzIE1ldGFNb2RlbFR5cGU8TmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcz4gfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRyZXR1cm4gbmF2QW5ub3RhdGlvbnM/LlVwZGF0ZVJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gbmF2QW5ub3RhdGlvbnM/Lkluc2VydFJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8gdHJ1ZSA6IGZhbHNlO1xuXHR9IGVsc2UgaWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0Y29uc3QgZW50aXR5QW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9ucyBhcyBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdHJldHVybiBlbnRpdHlBbm5vdGF0aW9ucz8uW1wiQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuVXBkYXRlUmVzdHJpY3Rpb25zXCJdPy5SZXF1aXJlZFByb3BlcnRpZXMgPyB0cnVlIDogZmFsc2U7XG5cdH1cblx0Y29uc3QgZW50aXR5dFNldEFubm90YXRpb25zID0gYW5ub3RhdGlvbnMgYXMgTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IHVuZGVmaW5lZDtcblx0cmV0dXJuIGVudGl0eXRTZXRBbm5vdGF0aW9ucz8uW1wiQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSW5zZXJ0UmVzdHJpY3Rpb25zXCJdPy5SZXF1aXJlZFByb3BlcnRpZXMgPyB0cnVlIDogZmFsc2U7XG59XG5cbi8vIERPIE5PVCBVU0UsIG9ubHkgZm9yIHRlc3RzIGFuZCBpbnRlcm5hbGx5IGluIHRoaXMgZmlsZVxuZXhwb3J0IGNvbnN0IE1FVEFNT0RFTF9GVU5DVElPTlMgPSB7XG5cdGdldFJlcXVpcmVkUHJvcGVydGllcyxcblx0Z2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUFubm90YXRpb25zLFxuXHRoYXNSZXN0cmljdGVkUHJvcGVydGllc0luQW5ub3RhdGlvbnMsXG5cdGdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMsXG5cdGdldE5hdmlnYXRpb25SZXN0cmljdGlvbnNcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7RUFzQkE7RUFDTyxTQUFTQSxxQkFBcUIsQ0FBQ0MsUUFBZ0IsRUFBRUMsU0FBeUIsRUFBRTtJQUNsRixJQUFJQyxrQkFBa0I7SUFDdEIsSUFBSUMsNEJBQTRCO0lBQ2hDLE1BQU1DLGNBQWMsR0FBRyw0QkFBNEI7SUFDbkQsTUFBTUMsc0JBQXNCLEdBQUcsK0NBQStDO0lBQzlFLE1BQU1DLG1CQUFtQixHQUFHTixRQUFRLENBQUNPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUNDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsTUFBTSxDQUFDQyxXQUFXLENBQUNDLHVCQUF1QixDQUFDO0lBQ2xILE1BQU1DLGFBQWEsR0FBR0YsV0FBVyxDQUFDRyxnQkFBZ0IsQ0FBQ2IsUUFBUSxFQUFFQyxTQUFTLENBQUM7SUFDdkUsTUFBTWEsa0JBQWtCLEdBQUdGLGFBQWEsQ0FBQ0osS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxNQUFNLENBQUNDLFdBQVcsQ0FBQ0MsdUJBQXVCLENBQUM7SUFDL0YsTUFB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
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/type/EDM","sap/fe/macros/ODataMetaModelUtil"],function(e,t,i,r,n){"use strict";var o={};var s=r.isTypeFilterable;var a=t.pathInModel;var l=t.or;var c=t.not;var u=t.compileExpression;var d=e.IssueSeverity;var p=e.IssueCategoryType;var g=e.IssueCategory;function f(e,t){let r;let n;const o="$NavigationPropertyBinding";const s="@Org.OData.Capabilities.V1.SearchRestrictions";const a=e.replaceAll("%2F","/").split("/").filter(i.filterOutNavPropBinding);const l=i.getEntitySetPath(e,t);const c=l.split("/").filter(i.filterOutNavPropBinding);const u=t.getObject(`/${a.join("/")}/$ContainsTarget`)?true:false;const d=u?a[a.length-1]:"";if(!u){r=t.getObject(`${l}${s}`)}if(a.length>1){const e=u?d:c[c.length-1];const i=u?l:`/${c.slice(0,-1).join(`/${o}/`)}`;const r=N.getNavigationRestrictions(t,i,e.replaceAll("%2F","/"));n=r===null||r===void 0?void 0:r.SearchRestrictions}return n??r}o.getSearchRestrictions=f;function v(e,t,i){const r=e.getObject(`${t}@Org.OData.Capabilities.V1.NavigationRestrictions`);const n=r===null||r===void 0?void 0:r.RestrictedProperties;return n===null||n===void 0?void 0:n.find(function(e){var t;return((t=e.NavigationProperty)===null||t===void 0?void 0:t.$NavigationPropertyPath)===i})}o.getNavigationRestrictions=v;function P(e,t,i){let r=false;const n=e.getObject(`${t}@Org.OData.Capabilities.V1.FilterRestrictions`);if(n!==null&&n!==void 0&&n.NonFilterableProperties){r=n.NonFilterableProperties.some(function(e){return e.$NavigationPropertyPath===i||e.$PropertyPath===i})}return r}function $(e,t,i){let r=false;const o=e.getObject(t+"@Org.OData.Aggregation.V1.ApplySupported")?true:false;if(o){const o=e.getObject(`${t}@`);const s=n.getAllCustomAggregates(o);const a=s?Object.keys(s):undefined;if(a!==null&&a!==void 0&&a.includes(i)){r=true}}return r}o.isCustomAggregate=$;function h(e,t,i,r){let n=e.split("/").length===2&&!i.includes("/")?!P(t,e,i)&&!$(t,e,i):!b(t,e,i);if(n&&r){const e=m(r);if(e){n=e?s(e):false}else{n=false}}return n}function b(e,t,i){const r=`${t}/${i}`,n=r.split("/").splice(0,2),o=r.split("/").splice(2);let s=false,a="";t=n.join("/");s=o.some(function(i,r,n){if(a.length>0){a+=`/${i}`}else{a=i}if(r===n.length-2){const r=N.getNavigationRestrictions(e,t,i);const o=r===null||r===void 0?void 0:r.FilterRestrictions;const s=o===null||o===void 0?void 0:o.NonFilterableProperties;const a=n[n.length-1];if(s!==null&&s!==void 0&&s.find(function(e){return e.$PropertyPath===a})){return true}}if(r===n.length-1){s=P(e,t,a)}else if(e.getObject(`${t}/$NavigationPropertyBinding/${i}`)){s=P(e,t,a);a="";t=`/${e.getObject(`${t}/$NavigationPropertyBinding/${i}`)}`}return s});return s}function m(e){let t=e.getProperty("$Type");if(!e.getProperty("$kind")){switch(t){case"com.sap.vocabularies.UI.v1.DataFieldForAction":case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":t=undefined;break;case"com.sap.vocabularies.UI.v1.DataField":case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":case"com.sap.vocabularies.UI.v1.DataFieldWithUrl":case"com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":case"com.sap.vocabularies.UI.v1.DataFieldWithAction":t=e.getProperty("Value/$Path/$Type");break;case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":default:const i=e.getProperty("Target/$AnnotationPath");if(i){if(i.includes("com.sap.vocabularies.Communication.v1.Contact")){t=e.getProperty("Target/$AnnotationPath/fn/$Path/$Type")}else if(i.includes("com.sap.vocabularies.UI.v1.DataPoint")){t=e.getProperty("Value/$Path/$Type")}else{t=undefined}}else{t=undefined}break}}return t}function R(e,t,i,r){if(typeof i!=="string"){throw new Error("sProperty parameter must be a string")}if(e.getObject(`${t}/@com.sap.vocabularies.Common.v1.ResultContext`)===true){return true}const n=e.createBindingContext(`${t}/${i}`);if(n&&!r){if(n.getProperty("@com.sap.vocabularies.UI.v1.Hidden")===true||n.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter")===true){return false}const e=n.getProperty("@com.sap.vocabularies.UI.v1.Hidden/$Path");const t=n.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter/$Path");if(e&&t){return u(c(l(a(e),a(t))))}else if(e){return u(c(a(e)))}else if(t){return u(c(a(t)))}}return h(t,e,i,n)}o.isPropertyFilterable=R;function O(e,t,i){const r=e.getObject(`${t}/`).$Key;const n=[];const o=[];const s=e.getObject(`${t}/`);for(const a in s){if(s[a].$kind&&s[a].$kind==="Property"){const l=e.getObject(`${t}/${a}@`)||{},c=r.includes(a),u=l["@Org.OData.Core.V1.Immutable"],f=!l["@Org.OData.Core.V1.Computed"],v=!l["@com.sap.vocabularies.UI.v1.Hidden"],P=l["@Org.OData.Core.V1.ComputedDefaultValue"],$=c&&s[a].$Type==="Edm.Guid"?P&&l["@com.sap.vocabularies.Common.v1.Text"]:false;if(($||c&&s[a].$Type!=="Edm.Guid")&&f&&v){n.push(a)}else if(u&&f&&v){o.push(a)}if(!f&&P&&i){const e=i.getDiagnostics();const t="Core.ComputedDefaultValue is ignored as Core.Computed is already set to true";e.addIssue(g.Annotation,d.Medium,t,p,p.Annotations.IgnoredAnnotation)}}}const a=N.getRequiredPropertiesFromInsertRestrictions(t,e);if(a.length){a.forEach(function(i){const r=e.getObject(`${t}/${i}@`),s=!(r!==null&&r!==void 0&&r["@com.sap.vocabularies.UI.v1.Hidden"]);if(s&&!n.includes(i)&&!o.includes(i)){n.push(i)}})}return n.concat(o)}o.getNonComputedVisibleFields=O;function y(e,t){let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;const n=[];let o=[];const s="$NavigationPropertyBinding";let a=null;if(e.endsWith("$")){e=e.replace("/$","")}const l=e.replaceAll("%2F","/").split("/").filter(i.filterOutNavPropBinding);const c=i.getEntitySetPath(e,t);const u=c.split("/").filter(i.filterOutNavPropBinding);const d=t.getObject(`/${l.join("/")}/$ContainsTarget`)?true:false;const p=d?l[l.length-1]:"";if(!d){a=t.getObject(`${c}@`)}if(l.length>1){const e=d?p:u[u.length-1];const i=d?c:`/${u.slice(0,-1).join(`/${s}/`)}`;const n=N.getNavigationRestrictions(t,i,e.replaceAll("%2F","/"));if(n!==undefined&&N.hasRestrictedPropertiesInAnnotations(n,true,r)){var g,f;o=r?((g=n.UpdateRestrictions)===null||g===void 0?void 0:g.RequiredProperties)??[]:((f=n.InsertRestrictions)===null||f===void 0?void 0:f.RequiredProperties)??[]}if(!o.length&&N.hasRestrictedPropertiesInAnnotations(a,false,r)){o=N.getRequiredPropertiesFromAnnotations(a,r)}}else if(N.hasRestrictedPropertiesInAnnotations(a,false,r)){o=N.getRequiredPropertiesFromAnnotations(a,r)}o.forEach(function(e){const t=e.$PropertyPath;n.push(t)});return n}function I(e,t){return N.getRequiredProperties(e,t)}o.getRequiredPropertiesFromInsertRestrictions=I;function F(e,t){return N.getRequiredProperties(e,t,true)}o.getRequiredPropertiesFromUpdateRestrictions=F;function C(e){var t;let i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(i){var r;return(e===null||e===void 0?void 0:(r=e["@Org.OData.Capabilities.V1.UpdateRestrictions"])===null||r===void 0?void 0:r.RequiredProperties)??[]}return(e===null||e===void 0?void 0:(t=e["@Org.OData.Capabilities.V1.InsertRestrictions"])===null||t===void 0?void 0:t.RequiredProperties)??[]}function D(e){var t;let i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(i){var n;const t=e;if(r){var o;return t!==null&&t!==void 0&&(o=t.UpdateRestrictions)!==null&&o!==void 0&&o.RequiredProperties?true:false}return t!==null&&t!==void 0&&(n=t.InsertRestrictions)!==null&&n!==void 0&&n.RequiredProperties?true:false}else if(r){var s;const t=e;return t!==null&&t!==void 0&&(s=t["@Org.OData.Capabilities.V1.UpdateRestrictions"])!==null&&s!==void 0&&s.RequiredProperties?true:false}const a=e;return a!==null&&a!==void 0&&(t=a["@Org.OData.Capabilities.V1.InsertRestrictions"])!==null&&t!==void 0&&t.RequiredProperties?true:false}const N={getRequiredProperties:y,getRequiredPropertiesFromAnnotations:C,hasRestrictedPropertiesInAnnotations:D,getRequiredPropertiesFromInsertRestrictions:I,getNavigationRestrictions:v};o.METAMODEL_FUNCTIONS=N;return o},false);
6
+ //# sourceMappingURL=MetaModelFunction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaModelFunction.js","names":["sap","ui","define","IssueManager","BindingToolkit","ModelHelper","EDM","metaModelUtil","_exports","isTypeFilterable","pathInModel","or","not","compileExpression","IssueSeverity","IssueCategoryType","IssueCategory","getSearchRestrictions","fullPath","metaModel","searchRestrictions","navigationSearchRestrictions","navigationText","searchRestrictionsTerm","entityTypePathParts","replaceAll","split","filter","filterOutNavPropBinding","entitySetPath","getEntitySetPath","entitySetPathParts","isContainment","getObject","join","containmentNavPath","length","navPath","parentEntitySetPath","slice","navigationRestrictions","METAMODEL_FUNCTIONS","getNavigationRestrictions","SearchRestrictions","metaModelContext","navigationPath","restrictedProperties","RestrictedProperties","find","restrictedProperty","_restrictedProperty$N","NavigationProperty","$NavigationPropertyPath","isInNonFilterableProperties","metamodelContext","contextPath","isNotFilterable","filterRestrictionsAnnotation","NonFilterableProperties","some","property","$PropertyPath","isCustomAggregate","interanlIsCustomAggregate","isApplySupported","entitySetAnnotations","customAggregatesAnnotations","getAllCustomAggregates","customAggregates","Object","keys","undefined","includes","checkEntitySetIsFilterable","navigationContext","isFilterable","isContextPathFilterable","propertyDataType","getPropertyDataType","esParts","splice","contexts","isNoFilterable","context","item","index","array","filterRestrictions","FilterRestrictions","nonFilterableProperties","targetPropertyPath","propertyPath","dataType","getProperty","annotationPath","isPropertyFilterable","skipHiddenFilters","Error","createBindingContext","hiddenPath","hiddenFilterPath","getNonComputedVisibleFields","path","appComponent","technicalKeys","$Key","nonComputedVisibleKeys","immutableVisibleFields","entityType","$kind","annotations","isKey","isImmutable","isNonComputed","isVisible","isComputedDefaultValue","isKeyComputedDefaultValueWithText","$Type","push","diagnostics","getDiagnostics","message","addIssue","Annotation","Medium","Annotations","IgnoredAnnotation","requiredProperties","getRequiredPropertiesFromInsertRestrictions","forEach","concat","getRequiredProperties","checkUpdateRestrictions","arguments","requiredPropertiesWithPath","entitySetAnnotation","endsWith","replace","hasRestrictedPropertiesInAnnotations","_navigationRestrictio","_navigationRestrictio2","UpdateRestrictions","RequiredProperties","InsertRestrictions","getRequiredPropertiesFromAnnotations","requiredProperty","getRequiredPropertiesFromUpdateRestrictions","_annotations$OrgODa2","_annotations$OrgODa","_entitytSetAnnotation","isNavigationRestrictions","_navAnnotations$Inser","navAnnotations","_navAnnotations$Updat","_entityAnnotations$O","entityAnnotations","entitytSetAnnotations"],"sources":["MetaModelFunction-dbg.js"],"mappings":"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"}