@sapui5/sap.fe.core 1.134.0 → 1.136.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 (395) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +6 -62
  4. package/src/sap/fe/core/ActionRuntime.ts +14 -65
  5. package/src/sap/fe/core/AppComponent.js +10 -2
  6. package/src/sap/fe/core/AppComponent.ts +6 -0
  7. package/src/sap/fe/core/AppStateHandler.js +9 -7
  8. package/src/sap/fe/core/AppStateHandler.ts +7 -5
  9. package/src/sap/fe/core/BaseController.js +1 -1
  10. package/src/sap/fe/core/CommonUtils.js +8 -4
  11. package/src/sap/fe/core/CommonUtils.ts +19 -4
  12. package/src/sap/fe/core/ExtensionAPI.js +7 -5
  13. package/src/sap/fe/core/ExtensionAPI.ts +5 -3
  14. package/src/sap/fe/core/IRowBindingInterface.js +1 -1
  15. package/src/sap/fe/core/InsightsFormattersExtension.js +1 -1
  16. package/src/sap/fe/core/PageController.js +36 -6
  17. package/src/sap/fe/core/PageController.ts +30 -0
  18. package/src/sap/fe/core/ResourceModel.js +1 -1
  19. package/src/sap/fe/core/ReuseComponent.js +1 -1
  20. package/src/sap/fe/core/TemplateComponent.js +1 -1
  21. package/src/sap/fe/core/TemplateModel.js +1 -1
  22. package/src/sap/fe/core/UIProvider.js +2 -2
  23. package/src/sap/fe/core/UIProvider.ts +3 -32
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +34 -16
  25. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +39 -18
  26. package/src/sap/fe/core/buildingBlocks/IBuildingBlockOwnerComponent.js +1 -1
  27. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
  28. package/src/sap/fe/core/buildingBlocks/templating/AttributeModel.js +1 -1
  29. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockFormatter.js +1 -1
  30. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +2 -2
  31. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +1 -0
  32. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +7 -7
  33. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +9 -9
  34. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
  35. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +5 -3
  36. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +3 -1
  37. package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
  38. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +15 -15
  39. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +19 -19
  40. package/src/sap/fe/core/controllerextensions/ContextSharing.js +1 -1
  41. package/src/sap/fe/core/controllerextensions/EditFlow.js +74 -93
  42. package/src/sap/fe/core/controllerextensions/EditFlow.ts +89 -108
  43. package/src/sap/fe/core/controllerextensions/Feedback.js +1 -1
  44. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +355 -0
  45. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +387 -0
  46. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
  47. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  48. package/src/sap/fe/core/controllerextensions/InternalRouting.js +36 -11
  49. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +36 -10
  50. package/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
  51. package/src/sap/fe/core/controllerextensions/MessageHandler.js +36 -6
  52. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +41 -1
  53. package/src/sap/fe/core/controllerextensions/PageReady.js +5 -2
  54. package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -0
  55. package/src/sap/fe/core/controllerextensions/Paginator.js +1 -1
  56. package/src/sap/fe/core/controllerextensions/Placeholder.js +1 -1
  57. package/src/sap/fe/core/controllerextensions/Recommendations.js +1 -1
  58. package/src/sap/fe/core/controllerextensions/Routing.js +9 -9
  59. package/src/sap/fe/core/controllerextensions/Routing.ts +4 -4
  60. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  61. package/src/sap/fe/core/controllerextensions/Share.js +1 -1
  62. package/src/sap/fe/core/controllerextensions/SideEffects.js +13 -6
  63. package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -6
  64. package/src/sap/fe/core/controllerextensions/Telemetry.js +1 -1
  65. package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  66. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +14 -11
  67. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +20 -14
  68. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +4 -12
  69. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +2 -10
  70. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +12 -2
  71. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +12 -0
  72. package/src/sap/fe/core/controllerextensions/dialog/ODataStrictDialog.js +1 -1
  73. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
  74. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +111 -89
  75. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +140 -105
  76. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +137 -79
  77. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +133 -120
  78. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -3
  79. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
  80. package/src/sap/fe/core/controllerextensions/editFlow/editFlowConstants.js +1 -1
  81. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +26 -17
  82. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +32 -23
  83. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +3 -3
  84. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  85. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +103 -23
  86. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +144 -53
  87. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +29 -11
  88. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +39 -15
  89. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +24 -22
  90. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +28 -26
  91. package/src/sap/fe/core/controllerextensions/editFlow/operations/actionHelper.js +1 -1
  92. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -572
  93. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +25 -873
  94. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
  95. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +98 -56
  96. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -80
  97. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +5 -3
  98. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +7 -4
  99. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +1 -1
  100. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +1 -1
  101. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +1 -1
  102. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +1 -1
  103. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
  104. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
  105. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.js +1 -1
  106. package/src/sap/fe/core/controls/Any.js +1 -1
  107. package/src/sap/fe/core/controls/AnyElement.js +1 -1
  108. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  109. package/src/sap/fe/core/controls/ComponentLoader.js +1 -1
  110. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +3 -3
  111. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +8 -1
  112. package/src/sap/fe/core/controls/DataWatcher.js +4 -3
  113. package/src/sap/fe/core/controls/DataWatcher.tsx +4 -1
  114. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  115. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +10 -4
  116. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +13 -2
  117. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
  118. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +1 -1
  119. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.js +68 -0
  120. package/src/sap/fe/core/controls/inlineEditFlow/BeforeActionDialog.tsx +52 -0
  121. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.js +144 -0
  122. package/src/sap/fe/core/controls/inlineEditFlow/BeforeNavigationDialog.tsx +128 -0
  123. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.js +53 -0
  124. package/src/sap/fe/core/controls/inlineEditFlow/DraftExistsDialog.tsx +39 -0
  125. package/src/sap/fe/core/converters/ConverterContext.js +1 -1
  126. package/src/sap/fe/core/converters/ManifestSettings.js +3 -2
  127. package/src/sap/fe/core/converters/ManifestSettings.ts +42 -20
  128. package/src/sap/fe/core/converters/ManifestWrapper.js +8 -2
  129. package/src/sap/fe/core/converters/ManifestWrapper.ts +8 -0
  130. package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  131. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  132. package/src/sap/fe/core/converters/annotations/DataField.js +2 -2
  133. package/src/sap/fe/core/converters/annotations/DataField.ts +2 -1
  134. package/src/sap/fe/core/converters/controls/Common/Action.js +55 -6
  135. package/src/sap/fe/core/converters/controls/Common/Action.ts +59 -3
  136. package/src/sap/fe/core/converters/controls/Common/Chart.js +45 -6
  137. package/src/sap/fe/core/converters/controls/Common/Chart.ts +60 -9
  138. package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
  139. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  140. package/src/sap/fe/core/converters/controls/Common/Form.js +21 -5
  141. package/src/sap/fe/core/converters/controls/Common/Form.ts +25 -5
  142. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  143. package/src/sap/fe/core/converters/controls/Common/Table.js +89 -1686
  144. package/src/sap/fe/core/converters/controls/Common/Table.ts +254 -2513
  145. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +1701 -0
  146. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +2377 -0
  147. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +64 -15
  148. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +76 -14
  149. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -36
  150. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +8 -46
  151. package/src/sap/fe/core/converters/controls/ListReport/FilterField.js +106 -0
  152. package/src/sap/fe/core/converters/controls/ListReport/FilterField.ts +129 -0
  153. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +10 -5
  154. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +8 -3
  155. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  156. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +5 -3
  157. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +11 -4
  158. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +7 -2
  159. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  160. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  161. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
  162. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  163. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -1
  164. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  165. package/src/sap/fe/core/converters/helpers/Key.js +1 -1
  166. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  167. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  168. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +30 -8
  169. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +40 -16
  170. package/src/sap/fe/core/converters/templates/ListReportConverter.js +5 -3
  171. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +5 -1
  172. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  173. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +184 -0
  174. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +240 -0
  175. package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
  176. package/src/sap/fe/core/designtime/messagebundle.properties +11 -0
  177. package/src/sap/fe/core/designtime/messagebundle_ar.properties +7 -0
  178. package/src/sap/fe/core/designtime/messagebundle_bg.properties +7 -0
  179. package/src/sap/fe/core/designtime/messagebundle_ca.properties +7 -0
  180. package/src/sap/fe/core/designtime/messagebundle_cnr.properties +7 -0
  181. package/src/sap/fe/core/designtime/messagebundle_cs.properties +7 -0
  182. package/src/sap/fe/core/designtime/messagebundle_cy.properties +7 -0
  183. package/src/sap/fe/core/designtime/messagebundle_da.properties +7 -0
  184. package/src/sap/fe/core/designtime/messagebundle_de.properties +7 -0
  185. package/src/sap/fe/core/designtime/messagebundle_el.properties +7 -0
  186. package/src/sap/fe/core/designtime/messagebundle_en.properties +7 -0
  187. package/src/sap/fe/core/designtime/messagebundle_en_GB.properties +7 -0
  188. package/src/sap/fe/core/designtime/messagebundle_es.properties +7 -0
  189. package/src/sap/fe/core/designtime/messagebundle_es_MX.properties +7 -0
  190. package/src/sap/fe/core/designtime/messagebundle_et.properties +7 -0
  191. package/src/sap/fe/core/designtime/messagebundle_fi.properties +7 -0
  192. package/src/sap/fe/core/designtime/messagebundle_fr.properties +7 -0
  193. package/src/sap/fe/core/designtime/messagebundle_fr_CA.properties +7 -0
  194. package/src/sap/fe/core/designtime/messagebundle_hi.properties +7 -0
  195. package/src/sap/fe/core/designtime/messagebundle_hr.properties +7 -0
  196. package/src/sap/fe/core/designtime/messagebundle_hu.properties +7 -0
  197. package/src/sap/fe/core/designtime/messagebundle_id.properties +7 -0
  198. package/src/sap/fe/core/designtime/messagebundle_it.properties +7 -0
  199. package/src/sap/fe/core/designtime/messagebundle_iw.properties +7 -0
  200. package/src/sap/fe/core/designtime/messagebundle_ja.properties +7 -0
  201. package/src/sap/fe/core/designtime/messagebundle_kk.properties +7 -0
  202. package/src/sap/fe/core/designtime/messagebundle_ko.properties +7 -0
  203. package/src/sap/fe/core/designtime/messagebundle_lt.properties +7 -0
  204. package/src/sap/fe/core/designtime/messagebundle_lv.properties +7 -0
  205. package/src/sap/fe/core/designtime/messagebundle_mk.properties +7 -0
  206. package/src/sap/fe/core/designtime/messagebundle_ms.properties +7 -0
  207. package/src/sap/fe/core/designtime/messagebundle_nl.properties +7 -0
  208. package/src/sap/fe/core/designtime/messagebundle_no.properties +7 -0
  209. package/src/sap/fe/core/designtime/messagebundle_pl.properties +7 -0
  210. package/src/sap/fe/core/designtime/messagebundle_pt.properties +7 -0
  211. package/src/sap/fe/core/designtime/messagebundle_pt_PT.properties +7 -0
  212. package/src/sap/fe/core/designtime/messagebundle_ro.properties +7 -0
  213. package/src/sap/fe/core/designtime/messagebundle_ru.properties +7 -0
  214. package/src/sap/fe/core/designtime/messagebundle_sh.properties +7 -0
  215. package/src/sap/fe/core/designtime/messagebundle_sk.properties +7 -0
  216. package/src/sap/fe/core/designtime/messagebundle_sl.properties +7 -0
  217. package/src/sap/fe/core/designtime/messagebundle_sr.properties +7 -0
  218. package/src/sap/fe/core/designtime/messagebundle_sv.properties +7 -0
  219. package/src/sap/fe/core/designtime/messagebundle_th.properties +7 -0
  220. package/src/sap/fe/core/designtime/messagebundle_tr.properties +7 -0
  221. package/src/sap/fe/core/designtime/messagebundle_uk.properties +7 -0
  222. package/src/sap/fe/core/designtime/messagebundle_vi.properties +7 -0
  223. package/src/sap/fe/core/designtime/messagebundle_zh_CN.properties +7 -0
  224. package/src/sap/fe/core/designtime/messagebundle_zh_TW.properties +7 -0
  225. package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
  226. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  227. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  228. package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
  229. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  230. package/src/sap/fe/core/formatters/StandardFormatter.js +1 -1
  231. package/src/sap/fe/core/formatters/ValueFormatter.js +27 -12
  232. package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -11
  233. package/src/sap/fe/core/fpm/Component.js +1 -1
  234. package/src/sap/fe/core/fpm/manifest.json +1 -1
  235. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +1 -1
  236. package/src/sap/fe/core/helpers/AppStartupHelper.js +25 -4
  237. package/src/sap/fe/core/helpers/AppStartupHelper.ts +28 -2
  238. package/src/sap/fe/core/helpers/BindingHelper.js +4 -3
  239. package/src/sap/fe/core/helpers/BindingHelper.ts +2 -1
  240. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +1 -1
  241. package/src/sap/fe/core/helpers/DeleteHelper.js +6 -12
  242. package/src/sap/fe/core/helpers/DeleteHelper.ts +4 -9
  243. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  244. package/src/sap/fe/core/helpers/EditState.js +1 -1
  245. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -1
  246. package/src/sap/fe/core/helpers/FPMHelper.js +9 -3
  247. package/src/sap/fe/core/helpers/FPMHelper.ts +13 -1
  248. package/src/sap/fe/core/helpers/HTTP503Handler.js +1 -1
  249. package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
  250. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
  251. package/src/sap/fe/core/helpers/LoaderUtils.js +1 -1
  252. package/src/sap/fe/core/helpers/ManifestHelper.js +1 -1
  253. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  254. package/src/sap/fe/core/helpers/MetaModelFunction.js +1 -1
  255. package/src/sap/fe/core/helpers/MetaPath.js +1 -1
  256. package/src/sap/fe/core/helpers/ModelHelper.js +15 -5
  257. package/src/sap/fe/core/helpers/ModelHelper.ts +15 -4
  258. package/src/sap/fe/core/helpers/PasteHelper.js +39 -40
  259. package/src/sap/fe/core/helpers/PasteHelper.ts +49 -51
  260. package/src/sap/fe/core/helpers/PromiseKeeper.js +1 -1
  261. package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -1
  262. package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
  263. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  264. package/src/sap/fe/core/helpers/SizeHelper.js +1 -1
  265. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  266. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -1
  267. package/src/sap/fe/core/helpers/Synchronization.js +1 -1
  268. package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
  269. package/src/sap/fe/core/helpers/ToES6Promise.js +1 -1
  270. package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
  271. package/src/sap/fe/core/helpers/WebSocket.js +11 -2
  272. package/src/sap/fe/core/helpers/WebSocket.ts +8 -0
  273. package/src/sap/fe/core/library.js +16 -4
  274. package/src/sap/fe/core/library.support.js +1 -1
  275. package/src/sap/fe/core/library.ts +1 -0
  276. package/src/sap/fe/core/manifestMerger/AddNewPage.js +1 -1
  277. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  278. package/src/sap/fe/core/messagebundle.properties +41 -2
  279. package/src/sap/fe/core/messagebundle_ar.properties +25 -4
  280. package/src/sap/fe/core/messagebundle_bg.properties +25 -4
  281. package/src/sap/fe/core/messagebundle_ca.properties +24 -3
  282. package/src/sap/fe/core/messagebundle_cnr.properties +25 -4
  283. package/src/sap/fe/core/messagebundle_cs.properties +23 -2
  284. package/src/sap/fe/core/messagebundle_cy.properties +24 -3
  285. package/src/sap/fe/core/messagebundle_da.properties +25 -4
  286. package/src/sap/fe/core/messagebundle_de.properties +28 -7
  287. package/src/sap/fe/core/messagebundle_el.properties +23 -2
  288. package/src/sap/fe/core/messagebundle_en.properties +25 -4
  289. package/src/sap/fe/core/messagebundle_en_GB.properties +25 -4
  290. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -5
  291. package/src/sap/fe/core/messagebundle_es.properties +23 -2
  292. package/src/sap/fe/core/messagebundle_es_MX.properties +23 -2
  293. package/src/sap/fe/core/messagebundle_et.properties +23 -2
  294. package/src/sap/fe/core/messagebundle_fi.properties +23 -2
  295. package/src/sap/fe/core/messagebundle_fr.properties +26 -5
  296. package/src/sap/fe/core/messagebundle_fr_CA.properties +23 -2
  297. package/src/sap/fe/core/messagebundle_hi.properties +24 -3
  298. package/src/sap/fe/core/messagebundle_hr.properties +27 -6
  299. package/src/sap/fe/core/messagebundle_hu.properties +23 -2
  300. package/src/sap/fe/core/messagebundle_id.properties +23 -2
  301. package/src/sap/fe/core/messagebundle_it.properties +25 -4
  302. package/src/sap/fe/core/messagebundle_iw.properties +24 -3
  303. package/src/sap/fe/core/messagebundle_ja.properties +24 -3
  304. package/src/sap/fe/core/messagebundle_kk.properties +23 -2
  305. package/src/sap/fe/core/messagebundle_ko.properties +25 -4
  306. package/src/sap/fe/core/messagebundle_lt.properties +23 -2
  307. package/src/sap/fe/core/messagebundle_lv.properties +25 -4
  308. package/src/sap/fe/core/messagebundle_mk.properties +23 -2
  309. package/src/sap/fe/core/messagebundle_ms.properties +24 -3
  310. package/src/sap/fe/core/messagebundle_nl.properties +23 -2
  311. package/src/sap/fe/core/messagebundle_no.properties +23 -2
  312. package/src/sap/fe/core/messagebundle_pl.properties +25 -4
  313. package/src/sap/fe/core/messagebundle_pt.properties +25 -4
  314. package/src/sap/fe/core/messagebundle_pt_PT.properties +24 -3
  315. package/src/sap/fe/core/messagebundle_ro.properties +25 -4
  316. package/src/sap/fe/core/messagebundle_ru.properties +24 -3
  317. package/src/sap/fe/core/messagebundle_sh.properties +25 -4
  318. package/src/sap/fe/core/messagebundle_sk.properties +24 -3
  319. package/src/sap/fe/core/messagebundle_sl.properties +28 -7
  320. package/src/sap/fe/core/messagebundle_sr.properties +25 -4
  321. package/src/sap/fe/core/messagebundle_sv.properties +23 -2
  322. package/src/sap/fe/core/messagebundle_th.properties +25 -4
  323. package/src/sap/fe/core/messagebundle_tr.properties +23 -2
  324. package/src/sap/fe/core/messagebundle_uk.properties +25 -4
  325. package/src/sap/fe/core/messagebundle_vi.properties +25 -4
  326. package/src/sap/fe/core/messagebundle_zh_CN.properties +26 -5
  327. package/src/sap/fe/core/messagebundle_zh_TW.properties +24 -3
  328. package/src/sap/fe/core/rootView/Fcl.controller.js +11 -7
  329. package/src/sap/fe/core/rootView/Fcl.controller.ts +16 -7
  330. package/src/sap/fe/core/rootView/NavContainer.controller.js +3 -3
  331. package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
  332. package/src/sap/fe/core/rootView/RootViewBaseController.js +87 -35
  333. package/src/sap/fe/core/rootView/RootViewBaseController.ts +113 -57
  334. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
  335. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  336. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +29 -13
  337. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +27 -13
  338. package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +1 -1
  339. package/src/sap/fe/core/services/ContextSharingServiceFactory.js +1 -1
  340. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +8 -2
  341. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +6 -0
  342. package/src/sap/fe/core/services/InlineEditServiceFactory.js +11 -5
  343. package/src/sap/fe/core/services/InlineEditServiceFactory.ts +9 -3
  344. package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  345. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  346. package/src/sap/fe/core/services/RoutingServiceFactory.js +14 -7
  347. package/src/sap/fe/core/services/RoutingServiceFactory.ts +11 -5
  348. package/src/sap/fe/core/services/ShellServicesFactory.js +5 -4
  349. package/src/sap/fe/core/services/ShellServicesFactory.ts +5 -3
  350. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +28 -4
  351. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +32 -3
  352. package/src/sap/fe/core/services/TelemetryServiceFactory.js +1 -1
  353. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  354. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +1 -1
  355. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
  356. package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.js +1 -1
  357. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  358. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  359. package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
  360. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
  361. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
  362. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  363. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  364. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
  365. package/src/sap/fe/core/templating/ActionHelper.js +1 -1
  366. package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
  367. package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
  368. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
  369. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  370. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  371. package/src/sap/fe/core/templating/EntitySetHelper.js +199 -59
  372. package/src/sap/fe/core/templating/EntitySetHelper.ts +221 -61
  373. package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
  374. package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
  375. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  376. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  377. package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
  378. package/src/sap/fe/core/templating/SemanticObjectHelper.js +8 -10
  379. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +11 -10
  380. package/src/sap/fe/core/templating/UIFormatters.js +5 -2
  381. package/src/sap/fe/core/templating/UIFormatters.ts +3 -0
  382. package/src/sap/fe/core/type/Date.js +1 -1
  383. package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
  384. package/src/sap/fe/core/type/EDM.js +1 -1
  385. package/src/sap/fe/core/type/Email.js +1 -1
  386. package/src/sap/fe/core/type/FiscalDate.js +1 -1
  387. package/src/sap/fe/core/type/InputMask.js +1 -1
  388. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.js +0 -288
  389. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.tsx +0 -208
  390. package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.js +0 -404
  391. package/src/sap/fe/core/controllerextensions/editFlow/ODataOperation.ts +0 -502
  392. package/src/sap/fe/core/designtime/TextArrangementChangeAction.js +0 -100
  393. package/src/sap/fe/core/designtime/TextArrangementChangeAction.ts +0 -134
  394. package/src/sap/fe/core/operationsHelper.js +0 -192
  395. package/src/sap/fe/core/operationsHelper.ts +0 -277
@@ -76,7 +76,7 @@ type MyInboxIntent = {
76
76
  action: string;
77
77
  };
78
78
 
79
- function normalizeSearchTerm(sSearchTerm: string): string | undefined {
79
+ function normalizeSearchTerm(sSearchTerm: string | undefined): string | undefined {
80
80
  if (!sSearchTerm) {
81
81
  return undefined;
82
82
  }
@@ -1172,6 +1172,7 @@ export type _FilterRestrictions = {
1172
1172
  FilterAllowedExpressions: _FilterAllowedExpressions;
1173
1173
  };
1174
1174
  function getFilterRestrictionsByPath(entityPath: string, oContext: ODataMetaModel): _FilterRestrictions {
1175
+ // NOTE: For getting FilterAllowedExpressions please use 'getAllowedFilterExpressionForProperty' from 'sap/fe/core/converters/controls/ListReport/FilterField.ts'.
1175
1176
  const oRet: _FilterRestrictions = {
1176
1177
  RequiredProperties: [],
1177
1178
  NonFilterableProperties: [],
@@ -1309,7 +1310,14 @@ export type BaseTreeModifier = {
1309
1310
  async function templateControlFragment(
1310
1311
  sFragmentName: string | Element | null,
1311
1312
  oPreprocessorSettings: PreprocessorSettings,
1312
- oInOptions?: { view?: View; isXML?: boolean; id?: string; controller?: PageController | ExtensionAPI; containingView?: View },
1313
+ oInOptions?: {
1314
+ view?: View;
1315
+ isXML?: boolean;
1316
+ id?: string;
1317
+ controller?: PageController | ExtensionAPI;
1318
+ containingView?: View;
1319
+ contextPath?: string;
1320
+ },
1313
1321
  oModifier?: BaseTreeModifier
1314
1322
  ): Promise<Element | UI5Element | Element[] | UI5Element[]> {
1315
1323
  const oOptions = oInOptions || {};
@@ -1342,6 +1350,8 @@ async function templateControlFragment(
1342
1350
  return owner.runAsOwner(async () => {
1343
1351
  return Fragment.load({
1344
1352
  id: oOptions.id,
1353
+ type: "SCOPEDFEFRAGMENT",
1354
+ contextPath: oOptions.contextPath,
1345
1355
  definition: oFragment as unknown as string,
1346
1356
  controller: oOptions.controller,
1347
1357
  containingView: containingView
@@ -1480,6 +1490,7 @@ function getConverterContextForPath(
1480
1490
  * @param programmingModel
1481
1491
  * @param view
1482
1492
  * @param appComponent
1493
+ * @param bindingParameters
1483
1494
  * @returns Returns a Promise
1484
1495
  */
1485
1496
  async function createRootContext(
@@ -1494,11 +1505,15 @@ async function createRootContext(
1494
1505
  programmingModel === "Draft" ? ModelHelper.getDraftRootPath(context) : ModelHelper.getStickyRootPath(context);
1495
1506
  let simpleRootContext: ODataV4Context;
1496
1507
  if (rootContextPath) {
1497
- // Check if a view matches with the draft root path
1508
+ // Check if a view matches with the draft root path, and had already loaded its context
1498
1509
  const existingBindingContextOnPage = appComponent
1499
1510
  .getRootViewController()
1500
1511
  .getInstancedViews()
1501
- .find((pageView: View) => pageView.getBindingContext()?.getPath() === rootContextPath)
1512
+ .find(
1513
+ (pageView: View) =>
1514
+ pageView.getBindingContext()?.getPath() === rootContextPath &&
1515
+ pageView.getBindingContext()?.getObject() !== undefined
1516
+ )
1502
1517
  ?.getBindingContext() as Context;
1503
1518
  if (existingBindingContextOnPage) {
1504
1519
  return existingBindingContextOnPage;
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/controls/DataWatcher", "sap/ui/base/Object", "sap/ui/core/Component", "sap/ui/model/json/JSONModel"], function (Log, BindingToolkit, ClassSupport, CommonUtils, DataWatcher, BaseObject, Component, JSONModel) {
6
6
  "use strict";
@@ -111,7 +111,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
111
111
  let parent = control.getParent();
112
112
  while (parent) {
113
113
  if (parent.isA("sap.fe.macros.form.FormAPI")) {
114
- // we reached the formAPI but no fieldAPI - the app tries to access any custom control which is fine
114
+ // we reached the formAPI but no field - the app tries to access any custom control which is fine
115
115
  break;
116
116
  }
117
117
  if (parent.isA("sap.fe.macros.MacroAPI")) {
@@ -195,9 +195,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
195
195
  _proto.loadFragment = async function loadFragment(mSettings) {
196
196
  var _this2 = this;
197
197
  const oTemplateComponent = Component.getOwnerComponentFor(this._view);
198
+ await oTemplateComponent.getService("templatedViewService");
198
199
  const oPageModel = this._view.getModel("_pageModel");
199
200
  const i18nModel = this._view.getModel("sap.fe.i18n");
200
- const oMetaModel = this.getModel()?.getMetaModel();
201
+ const oMetaModel = oTemplateComponent.getMetaModel();
201
202
  const mViewData = oTemplateComponent.getViewData();
202
203
  const targetContextPath = oTemplateComponent.getEntitySet() ? `/${oTemplateComponent.getEntitySet()}` : oTemplateComponent.getContextPath();
203
204
  const oViewDataModel = new JSONModel(mViewData),
@@ -265,7 +266,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
265
266
  controller: controllerInstance,
266
267
  isXML: false,
267
268
  id: mSettings.id,
268
- containingView: this._view
269
+ containingView: this._view,
270
+ contextPath: mSettings.contextPath ?? targetContextPath
269
271
  });
270
272
  try {
271
273
  const oFragment = await oTemplatePromise;
@@ -340,4 +342,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
340
342
  }), _class2)) || _class);
341
343
  return ExtensionAPI;
342
344
  }, false);
343
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VPYmplY3QiLCJvQ29udHJvbGxlciIsInNJZCIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfY29udHJvbGxlciIsIl92aWV3IiwiZ2V0VmlldyIsImV4dGVuc2lvbiIsImVkaXRGbG93Iiwicm91dGluZyIsIl9yb3V0aW5nIiwiaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX3ByZWZpeCIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0RWRpdEZsb3ciLCJnZXRSb3V0aW5nIiwiZ2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiYnlJZCIsImlkIiwiY29udHJvbCIsInVuZGVmaW5lZCIsImlzQSIsInBhcmVudCIsImdldFBhcmVudCIsIkVycm9yIiwiZ2V0SWQiLCJnZXRNb2RlbCIsInNNb2RlbE5hbWUiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNYW5pZmVzdEVudHJ5IiwibW9kZWxzIiwiYWRkRGVwZW5kZW50Iiwib0NvbnRyb2wiLCJyZW1vdmVEZXBlbmRlbnQiLCJuYXZpZ2F0ZVRvVGFyZ2V0Iiwic1RhcmdldCIsIm9Db250ZXh0IiwibG9hZEZyYWdtZW50IiwibVNldHRpbmdzIiwiX3RoaXMyIiwib1RlbXBsYXRlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJvUGFnZU1vZGVsIiwiaTE4bk1vZGVsIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsIm1WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwidGFyZ2V0Q29udGV4dFBhdGgiLCJnZXRFbnRpdHlTZXQiLCJnZXRDb250ZXh0UGF0aCIsIm9WaWV3RGF0YU1vZGVsIiwiSlNPTk1vZGVsIiwib1ByZXByb2Nlc3NvclNldHRpbmdzIiwiYmluZGluZ0NvbnRleHRzIiwiY29udGV4dFBhdGgiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnZlcnRlckNvbnRleHQiLCJub1Jlc29sdmUiLCJ2aWV3RGF0YSIsIm1ldGFNb2RlbCIsImFwcENvbXBvbmVudCIsImNvbnRyb2xsZXJJbnN0YW5jZSIsImNvbnRyb2xsZXIiLCJzdWJDbGFzcyIsImdldE1ldGFkYXRhIiwiZ2V0Q2xhc3MiLCJleHRlbmQiLCJjb250cm9sbGVyRWxlbWVudEtleSIsImNvbnRyb2xsZXJFbGVtZW50IiwiYmluZCIsImJvdW5kRnVuY3Rpb24iLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInJ1bkFzT3duZXIiLCJhcHBseSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0Iiwic2V0IiwidiIsIm5ld0lzQSIsImNsYXNzTmFtZSIsIm9UZW1wbGF0ZVByb21pc2UiLCJ0ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudCIsIm5hbWUiLCJpc1hNTCIsImNvbnRhaW5pbmdWaWV3Iiwib0ZyYWdtZW50IiwiaW5pdGlhbEJpbmRpbmdDb250ZXh0Iiwic2V0QmluZGluZ0NvbnRleHQiLCJvRXJyb3IiLCJMb2ciLCJlcnJvciIsInVwZGF0ZUFwcFN0YXRlIiwidmlldyIsImFwcFN0YXRlSW5mbyIsImdldEFwcFN0YXRlSGFuZGxlciIsImNyZWF0ZUFwcFN0YXRlIiwidmlld0lkIiwiYXBwU3RhdGVEYXRhIiwicnVuV2l0aEZQTUNvbnRleHQiLCJmbiIsInRlbXBsYXRlQ29tcG9uZW50Iiwid2F0Y2hQcm9wZXJ0eSIsInByb3BlcnR5TmFtZSIsImNhbGxiYWNrIiwiRGF0YVdhdGNoZXIiLCJwcm9wZXJ0eUJpbmRpbmciLCJjb21waWxlRXhwcmVzc2lvbiIsInBhdGhJbk1vZGVsIiwidmFsdWVDaGFuZ2VkIiwiZSIsImdldFBhcmFtZXRlciIsIkJhc2VPYmplY3QiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgRWRpdEZsb3cgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0VkaXRGbG93XCI7XG5pbXBvcnQgdHlwZSBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IHR5cGUgSW50ZXJuYWxSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbFJvdXRpbmdcIjtcbmltcG9ydCB0eXBlIFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1JvdXRpbmdcIjtcbmltcG9ydCB0eXBlIHsgV2F0Y2hlckNhbGxiYWNrIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0RhdGFXYXRjaGVyXCI7XG5pbXBvcnQgRGF0YVdhdGNoZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0RhdGFXYXRjaGVyXCI7XG5pbXBvcnQgdHlwZSBNYWNyb0FQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgRm9ybUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm1BUElcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFRTRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQ29tbW9uIEV4dGVuc2lvbiBBUEkgZm9yIGFsbCBwYWdlcyBvZiBTQVAgRmlvcmkgZWxlbWVudHMgZm9yIE9EYXRhIFY0LlxuICpcbiAqIFRvIGNvcnJlY3RseSBpbnRlZ3JhdGUgeW91ciBhcHAgZXh0ZW5zaW9uIGNvZGluZyB3aXRoIFNBUCBGaW9yaSBlbGVtZW50cywgdXNlIG9ubHkgdGhlIGV4dGVuc2lvbkFQSSBvZiBTQVAgRmlvcmkgZWxlbWVudHMuIERvbid0IGFjY2VzcyBvciBtYW5pcHVsYXRlIGNvbnRyb2xzLCBwcm9wZXJ0aWVzLCBtb2RlbHMsIG9yIG90aGVyIGludGVybmFsIG9iamVjdHMgY3JlYXRlZCBieSB0aGUgU0FQIEZpb3JpIGVsZW1lbnRzIGZyYW1ld29yay5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2NvbnRyb2xsZXJFeHRlbnNpb25zL2NvbnRyb2xsZXJFeHRlbnNpb25zT3ZlcnZpZXcgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG4gKiBAcHVibGljXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKVxuY2xhc3MgRXh0ZW5zaW9uQVBJIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIGVkaXQgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2NvbnRyb2xsZXJFeHRlbnNpb25zL2Jhc2ljRXh0ZW5zaWJpbGl0eSBPdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5FZGl0Rmxvd1wiIH0pXG5cdGVkaXRGbG93OiBFZGl0RmxvdztcblxuXHQvKipcblx0ICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBpbnRvIHRoZSByb3V0aW5nIGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9yb3V0aW5nRXh0ZW5zaWJpbGl0eSBPdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5Sb3V0aW5nXCIgfSlcblx0cm91dGluZzogUm91dGluZztcblxuXHQvKipcblx0ICogRXh0ZW5zaW9uQVBJIGZvciBpbnRlbnQtYmFzZWQgbmF2aWdhdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkludGVudEJhc2VkTmF2aWdhdGlvblwiIH0pXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbjogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdHB1YmxpYyBfY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIF92aWV3OiBGRVZpZXc7XG5cblx0cHJpdmF0ZSBfcm91dGluZzogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdHByaXZhdGUgX3ByZWZpeD86IHN0cmluZztcblxuXHRwcml2YXRlIGV4dGVuc2lvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0Y29uc3RydWN0b3Iob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzSWQ/OiBzdHJpbmcpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIgPSBvQ29udHJvbGxlcjtcblx0XHR0aGlzLl92aWV3ID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdHRoaXMuZXh0ZW5zaW9uID0gdGhpcy5fY29udHJvbGxlci5leHRlbnNpb247XG5cdFx0dGhpcy5lZGl0RmxvdyA9IHRoaXMuX2NvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0dGhpcy5yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5yb3V0aW5nO1xuXHRcdHRoaXMuX3JvdXRpbmcgPSB0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nO1xuXHRcdHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uID0gdGhpcy5fY29udHJvbGxlci5pbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cdFx0dGhpcy5fcHJlZml4ID0gc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEVkaXRGbG93KCk6IEVkaXRGbG93IHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0Rmxvdztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcm91dGluZyBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0Um91dGluZygpOiBSb3V0aW5nIHtcblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaW50ZW50QmFzZWROYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uKCk6IEludGVudEJhc2VkTmF2aWdhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFjY2VzcyBhIGNvbnRyb2wgYnkgaXRzIElELiBJZiB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbCBpbnN0ZWFkIG9mIHRoZSBzdGFibGUgQVBJLCB0aGUgbWV0aG9kIHdpbGwgcmFpc2UgYW4gZXJyb3IuXG5cdCAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgY29udHJvbCB3aXRob3V0IHZpZXcgYW5kIHNlY3Rpb24gcHJlZml4LlxuXHQgKiBAcmV0dXJucyBUaGUgcmVxdWVzdGVkIGNvbnRyb2wsIGlmIGZvdW5kIGluIHRoZSB2aWV3IC8gc2VjdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YnlJZChpZDogc3RyaW5nKTogVUk1RWxlbWVudCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoaWQpO1xuXG5cdFx0aWYgKCFjb250cm9sICYmIHRoaXMuX3ByZWZpeCkge1xuXHRcdFx0Ly8gZ2l2ZSBpdCBhIHRyeSB3aXRoIHRoZSBwcmVmaXhcblx0XHRcdGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoYCR7dGhpcy5fcHJlZml4fS0tJHtpZH1gKTtcblx0XHR9XG5cblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sLmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHQvLyBjaGVjayBpZiBhcHAgdHJpZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgd3JhcHBlZCBieSBhIG1hY3JvIEFQSVxuXHRcdFx0bGV0IHBhcmVudCA9IGNvbnRyb2wuZ2V0UGFyZW50KCk7XG5cblx0XHRcdHdoaWxlIChwYXJlbnQpIHtcblx0XHRcdFx0aWYgKHBhcmVudC5pc0E8Rm9ybUFQST4oXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUFQSVwiKSkge1xuXHRcdFx0XHRcdC8vIHdlIHJlYWNoZWQgdGhlIGZvcm1BUEkgYnV0IG5vIGZpZWxkQVBJIC0gdGhlIGFwcCB0cmllcyB0byBhY2Nlc3MgYW55IGN1c3RvbSBjb250cm9sIHdoaWNoIGlzIGZpbmVcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPE1hY3JvQVBJPihcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIikpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRgWW91IGF0dGVtcHRlZCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbC4gVGhpcyBpcyByaXNreSBhbmQgbWlnaHQgY2hhbmdlIGxhdGVyLiBJbnN0ZWFkIGFjY2VzcyBpdHMgc3RhYmxlIEFQSSBieSB1c2luZyBJRCAke3BhcmVudC5nZXRJZCgpfWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY2Nlc3MgdG8gbW9kZWxzIG1hbmFnZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzLjxicj5cblx0ICogVGhlIGZvbGxvd2luZyBtb2RlbHMgY2FuIGJlIGFjY2Vzc2VkOlxuXHQgKiA8dWw+XG5cdCAqIDxsaT51bmRlZmluZWQ6IHRoZSB1bmRlZmluZWQgbW9kZWwgcmV0dXJucyB0aGUgU0FQVUk1IE9EYXRhIFY0IG1vZGVsIGJvdW5kIHRvIHRoaXMgcGFnZTwvbGk+XG5cdCAqIDxsaT5pMThuIC8gZnVydGhlciBkYXRhIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdDwvbGk+XG5cdCAqIDxsaT51aTogcmV0dXJucyBhIFNBUFVJNSBKU09OIG1vZGVsIGNvbnRhaW5pbmcgVUkgaW5mb3JtYXRpb24uXG5cdCAqIE9ubHkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBwdWJsaWMgYW5kIHN1cHBvcnRlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+aXNFZGl0YWJsZTogc2V0IHRvIHRydWUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGluIGVkaXQgbW9kZTwvbGk+XG5cdCAqIDwvdWw+XG5cdCAqIDwvbGk+XG5cdCAqIDwvdWw+LlxuXHQgKiBlZGl0TW9kZSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlIGlzRWRpdGFibGUgaW5zdGVhZC5cblx0ICogQHBhcmFtIHNNb2RlbE5hbWUgTmFtZSBvZiB0aGUgbW9kZWxcblx0ICogQHJldHVybnMgVGhlIHJlcXVpcmVkIG1vZGVsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldE1vZGVsKHNNb2RlbE5hbWU/OiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG9BcHBDb21wb25lbnQ7XG5cblx0XHRpZiAoc01vZGVsTmFtZSAmJiBzTW9kZWxOYW1lICE9PSBcInVpXCIpIHtcblx0XHRcdG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldyk7XG5cdFx0XHRpZiAoIW9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aTVcIikubW9kZWxzW3NNb2RlbE5hbWVdKSB7XG5cdFx0XHRcdC8vIGRvbid0IGFsbG93IGFjY2VzcyB0byBvdXIgaW50ZXJuYWwgbW9kZWxzXG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuX3ZpZXcuZ2V0TW9kZWwoc01vZGVsTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIGFueSBjb250cm9sIGFzIGEgZGVwZW5kZW50IGNvbnRyb2wgdG8gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhZGREZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LmFkZERlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIGEgZGVwZW5kZW50IGNvbnRyb2wgZnJvbSB0aGlzIFNBUCBGaW9yaSBlbGVtZW50cyBwYWdlLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgQ29udHJvbCB0byBiZSBhZGRlZCBhcyBhIGRlcGVuZGVudCBjb250cm9sXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlbW92ZURlcGVuZGVudChvQ29udHJvbDogQ29udHJvbCk6IHZvaWQge1xuXHRcdHRoaXMuX3ZpZXcucmVtb3ZlRGVwZW5kZW50KG9Db250cm9sKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byBhbm90aGVyIHRhcmdldC5cblx0ICogQHBhcmFtIHNUYXJnZXQgTmFtZSBvZiB0aGUgdGFyZ2V0IHJvdXRlXG5cdCAqIEBwYXJhbSBbb0NvbnRleHRdIE9EYXRhIHY0IGNvbnRleHQgaW5zdGFuY2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0bmF2aWdhdGVUb1RhcmdldChzVGFyZ2V0OiBzdHJpbmcsIG9Db250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IHZvaWQge1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIuX3JvdXRpbmcubmF2aWdhdGVUb1RhcmdldChvQ29udGV4dCwgc1RhcmdldCk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZCBhIGZyYWdtZW50IGFuZCBnbyB0aHJvdWdoIHRoZSB0ZW1wbGF0ZSBwcmVwcm9jZXNzb3Igd2l0aCB0aGUgY3VycmVudCBwYWdlIGNvbnRleHQuXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MgVGhlIHNldHRpbmdzIG9iamVjdFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmlkIFRoZSBJRCBvZiB0aGUgZnJhZ21lbnQgaXRzZWxmXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MubmFtZSBUaGUgbmFtZSBvZiB0aGUgZnJhZ21lbnQgdG8gYmUgbG9hZGVkXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udHJvbGxlciBUaGUgY29udHJvbGxlciB0byBiZSBhdHRhY2hlZCB0byB0aGUgZnJhZ21lbnRcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5jb250ZXh0UGF0aCBUaGUgY29udGV4dFBhdGggdG8gYmUgdXNlZCBmb3IgdGhlIHRlbXBsYXRpbmcgcHJvY2Vzc1xuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCBUaGUgaW5pdGlhbCBiaW5kaW5nIGNvbnRleHRcblx0ICogQHJldHVybnMgVGhlIGZyYWdtZW50IGRlZmluaXRpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9hZEZyYWdtZW50KG1TZXR0aW5nczoge1xuXHRcdGlkOiBzdHJpbmc7XG5cdFx0bmFtZTogc3RyaW5nO1xuXHRcdGNvbnRyb2xsZXI/OiBvYmplY3Q7XG5cdFx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdFx0aW5pdGlhbEJpbmRpbmdDb250ZXh0PzogQ29udGV4dDtcblx0fSk6IFByb21pc2U8VUk1RWxlbWVudCB8IFVJNUVsZW1lbnRbXT4ge1xuXHRcdGNvbnN0IG9UZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl92aWV3KSBhcyBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD47XG5cdFx0Y29uc3Qgb1BhZ2VNb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXHRcdGNvbnN0IGkxOG5Nb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gdGhpcy5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtVmlld0RhdGEgPSBvVGVtcGxhdGVDb21wb25lbnQuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCB0YXJnZXRDb250ZXh0UGF0aCA9IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRFbnRpdHlTZXQoKVxuXHRcdFx0PyBgLyR7b1RlbXBsYXRlQ29tcG9uZW50LmdldEVudGl0eVNldCgpIX1gXG5cdFx0XHQ6IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRDb250ZXh0UGF0aCgpITtcblx0XHRjb25zdCBvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKSxcblx0XHRcdG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IHtcblx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg6IG9NZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1TZXR0aW5ncy5jb250ZXh0UGF0aCB8fCB0YXJnZXRDb250ZXh0UGF0aCksXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIiwgdW5kZWZpbmVkLCB7IG5vUmVzb2x2ZTogdHJ1ZSB9KSxcblx0XHRcdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhID8gb1ZpZXdEYXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpIDogbnVsbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLFxuXHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWwsXG5cdFx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBpMThuTW9kZWxcblx0XHRcdFx0fSxcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldylcblx0XHRcdH07XG5cblx0XHQvLyBXZSBzY29wZSB0aGUgZnJhZ21lbnQgd2l0aCBvdXIgRXh0ZW5zaW9uQVBJLiBJZiBhIGNvbnRyb2xsZXIgb2JqZWN0IGlzIHBhc3NlZCB3ZSBtZXJnZSBpdCB3aXRoIHRoZSBleHRlbnNpb25BUElcblx0XHRsZXQgY29udHJvbGxlckluc3RhbmNlOiBFeHRlbnNpb25BUEk7XG5cdFx0aWYgKG1TZXR0aW5ncy5jb250cm9sbGVyICYmICEobVNldHRpbmdzLmNvbnRyb2xsZXIgYXMgRXh0ZW5zaW9uQVBJKT8uaXNBPy4oXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikpIHtcblx0XHRcdGNvbnN0IHN1YkNsYXNzID0gKFxuXHRcdFx0XHR0aGlzLmdldE1ldGFkYXRhKCkuZ2V0Q2xhc3MoKSBhcyB1bmtub3duIGFzIHtcblx0XHRcdFx0XHRleHRlbmQ6IChpZDogc3RyaW5nLCBjb250ZW50OiBvYmplY3QpID0+IHsgbmV3IChwYWdlQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBFeHRlbnNpb25BUEkgfTtcblx0XHRcdFx0fVxuXHRcdFx0KS5leHRlbmQobVNldHRpbmdzLmlkICsgXCItY29udHJvbGxlclwiLCB7fSk7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2xsZXJFbGVtZW50S2V5IGluIG1TZXR0aW5ncy5jb250cm9sbGVyKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXJFbGVtZW50ID0gbVNldHRpbmdzLmNvbnRyb2xsZXJbY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXTtcblx0XHRcdFx0aWYgKChjb250cm9sbGVyRWxlbWVudCBhcyBGdW5jdGlvbik/LmJpbmQpIHtcblx0XHRcdFx0XHRjb25zdCBib3VuZEZ1bmN0aW9uID0gKGNvbnRyb2xsZXJFbGVtZW50IGFzIEZ1bmN0aW9uKS5iaW5kKG1TZXR0aW5ncy5jb250cm9sbGVyKTtcblx0XHRcdFx0XHRpZiAob1RlbXBsYXRlQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRzdWJDbGFzcy5wcm90b3R5cGVbY29udHJvbGxlckVsZW1lbnRLZXldID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb1RlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4gYm91bmRGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdWJDbGFzcy5wcm90b3R5cGVbY29udHJvbGxlckVsZW1lbnRLZXldID0gYm91bmRGdW5jdGlvbjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLnByb3RvdHlwZSwgY29udHJvbGxlckVsZW1lbnRLZXksIHtcblx0XHRcdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG1TZXR0aW5ncy5jb250cm9sbGVyPy5bY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzZXQodjogdW5rbm93bikge1xuXHRcdFx0XHRcdFx0XHRpZiAobVNldHRpbmdzLmNvbnRyb2xsZXIpIHtcblx0XHRcdFx0XHRcdFx0XHQobVNldHRpbmdzLmNvbnRyb2xsZXJbY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXSBhcyB1bmtub3duKSA9IHY7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlID0gbmV3IHN1YkNsYXNzKHRoaXMuX2NvbnRyb2xsZXIpO1xuXHRcdFx0Y29uc3QgbmV3SXNBID0gY29udHJvbGxlckluc3RhbmNlLmlzQTtcblx0XHRcdGNvbnRyb2xsZXJJbnN0YW5jZS5pc0EgPSAoY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcblx0XHRcdFx0Ly8gV2Uga2VlcCB0aGUgXHRzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkgYXMgYSB2YWxpZCB0eXBlIGZvciB0aGlzIG5ldyBjbGFzc1xuXHRcdFx0XHQvLyB0aGlzIHR5cGUgaXMgbG9zdCBhcyBzb29uIGFzIHRoZSBtZXJnZWQgY29udHJvbGxlciBvYmplY3QgZ2V0cyBhIG1ldGhvZCBpc0Fcblx0XHRcdFx0cmV0dXJuIG5ld0lzQS5iaW5kKGNvbnRyb2xsZXJJbnN0YW5jZSkoY2xhc3NOYW1lKSB8fCB0aGlzLmlzQShjbGFzc05hbWUpO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlID0gKG1TZXR0aW5ncy5jb250cm9sbGVyIGFzIEV4dGVuc2lvbkFQSSkgPz8gdGhpcztcblx0XHR9XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IG9UZW1wbGF0ZVByb21pc2UgPSBDb21tb25VdGlscy50ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudChtU2V0dGluZ3MubmFtZSwgb1ByZXByb2Nlc3NvclNldHRpbmdzLCB7XG5cdFx0XHRcdGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJJbnN0YW5jZSxcblx0XHRcdFx0aXNYTUw6IGZhbHNlLFxuXHRcdFx0XHRpZDogbVNldHRpbmdzLmlkLFxuXHRcdFx0XHRjb250YWluaW5nVmlldzogdGhpcy5fdmlld1xuXHRcdFx0fSkgYXMgUHJvbWlzZTxDb250cm9sPjtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IG9GcmFnbWVudDogQ29udHJvbCA9IGF3YWl0IG9UZW1wbGF0ZVByb21pc2U7XG5cdFx0XHRcdGlmIChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRvRnJhZ21lbnQuc2V0QmluZGluZ0NvbnRleHQobVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQob0ZyYWdtZW50KTtcblx0XHRcdFx0cmV0dXJuIG9GcmFnbWVudDtcblx0XHRcdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSkgYXMgUHJvbWlzZTxVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdPjtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhbiB1cGRhdGUgb2YgdGhlIGFwcCBzdGF0ZS5cblx0ICogU2hvdWxkIGJlIGNhbGxlZCBpZiB0aGUgc3RhdGUgb2YgYSBjb250cm9sLCBvciBhbnkgb3RoZXIgc3RhdGUtcmVsZXZhbnQgaW5mb3JtYXRpb24sIHdhcyBjaGFuZ2VkLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBuZXcgYXBwIHN0YXRlIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgdXBkYXRlQXBwU3RhdGUoKTogUHJvbWlzZTx2b2lkIHwgeyBhcHBTdGF0ZTogb2JqZWN0IHwgdW5kZWZpbmVkIH0+IHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5fY29udHJvbGxlci5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5fY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRjb25zdCBhcHBTdGF0ZUluZm8gPSBhd2FpdCBhcHBDb21wb25lbnQuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuY3JlYXRlQXBwU3RhdGUoe1xuXHRcdFx0dmlld0lkOiB2aWV3LmdldElkKClcblx0XHR9KTtcblx0XHRyZXR1cm4gYXBwU3RhdGVJbmZvPy5hcHBTdGF0ZURhdGE7XG5cdH1cblxuXHQvKipcblx0ICogUnVuIHRoZSBnaXZlbiBmdW5jdGlvbiB3aXRoIHRoZSBGUE0gY29udGV4dCBvZiB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBUaGlzIGFsbG93cyB0byBpbml0aWFsaXplIGFsbCB0aGUgZWxlbWVudHMgcmVxdWlyZWQgYnkgYnVpbGRpbmcgYmxvY2tzIHRvIHJlbmRlciBjb3JyZWN0bHkuXG5cdCAqIEBwYXJhbSBmbiBUaGUgRnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWRcblx0ICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cnVuV2l0aEZQTUNvbnRleHQoZm46IEZ1bmN0aW9uKTogdW5rbm93biB7XG5cdFx0Y29uc3QgdGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdHJldHVybiB0ZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKGZuIGFzIFRTRnVuY3Rpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdhdGNoIGEgcHJvcGVydHkgZnJvbSB0aGUgbWFpbiBwYWdlIGNvbnRleHQgYW5kIHRyaWdnZXIgYSBjYWxsYmFjayB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byB3YXRjaFxuXHQgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIHRyaWdnZXIgd2hlbiB0aGUgdmFsdWUgY2hhbmdlc1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHR3YXRjaFByb3BlcnR5KHByb3BlcnR5TmFtZTogc3RyaW5nLCBjYWxsYmFjazogV2F0Y2hlckNhbGxiYWNrKTogdm9pZCB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQoXG5cdFx0XHRuZXcgRGF0YVdhdGNoZXIoe1xuXHRcdFx0XHRwcm9wZXJ0eUJpbmRpbmc6IGNvbXBpbGVFeHByZXNzaW9uKHBhdGhJbk1vZGVsKHByb3BlcnR5TmFtZSkpLFxuXHRcdFx0XHR2YWx1ZUNoYW5nZWQ6IChlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSwgZS5nZXRQYXJhbWV0ZXIoXCJvbGRWYWx1ZVwiKSwgZS5nZXRQYXJhbWV0ZXIoXCJpc0luaXRpYWxcIiksIGUuZ2V0UGFyYW1ldGVyKFwiY29udGV4dFwiKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFeHRlbnNpb25BUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVJBLElBVU1BLFlBQVksSUFBQUMsSUFBQSxHQURqQkMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FPekNDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBNEMsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FRL0RGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBMkMsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FPOURILFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBeUQsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQU8sTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxXQUFBO0lBYTdFLFNBQUFWLGFBQVlXLFdBQTJCLEVBQUVDLEdBQVksRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDdERBLEtBQUEsR0FBQUgsV0FBQSxDQUFBSSxJQUFBLEtBQU0sQ0FBQztNQWxDUjtBQUNEO0FBQ0E7QUFDQTtBQUNBO01BSkNDLDBCQUFBLENBQUFGLEtBQUEsY0FBQUcsV0FBQSxFQUFBSCxLQUFBO01BUUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtNQUpDRSwwQkFBQSxDQUFBRixLQUFBLGFBQUFJLFlBQUEsRUFBQUosS0FBQTtNQVFBO0FBQ0Q7QUFD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
345
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VPYmplY3QiLCJvQ29udHJvbGxlciIsInNJZCIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfY29udHJvbGxlciIsIl92aWV3IiwiZ2V0VmlldyIsImV4dGVuc2lvbiIsImVkaXRGbG93Iiwicm91dGluZyIsIl9yb3V0aW5nIiwiaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX3ByZWZpeCIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0RWRpdEZsb3ciLCJnZXRSb3V0aW5nIiwiZ2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiYnlJZCIsImlkIiwiY29udHJvbCIsInVuZGVmaW5lZCIsImlzQSIsInBhcmVudCIsImdldFBhcmVudCIsIkVycm9yIiwiZ2V0SWQiLCJnZXRNb2RlbCIsInNNb2RlbE5hbWUiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNYW5pZmVzdEVudHJ5IiwibW9kZWxzIiwiYWRkRGVwZW5kZW50Iiwib0NvbnRyb2wiLCJyZW1vdmVEZXBlbmRlbnQiLCJuYXZpZ2F0ZVRvVGFyZ2V0Iiwic1RhcmdldCIsIm9Db250ZXh0IiwibG9hZEZyYWdtZW50IiwibVNldHRpbmdzIiwiX3RoaXMyIiwib1RlbXBsYXRlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRTZXJ2aWNlIiwib1BhZ2VNb2RlbCIsImkxOG5Nb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInRhcmdldENvbnRleHRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0Q29udGV4dFBhdGgiLCJvVmlld0RhdGFNb2RlbCIsIkpTT05Nb2RlbCIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsImJpbmRpbmdDb250ZXh0cyIsImNvbnRleHRQYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwidmlld0RhdGEiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJjb250cm9sbGVySW5zdGFuY2UiLCJjb250cm9sbGVyIiwic3ViQ2xhc3MiLCJnZXRNZXRhZGF0YSIsImdldENsYXNzIiwiZXh0ZW5kIiwiY29udHJvbGxlckVsZW1lbnRLZXkiLCJjb250cm9sbGVyRWxlbWVudCIsImJpbmQiLCJib3VuZEZ1bmN0aW9uIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsInYiLCJuZXdJc0EiLCJjbGFzc05hbWUiLCJvVGVtcGxhdGVQcm9taXNlIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJuYW1lIiwiaXNYTUwiLCJjb250YWluaW5nVmlldyIsIm9GcmFnbWVudCIsImluaXRpYWxCaW5kaW5nQ29udGV4dCIsInNldEJpbmRpbmdDb250ZXh0Iiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJ1cGRhdGVBcHBTdGF0ZSIsInZpZXciLCJhcHBTdGF0ZUluZm8iLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJjcmVhdGVBcHBTdGF0ZSIsInZpZXdJZCIsImFwcFN0YXRlRGF0YSIsInJ1bldpdGhGUE1Db250ZXh0IiwiZm4iLCJ0ZW1wbGF0ZUNvbXBvbmVudCIsIndhdGNoUHJvcGVydHkiLCJwcm9wZXJ0eU5hbWUiLCJjYWxsYmFjayIsIkRhdGFXYXRjaGVyIiwicHJvcGVydHlCaW5kaW5nIiwiY29tcGlsZUV4cHJlc3Npb24iLCJwYXRoSW5Nb2RlbCIsInZhbHVlQ2hhbmdlZCIsImUiLCJnZXRQYXJhbWV0ZXIiLCJCYXNlT2JqZWN0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFeHRlbnNpb25BUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IHR5cGUgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSB7IFdhdGNoZXJDYWxsYmFjayB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9EYXRhV2F0Y2hlclwiO1xuaW1wb3J0IERhdGFXYXRjaGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9EYXRhV2F0Y2hlclwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZvcm1BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtQVBJXCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUU0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIENvbW1vbiBFeHRlbnNpb24gQVBJIGZvciBhbGwgcGFnZXMgb2YgU0FQIEZpb3JpIGVsZW1lbnRzIGZvciBPRGF0YSBWNC5cbiAqXG4gKiBUbyBjb3JyZWN0bHkgaW50ZWdyYXRlIHlvdXIgYXBwIGV4dGVuc2lvbiBjb2Rpbmcgd2l0aCBTQVAgRmlvcmkgZWxlbWVudHMsIHVzZSBvbmx5IHRoZSBleHRlbnNpb25BUEkgb2YgU0FQIEZpb3JpIGVsZW1lbnRzLiBEb24ndCBhY2Nlc3Mgb3IgbWFuaXB1bGF0ZSBjb250cm9scywgcHJvcGVydGllcywgbW9kZWxzLCBvciBvdGhlciBpbnRlcm5hbCBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIFNBUCBGaW9yaSBlbGVtZW50cyBmcmFtZXdvcmsuXG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9jb250cm9sbGVyRXh0ZW5zaW9uc092ZXJ2aWV3IE92ZXJ2aWV3IG9mIEJ1aWxkaW5nIEJsb2NrfVxuICogQHB1YmxpY1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHNpbmNlIDEuNzkuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIilcbmNsYXNzIEV4dGVuc2lvbkFQSSBleHRlbmRzIEJhc2VPYmplY3Qge1xuXHQvKipcblx0ICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBpbnRvIHRoZSBlZGl0IGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9iYXNpY0V4dGVuc2liaWxpdHkgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuRWRpdEZsb3dcIiB9KVxuXHRlZGl0RmxvdzogRWRpdEZsb3c7XG5cblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvY29udHJvbGxlckV4dGVuc2lvbnMvcm91dGluZ0V4dGVuc2liaWxpdHkgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuUm91dGluZ1wiIH0pXG5cdHJvdXRpbmc6IFJvdXRpbmc7XG5cblx0LyoqXG5cdCAqIEV4dGVuc2lvbkFQSSBmb3IgaW50ZW50LWJhc2VkIG5hdmlnYXRpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5JbnRlbnRCYXNlZE5hdmlnYXRpb25cIiB9KVxuXHRpbnRlbnRCYXNlZE5hdmlnYXRpb246IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRwdWJsaWMgX2NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHByb3RlY3RlZCBfdmlldzogRkVWaWV3O1xuXG5cdHByaXZhdGUgX3JvdXRpbmc6IEludGVybmFsUm91dGluZztcblxuXHRwcml2YXRlIF9wcmVmaXg/OiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBleHRlbnNpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdGNvbnN0cnVjdG9yKG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc0lkPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLl9jb250cm9sbGVyID0gb0NvbnRyb2xsZXI7XG5cdFx0dGhpcy5fdmlldyA9IG9Db250cm9sbGVyLmdldFZpZXcoKTtcblx0XHR0aGlzLmV4dGVuc2lvbiA9IHRoaXMuX2NvbnRyb2xsZXIuZXh0ZW5zaW9uO1xuXHRcdHRoaXMuZWRpdEZsb3cgPSB0aGlzLl9jb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdHRoaXMucm91dGluZyA9IHRoaXMuX2NvbnRyb2xsZXIucm91dGluZztcblx0XHR0aGlzLl9yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5fcm91dGluZztcblx0XHR0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbiA9IHRoaXMuX2NvbnRyb2xsZXIuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHRcdHRoaXMuX3ByZWZpeCA9IHNJZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdCAqL1xuXHRnZXRFZGl0RmxvdygpOiBFZGl0RmxvdyB7XG5cdFx0cmV0dXJuIHRoaXMuZWRpdEZsb3c7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSByb3V0aW5nIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldFJvdXRpbmcoKTogUm91dGluZyB7XG5cdFx0cmV0dXJuIHRoaXMucm91dGluZztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3IgdGhpcyBwYWdlLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBpbnRlbnRCYXNlZE5hdmlnYXRpb24gY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEludGVudEJhc2VkTmF2aWdhdGlvbigpOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBBY2Nlc3MgYSBjb250cm9sIGJ5IGl0cyBJRC4gSWYgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgaW5zdGVhZCBvZiB0aGUgc3RhYmxlIEFQSSwgdGhlIG1ldGhvZCB3aWxsIHJhaXNlIGFuIGVycm9yLlxuXHQgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGNvbnRyb2wgd2l0aG91dCB2aWV3IGFuZCBzZWN0aW9uIHByZWZpeC5cblx0ICogQHJldHVybnMgVGhlIHJlcXVlc3RlZCBjb250cm9sLCBpZiBmb3VuZCBpbiB0aGUgdmlldyAvIHNlY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGJ5SWQoaWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdGxldCBjb250cm9sID0gdGhpcy5fdmlldy5ieUlkKGlkKTtcblxuXHRcdGlmICghY29udHJvbCAmJiB0aGlzLl9wcmVmaXgpIHtcblx0XHRcdC8vIGdpdmUgaXQgYSB0cnkgd2l0aCB0aGUgcHJlZml4XG5cdFx0XHRjb250cm9sID0gdGhpcy5fdmlldy5ieUlkKGAke3RoaXMuX3ByZWZpeH0tLSR7aWR9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmICghY29udHJvbC5pc0E8TWFjcm9BUEk+KFwic2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVwiKSkge1xuXHRcdFx0Ly8gY2hlY2sgaWYgYXBwIHRyaWVkIHRvIGFjY2VzcyBhbiBpbnRlcm5hbCBjb250cm9sIHdyYXBwZWQgYnkgYSBtYWNybyBBUElcblx0XHRcdGxldCBwYXJlbnQgPSBjb250cm9sLmdldFBhcmVudCgpO1xuXG5cdFx0XHR3aGlsZSAocGFyZW50KSB7XG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPEZvcm1BUEk+KFwic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1BUElcIikpIHtcblx0XHRcdFx0XHQvLyB3ZSByZWFjaGVkIHRoZSBmb3JtQVBJIGJ1dCBubyBmaWVsZCAtIHRoZSBhcHAgdHJpZXMgdG8gYWNjZXNzIGFueSBjdXN0b20gY29udHJvbCB3aGljaCBpcyBmaW5lXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAocGFyZW50LmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0YFlvdSBhdHRlbXB0ZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wuIFRoaXMgaXMgcmlza3kgYW5kIG1pZ2h0IGNoYW5nZSBsYXRlci4gSW5zdGVhZCBhY2Nlc3MgaXRzIHN0YWJsZSBBUEkgYnkgdXNpbmcgSUQgJHtwYXJlbnQuZ2V0SWQoKX1gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udHJvbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWNjZXNzIHRvIG1vZGVscyBtYW5hZ2VkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cy48YnI+XG5cdCAqIFRoZSBmb2xsb3dpbmcgbW9kZWxzIGNhbiBiZSBhY2Nlc3NlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+dW5kZWZpbmVkOiB0aGUgdW5kZWZpbmVkIG1vZGVsIHJldHVybnMgdGhlIFNBUFVJNSBPRGF0YSBWNCBtb2RlbCBib3VuZCB0byB0aGlzIHBhZ2U8L2xpPlxuXHQgKiA8bGk+aTE4biAvIGZ1cnRoZXIgZGF0YSBtb2RlbHMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Q8L2xpPlxuXHQgKiA8bGk+dWk6IHJldHVybnMgYSBTQVBVSTUgSlNPTiBtb2RlbCBjb250YWluaW5nIFVJIGluZm9ybWF0aW9uLlxuXHQgKiBPbmx5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgcHVibGljIGFuZCBzdXBwb3J0ZWQ6XG5cdCAqIDx1bD5cblx0ICogPGxpPmlzRWRpdGFibGU6IHNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBpbiBlZGl0IG1vZGU8L2xpPlxuXHQgKiA8L3VsPlxuXHQgKiA8L2xpPlxuXHQgKiA8L3VsPi5cblx0ICogZWRpdE1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSBpc0VkaXRhYmxlIGluc3RlYWQuXG5cdCAqIEBwYXJhbSBzTW9kZWxOYW1lIE5hbWUgb2YgdGhlIG1vZGVsXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1aXJlZCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRNb2RlbChzTW9kZWxOYW1lPzogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvQXBwQ29tcG9uZW50O1xuXG5cdFx0aWYgKHNNb2RlbE5hbWUgJiYgc01vZGVsTmFtZSAhPT0gXCJ1aVwiKSB7XG5cdFx0XHRvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpO1xuXHRcdFx0aWYgKCFvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpLm1vZGVsc1tzTW9kZWxOYW1lXSkge1xuXHRcdFx0XHQvLyBkb24ndCBhbGxvdyBhY2Nlc3MgdG8gb3VyIGludGVybmFsIG1vZGVsc1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl92aWV3LmdldE1vZGVsKHNNb2RlbE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhbnkgY29udHJvbCBhcyBhIGRlcGVuZGVudCBjb250cm9sIHRvIHRoaXMgU0FQIEZpb3JpIGVsZW1lbnRzIHBhZ2UuXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBDb250cm9sIHRvIGJlIGFkZGVkIGFzIGEgZGVwZW5kZW50IGNvbnRyb2xcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkRGVwZW5kZW50KG9Db250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQob0NvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhIGRlcGVuZGVudCBjb250cm9sIGZyb20gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVEZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LnJlbW92ZURlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogTmF2aWdhdGUgdG8gYW5vdGhlciB0YXJnZXQuXG5cdCAqIEBwYXJhbSBzVGFyZ2V0IE5hbWUgb2YgdGhlIHRhcmdldCByb3V0ZVxuXHQgKiBAcGFyYW0gW29Db250ZXh0XSBPRGF0YSB2NCBjb250ZXh0IGluc3RhbmNlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdG5hdmlnYXRlVG9UYXJnZXQoc1RhcmdldDogc3RyaW5nLCBvQ29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHR0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0NvbnRleHQsIHNUYXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWQgYSBmcmFnbWVudCBhbmQgZ28gdGhyb3VnaCB0aGUgdGVtcGxhdGUgcHJlcHJvY2Vzc29yIHdpdGggdGhlIGN1cnJlbnQgcGFnZSBjb250ZXh0LlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzIFRoZSBzZXR0aW5ncyBvYmplY3Rcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pZCBUaGUgSUQgb2YgdGhlIGZyYWdtZW50IGl0c2VsZlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLm5hbWUgVGhlIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIGxvYWRlZFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmNvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIGZyYWdtZW50XG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udGV4dFBhdGggVGhlIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgZm9yIHRoZSB0ZW1wbGF0aW5nIHByb2Nlc3Ncblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgVGhlIGluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBmcmFnbWVudCBkZWZpbml0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvYWRGcmFnbWVudChtU2V0dGluZ3M6IHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHRjb250cm9sbGVyPzogb2JqZWN0O1xuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRcdGluaXRpYWxCaW5kaW5nQ29udGV4dD86IENvbnRleHQ7XG5cdH0pOiBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+IHtcblx0XHRjb25zdCBvVGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdGF3YWl0IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRTZXJ2aWNlKFwidGVtcGxhdGVkVmlld1NlcnZpY2VcIik7XG5cdFx0Y29uc3Qgb1BhZ2VNb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXHRcdGNvbnN0IGkxOG5Nb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG1WaWV3RGF0YSA9IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRWaWV3RGF0YSgpO1xuXHRcdGNvbnN0IHRhcmdldENvbnRleHRQYXRoID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldEVudGl0eVNldCgpXG5cdFx0XHQ/IGAvJHtvVGVtcGxhdGVDb21wb25lbnQuZ2V0RW50aXR5U2V0KCkhfWBcblx0XHRcdDogb1RlbXBsYXRlQ29tcG9uZW50LmdldENvbnRleHRQYXRoKCkhO1xuXHRcdGNvbnN0IG9WaWV3RGF0YU1vZGVsID0gbmV3IEpTT05Nb2RlbChtVmlld0RhdGEpLFxuXHRcdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzID0ge1xuXHRcdFx0XHRiaW5kaW5nQ29udGV4dHM6IHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobVNldHRpbmdzLmNvbnRleHRQYXRoIHx8IHRhcmdldENvbnRleHRQYXRoKSxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiLCB1bmRlZmluZWQsIHsgbm9SZXNvbHZlOiB0cnVlIH0pLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBtVmlld0RhdGEgPyBvVmlld0RhdGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgOiBudWxsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwsXG5cdFx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBvVmlld0RhdGFNb2RlbCxcblx0XHRcdFx0XHRcInNhcC5mZS5pMThuXCI6IGkxOG5Nb2RlbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhcHBDb21wb25lbnQ6IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl92aWV3KVxuXHRcdFx0fTtcblxuXHRcdC8vIFdlIHNjb3BlIHRoZSBmcmFnbWVudCB3aXRoIG91ciBFeHRlbnNpb25BUEkuIElmIGEgY29udHJvbGxlciBvYmplY3QgaXMgcGFzc2VkIHdlIG1lcmdlIGl0IHdpdGggdGhlIGV4dGVuc2lvbkFQSVxuXHRcdGxldCBjb250cm9sbGVySW5zdGFuY2U6IEV4dGVuc2lvbkFQSTtcblx0XHRpZiAobVNldHRpbmdzLmNvbnRyb2xsZXIgJiYgIShtU2V0dGluZ3MuY29udHJvbGxlciBhcyBFeHRlbnNpb25BUEkpPy5pc0E/LihcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKSkge1xuXHRcdFx0Y29uc3Qgc3ViQ2xhc3MgPSAoXG5cdFx0XHRcdHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRDbGFzcygpIGFzIHVua25vd24gYXMge1xuXHRcdFx0XHRcdGV4dGVuZDogKGlkOiBzdHJpbmcsIGNvbnRlbnQ6IG9iamVjdCkgPT4geyBuZXcgKHBhZ2VDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IEV4dGVuc2lvbkFQSSB9O1xuXHRcdFx0XHR9XG5cdFx0XHQpLmV4dGVuZChtU2V0dGluZ3MuaWQgKyBcIi1jb250cm9sbGVyXCIsIHt9KTtcblx0XHRcdGZvciAoY29uc3QgY29udHJvbGxlckVsZW1lbnRLZXkgaW4gbVNldHRpbmdzLmNvbnRyb2xsZXIpIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbGxlckVsZW1lbnQgPSBtU2V0dGluZ3MuY29udHJvbGxlcltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdO1xuXHRcdFx0XHRpZiAoKGNvbnRyb2xsZXJFbGVtZW50IGFzIEZ1bmN0aW9uKT8uYmluZCkge1xuXHRcdFx0XHRcdGNvbnN0IGJvdW5kRnVuY3Rpb24gPSAoY29udHJvbGxlckVsZW1lbnQgYXMgRnVuY3Rpb24pLmJpbmQobVNldHRpbmdzLmNvbnRyb2xsZXIpO1xuXHRcdFx0XHRcdGlmIChvVGVtcGxhdGVDb21wb25lbnQpIHtcblx0XHRcdFx0XHRcdHN1YkNsYXNzLnByb3RvdHlwZVtjb250cm9sbGVyRWxlbWVudEtleV0gPSAoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvVGVtcGxhdGVDb21wb25lbnQucnVuQXNPd25lcigoKSA9PiBib3VuZEZ1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHN1YkNsYXNzLnByb3RvdHlwZVtjb250cm9sbGVyRWxlbWVudEtleV0gPSBib3VuZEZ1bmN0aW9uO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MucHJvdG90eXBlLCBjb250cm9sbGVyRWxlbWVudEtleSwge1xuXHRcdFx0XHRcdFx0Z2V0KCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbVNldHRpbmdzLmNvbnRyb2xsZXI/Lltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHNldCh2OiB1bmtub3duKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChtU2V0dGluZ3MuY29udHJvbGxlcikge1xuXHRcdFx0XHRcdFx0XHRcdChtU2V0dGluZ3MuY29udHJvbGxlcltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdIGFzIHVua25vd24pID0gdjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UgPSBuZXcgc3ViQ2xhc3ModGhpcy5fY29udHJvbGxlcik7XG5cdFx0XHRjb25zdCBuZXdJc0EgPSBjb250cm9sbGVySW5zdGFuY2UuaXNBO1xuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlLmlzQSA9IChjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHQvLyBXZSBrZWVwIHRoZSBcdHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSSBhcyBhIHZhbGlkIHR5cGUgZm9yIHRoaXMgbmV3IGNsYXNzXG5cdFx0XHRcdC8vIHRoaXMgdHlwZSBpcyBsb3N0IGFzIHNvb24gYXMgdGhlIG1lcmdlZCBjb250cm9sbGVyIG9iamVjdCBnZXRzIGEgbWV0aG9kIGlzQVxuXHRcdFx0XHRyZXR1cm4gbmV3SXNBLmJpbmQoY29udHJvbGxlckluc3RhbmNlKShjbGFzc05hbWUpIHx8IHRoaXMuaXNBKGNsYXNzTmFtZSk7XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UgPSAobVNldHRpbmdzLmNvbnRyb2xsZXIgYXMgRXh0ZW5zaW9uQVBJKSA/PyB0aGlzO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb1RlbXBsYXRlUHJvbWlzZSA9IENvbW1vblV0aWxzLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KG1TZXR0aW5ncy5uYW1lLCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MsIHtcblx0XHRcdFx0Y29udHJvbGxlcjogY29udHJvbGxlckluc3RhbmNlLFxuXHRcdFx0XHRpc1hNTDogZmFsc2UsXG5cdFx0XHRcdGlkOiBtU2V0dGluZ3MuaWQsXG5cdFx0XHRcdGNvbnRhaW5pbmdWaWV3OiB0aGlzLl92aWV3LFxuXHRcdFx0XHRjb250ZXh0UGF0aDogbVNldHRpbmdzLmNvbnRleHRQYXRoID8/IHRhcmdldENvbnRleHRQYXRoXG5cdFx0XHR9KSBhcyBQcm9taXNlPENvbnRyb2w+O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgb0ZyYWdtZW50OiBDb250cm9sID0gYXdhaXQgb1RlbXBsYXRlUHJvbWlzZTtcblx0XHRcdFx0aWYgKG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdG9GcmFnbWVudC5zZXRCaW5kaW5nQ29udGV4dChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmFkZERlcGVuZGVudChvRnJhZ21lbnQpO1xuXHRcdFx0XHRyZXR1cm4gb0ZyYWdtZW50O1xuXHRcdFx0fSBjYXRjaCAob0Vycm9yKSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9KSBhcyBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+O1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIHVwZGF0ZSBvZiB0aGUgYXBwIHN0YXRlLlxuXHQgKiBTaG91bGQgYmUgY2FsbGVkIGlmIHRoZSBzdGF0ZSBvZiBhIGNvbnRyb2wsIG9yIGFueSBvdGhlciBzdGF0ZS1yZWxldmFudCBpbmZvcm1hdGlvbiwgd2FzIGNoYW5nZWQuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG5ldyBhcHAgc3RhdGUgb2JqZWN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVBcHBTdGF0ZSgpOiBQcm9taXNlPHZvaWQgfCB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfT4ge1xuXHRcdGNvbnN0IHZpZXcgPSB0aGlzLl9jb250cm9sbGVyLmdldFZpZXcoKTtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLl9jb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGFwcFN0YXRlSW5mbyA9IGF3YWl0IGFwcENvbXBvbmVudC5nZXRBcHBTdGF0ZUhhbmRsZXIoKS5jcmVhdGVBcHBTdGF0ZSh7XG5cdFx0XHR2aWV3SWQ6IHZpZXcuZ2V0SWQoKVxuXHRcdH0pO1xuXHRcdHJldHVybiBhcHBTdGF0ZUluZm8/LmFwcFN0YXRlRGF0YTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIHdpdGggdGhlIEZQTSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIFRoaXMgYWxsb3dzIHRvIGluaXRpYWxpemUgYWxsIHRoZSBlbGVtZW50cyByZXF1aXJlZCBieSBidWlsZGluZyBibG9ja3MgdG8gcmVuZGVyIGNvcnJlY3RseS5cblx0ICogQHBhcmFtIGZuIFRoZSBGdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuXHQgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRydW5XaXRoRlBNQ29udGV4dChmbjogRnVuY3Rpb24pOiB1bmtub3duIHtcblx0XHRjb25zdCB0ZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl92aWV3KSBhcyBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD47XG5cdFx0cmV0dXJuIHRlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoZm4gYXMgVFNGdW5jdGlvbik7XG5cdH1cblxuXHQvKipcblx0ICogV2F0Y2ggYSBwcm9wZXJ0eSBmcm9tIHRoZSBtYWluIHBhZ2UgY29udGV4dCBhbmQgdHJpZ2dlciBhIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHdhdGNoXG5cdCAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gdHJpZ2dlciB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHdhdGNoUHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBXYXRjaGVyQ2FsbGJhY2spOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LmFkZERlcGVuZGVudChcblx0XHRcdG5ldyBEYXRhV2F0Y2hlcih7XG5cdFx0XHRcdHByb3BlcnR5QmluZGluZzogY29tcGlsZUV4cHJlc3Npb24ocGF0aEluTW9kZWwocHJvcGVydHlOYW1lKSksXG5cdFx0XHRcdHZhbHVlQ2hhbmdlZDogKGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRjYWxsYmFjayhlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpLCBlLmdldFBhcmFtZXRlcihcIm9sZFZhbHVlXCIpLCBlLmdldFBhcmFtZXRlcihcImlzSW5pdGlhbFwiKSwgZS5nZXRQYXJhbWV0ZXIoXCJjb250ZXh0XCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuc2lvbkFQSTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUkEsSUFVTUEsWUFBWSxJQUFBQyxJQUFBLEdBRGpCQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsRUFBQUMsS0FBQSxHQU96Q0MsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUE0QyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQVEvREYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUEyQyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQU85REgsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUF5RCxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBTyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLFdBQUE7SUFhN0UsU0FBQVYsYUFBWVcsV0FBMkIsRUFBRUMsR0FBWSxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN0REEsS0FBQSxHQUFBSCxXQUFBLENBQUFJLElBQUEsS0FBTSxDQUFDO01BbENSO0FB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
@@ -131,7 +131,7 @@ class ExtensionAPI extends BaseObject {
131
131
 
132
132
  while (parent) {
133
133
  if (parent.isA<FormAPI>("sap.fe.macros.form.FormAPI")) {
134
- // we reached the formAPI but no fieldAPI - the app tries to access any custom control which is fine
134
+ // we reached the formAPI but no field - the app tries to access any custom control which is fine
135
135
  break;
136
136
  }
137
137
 
@@ -227,9 +227,10 @@ class ExtensionAPI extends BaseObject {
227
227
  initialBindingContext?: Context;
228
228
  }): Promise<UI5Element | UI5Element[]> {
229
229
  const oTemplateComponent = Component.getOwnerComponentFor(this._view) as EnhanceWithUI5<TemplateComponent>;
230
+ await oTemplateComponent.getService("templatedViewService");
230
231
  const oPageModel = this._view.getModel("_pageModel");
231
232
  const i18nModel = this._view.getModel("sap.fe.i18n");
232
- const oMetaModel = this.getModel()?.getMetaModel();
233
+ const oMetaModel = oTemplateComponent.getMetaModel();
233
234
  const mViewData = oTemplateComponent.getViewData();
234
235
  const targetContextPath = oTemplateComponent.getEntitySet()
235
236
  ? `/${oTemplateComponent.getEntitySet()!}`
@@ -298,7 +299,8 @@ class ExtensionAPI extends BaseObject {
298
299
  controller: controllerInstance,
299
300
  isXML: false,
300
301
  id: mSettings.id,
301
- containingView: this._view
302
+ containingView: this._view,
303
+ contextPath: mSettings.contextPath ?? targetContextPath
302
304
  }) as Promise<Control>;
303
305
  try {
304
306
  const oFragment: Control = await oTemplatePromise;
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/base/ClassSupport"], function (ClassSupport) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/insights/CardExtension", "./formatters/ValueFormatter"], function (CardExtension, valueFormatters) {
6
6
  "use strict";
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe/core/ExtensionAPI", "sap/fe/core/controllerextensions/CollaborativeDraft", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/IntentBasedNavigation", "sap/fe/core/controllerextensions/InternalIntentBasedNavigation", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/MessageHandler", "sap/fe/core/controllerextensions/PageReady", "sap/fe/core/controllerextensions/Paginator", "sap/fe/core/controllerextensions/Placeholder", "sap/fe/core/controllerextensions/Recommendations", "sap/fe/core/controllerextensions/Routing", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/fe/core/controllerextensions/Telemetry", "sap/fe/core/controllerextensions/ViewState", "sap/m/MessageBox", "sap/ui/core/Component", "sap/ui/core/Lib", "./controllerextensions/ContextSharing", "./controllerextensions/cards/CollaborationManager"], function (ClassSupport, BaseController, ExtensionAPI, CollaborativeDraft, EditFlow, IntentBasedNavigation, InternalIntentBasedNavigation, InternalRouting, MessageHandler, PageReady, Paginator, Placeholder, Recommendations, Routing, Share, SideEffects, Telemetry, ViewState, MessageBox, Component, Library, ContextSharing, CollaborationManager) {
5
+ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe/core/ExtensionAPI", "sap/fe/core/controllerextensions/CollaborativeDraft", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InlineEditFlow", "sap/fe/core/controllerextensions/IntentBasedNavigation", "sap/fe/core/controllerextensions/InternalIntentBasedNavigation", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/MessageHandler", "sap/fe/core/controllerextensions/PageReady", "sap/fe/core/controllerextensions/Paginator", "sap/fe/core/controllerextensions/Placeholder", "sap/fe/core/controllerextensions/Recommendations", "sap/fe/core/controllerextensions/Routing", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/fe/core/controllerextensions/Telemetry", "sap/fe/core/controllerextensions/ViewState", "sap/m/MessageBox", "sap/ui/core/Component", "sap/ui/core/Lib", "./controllerextensions/ContextSharing", "./controllerextensions/cards/CollaborationManager"], function (ClassSupport, BaseController, ExtensionAPI, CollaborativeDraft, EditFlow, InlineEditFlow, IntentBasedNavigation, InternalIntentBasedNavigation, InternalRouting, MessageHandler, PageReady, Paginator, Placeholder, Recommendations, Routing, Share, SideEffects, Telemetry, ViewState, MessageBox, Component, Library, ContextSharing, CollaborationManager) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18;
9
9
  var usingExtension = ClassSupport.usingExtension;
10
10
  var publicExtension = ClassSupport.publicExtension;
11
11
  var extensible = ClassSupport.extensible;
@@ -23,7 +23,7 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe
23
23
  * @public
24
24
  * @since 1.88.0
25
25
  */
26
- let PageController = (_dec = defineUI5Class("sap.fe.core.PageController"), _dec2 = usingExtension(Routing), _dec3 = usingExtension(CollaborativeDraft), _dec4 = usingExtension(InternalRouting), _dec5 = usingExtension(EditFlow), _dec6 = usingExtension(IntentBasedNavigation), _dec7 = usingExtension(InternalIntentBasedNavigation), _dec8 = usingExtension(PageReady), _dec9 = usingExtension(MessageHandler), _dec10 = usingExtension(Share), _dec11 = usingExtension(Paginator), _dec12 = usingExtension(ViewState), _dec13 = usingExtension(Placeholder), _dec14 = usingExtension(SideEffects), _dec15 = usingExtension(Recommendations), _dec16 = usingExtension(Telemetry), _dec17 = usingExtension(ContextSharing), _dec18 = usingExtension(CollaborationManager), _dec19 = publicExtension(), _dec20 = publicExtension(), _dec21 = publicExtension(), _dec22 = publicExtension(), _dec23 = extensible("After"), _dec(_class = (_class2 = /*#__PURE__*/function (_BaseController) {
26
+ let PageController = (_dec = defineUI5Class("sap.fe.core.PageController"), _dec2 = usingExtension(Routing), _dec3 = usingExtension(CollaborativeDraft), _dec4 = usingExtension(InternalRouting), _dec5 = usingExtension(EditFlow), _dec6 = usingExtension(IntentBasedNavigation), _dec7 = usingExtension(InternalIntentBasedNavigation), _dec8 = usingExtension(PageReady), _dec9 = usingExtension(MessageHandler), _dec10 = usingExtension(Share), _dec11 = usingExtension(Paginator), _dec12 = usingExtension(ViewState), _dec13 = usingExtension(Placeholder), _dec14 = usingExtension(SideEffects), _dec15 = usingExtension(Recommendations), _dec16 = usingExtension(Telemetry), _dec17 = usingExtension(ContextSharing), _dec18 = usingExtension(CollaborationManager), _dec19 = usingExtension(InlineEditFlow), _dec20 = publicExtension(), _dec21 = publicExtension(), _dec22 = publicExtension(), _dec23 = publicExtension(), _dec24 = extensible("After"), _dec(_class = (_class2 = /*#__PURE__*/function (_BaseController) {
27
27
  function PageController(name) {
28
28
  var _this;
29
29
  _this = _BaseController.call(this, name) || this;
@@ -44,6 +44,7 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe
44
44
  _initializerDefineProperty(_this, "telemetry", _descriptor15, _this);
45
45
  _initializerDefineProperty(_this, "contextSharing", _descriptor16, _this);
46
46
  _initializerDefineProperty(_this, "collaborationManager", _descriptor17, _this);
47
+ _initializerDefineProperty(_this, "inlineEditFlow", _descriptor18, _this);
47
48
  const ownProps = Object.getOwnPropertyNames(_this.constructor.prototype);
48
49
  for (const ownProp of ownProps) {
49
50
  if (ownProp !== "constructor" && ownProp !== "getMetadata" && ownProp !== "extension") {
@@ -175,6 +176,30 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe
175
176
  this.routingTargetName = this.getAppComponent().getRoutingService().getTargetNameForView(this.getView()) ?? "";
176
177
  }
177
178
  return this.routingTargetName;
179
+ }
180
+
181
+ /**
182
+ * Method to forward setShowFooter on the first content of the view if recognized.
183
+ * @param show
184
+ */;
185
+ _proto.setShowFooter = function setShowFooter() {
186
+ let show = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
187
+ const page = this.getView().getContent()[0];
188
+ if (page.isA("sap.f.DynamicPage") || page.isA("sap.uxap.ObjectPageLayout")) {
189
+ page.setShowFooter(show);
190
+ }
191
+ }
192
+
193
+ /**
194
+ * Method to get the footer.
195
+ * @returns The footer of the page if it exists
196
+ */;
197
+ _proto.getFooter = function getFooter() {
198
+ const page = this.getView().getContent()[0];
199
+ if (page.isA("sap.f.DynamicPage") || page.isA("sap.uxap.ObjectPageLayout")) {
200
+ return page.getFooter();
201
+ }
202
+ return undefined;
178
203
  };
179
204
  return PageController;
180
205
  }(BaseController), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "routing", [_dec2], {
@@ -262,7 +287,12 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/BaseController", "sap/fe
262
287
  enumerable: true,
263
288
  writable: true,
264
289
  initializer: null
265
- }), _applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec19], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeRendering", [_dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeRendering"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec22, _dec23], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _class2)) || _class);
290
+ }), _descriptor18 = _applyDecoratedDescriptor(_class2.prototype, "inlineEditFlow", [_dec19], {
291
+ configurable: true,
292
+ enumerable: true,
293
+ writable: true,
294
+ initializer: null
295
+ }), _applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeRendering", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeRendering"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec22], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec23, _dec24], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _class2)) || _class);
266
296
  return PageController;
267
297
  }, false);
268
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiX2RlYzMiLCJDb2xsYWJvcmF0aXZlRHJhZnQiLCJfZGVjNCIsIkludGVybmFsUm91dGluZyIsIl9kZWM1IiwiRWRpdEZsb3ciLCJfZGVjNiIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9kZWM3IiwiSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJfZGVjOCIsIlBhZ2VSZWFkeSIsIl9kZWM5IiwiTWVzc2FnZUhhbmRsZXIiLCJfZGVjMTAiLCJTaGFyZSIsIl9kZWMxMSIsIlBhZ2luYXRvciIsIl9kZWMxMiIsIlZpZXdTdGF0ZSIsIl9kZWMxMyIsIlBsYWNlaG9sZGVyIiwiX2RlYzE0IiwiU2lkZUVmZmVjdHMiLCJfZGVjMTUiLCJSZWNvbW1lbmRhdGlvbnMiLCJfZGVjMTYiLCJUZWxlbWV0cnkiLCJfZGVjMTciLCJDb250ZXh0U2hhcmluZyIsIl9kZWMxOCIsIkNvbGxhYm9yYXRpb25NYW5hZ2VyIiwiX2RlYzE5IiwicHVibGljRXh0ZW5zaW9uIiwiX2RlYzIwIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2RlYzIzIiwiZXh0ZW5zaWJsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQmFzZUNvbnRyb2xsZXIiLCJuYW1lIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3Iiwib3duUHJvcHMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25Qcm9wIiwiZm5Qcm9wIiwiZ2V0TWV0YWRhdGEiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIm93bmVyQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRWaWV3IiwicnVuQXNPd25lciIsImFwcGx5IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJfb1ZpZXciLCJzZXQiLCJ2IiwiZ2V0T3duZXJDb21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwib25Jbml0Iiwib1VJTW9kZWwiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNb2RlbCIsIm9JbnRlcm5hbE1vZGVsIiwic1BhdGgiLCJnZXRJZCIsInNldFByb3BlcnR5IiwiY29udHJvbHMiLCJjb2xsYWJvcmF0aW9uIiwiYmluZEVsZW1lbnQiLCJwYXRoIiwibW9kZWwiLCJzZXRNb2RlbCIsIm9uQmVmb3JlUmVuZGVyaW5nIiwicGxhY2Vob2xkZXIiLCJhdHRhY2hIaWRlQ2FsbGJhY2siLCJnZXRFeHRlbnNpb25BUEkiLCJpZCIsImV4dGVuc2lvbkFQSSIsIkV4dGVuc2lvbkFQSSIsIm9uUGFnZVJlYWR5IiwiX21QYXJhbWV0ZXJzIiwidmlldyIsImdldEFwcFN0YXRlSGFuZGxlciIsImFwcGx5QXBwU3RhdGUiLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJfZ2V0UGFnZU1vZGVsIiwicGFnZUNvbXBvbmVudCIsIm9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZCIsIm91dGJvdW5kVGFyZ2V0IiwiY29udGV4dHMiLCJjcmVhdGVQYXRoIiwibWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zIiwidGhhdCIsImZvckVhY2giLCJjb250ZXh0IiwiX2ludGVudEJhc2VkTmF2aWdhdGlvbiIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0VGV4dCIsImdldFJvdXRpbmdUYXJnZXROYW1lIiwicm91dGluZ1RhcmdldE5hbWUiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldE5hbWVGb3JWaWV3IiwiQmFzZUNvbnRyb2xsZXIiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlBhZ2VDb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBwdWJsaWNFeHRlbnNpb24sIHVzaW5nRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgQ29sbGFib3JhdGl2ZURyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db2xsYWJvcmF0aXZlRHJhZnRcIjtcbmltcG9ydCBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgTWVzc2FnZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgUGFnZVJlYWR5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QYWdlUmVhZHlcIjtcbmltcG9ydCBQYWdpbmF0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2luYXRvclwiO1xuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QbGFjZWhvbGRlclwiO1xuaW1wb3J0IFJlY29tbWVuZGF0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUmVjb21tZW5kYXRpb25zXCI7XG5pbXBvcnQgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IFRlbGVtZXRyeSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVGVsZW1ldHJ5XCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgVGl0bGVJbmZvcm1hdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQ29udGV4dFNoYXJpbmcgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udGV4dFNoYXJpbmdcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uTWFuYWdlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9jYXJkcy9Db2xsYWJvcmF0aW9uTWFuYWdlclwiO1xuXG4vKipcbiAqIEJhc2UgY29udHJvbGxlciBjbGFzcyBmb3IgeW91ciBjdXN0b20gcGFnZSB1c2VkIGluc2lkZSBhbiBTQVAgRmlvcmkgZWxlbWVudHMgYXBwbGljYXRpb24uXG4gKlxuICogVGhpcyBjb250cm9sbGVyIHByb3ZpZGVzIHByZWNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyB0aGF0IHdpbGwgZW5zdXJlIHlvdSBoYXZlIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXRpZXMgcmVxdWlyZWQgdG8gdXNlIHRoZSBidWlsZGluZyBibG9ja3MuXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS44OC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyXCIpXG5jbGFzcyBQYWdlQ29udHJvbGxlciBleHRlbmRzIEJhc2VDb250cm9sbGVyIHtcblx0QHVzaW5nRXh0ZW5zaW9uKFJvdXRpbmcpXG5cdHJvdXRpbmchOiBSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb2xsYWJvcmF0aXZlRHJhZnQpXG5cdGNvbGxhYm9yYXRpdmVEcmFmdCE6IENvbGxhYm9yYXRpdmVEcmFmdDtcblxuXHRAdXNpbmdFeHRlbnNpb24oSW50ZXJuYWxSb3V0aW5nKVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oRWRpdEZsb3cpXG5cdGVkaXRGbG93ITogRWRpdEZsb3c7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0aW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0X2ludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdlUmVhZHkpXG5cdHBhZ2VSZWFkeSE6IFBhZ2VSZWFkeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oTWVzc2FnZUhhbmRsZXIpXG5cdG1lc3NhZ2VIYW5kbGVyITogTWVzc2FnZUhhbmRsZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNoYXJlKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdpbmF0b3IpXG5cdHBhZ2luYXRvciE6IFBhZ2luYXRvcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oVmlld1N0YXRlKVxuXHR2aWV3U3RhdGUhOiBWaWV3U3RhdGU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBsYWNlaG9sZGVyKVxuXHRwbGFjZWhvbGRlciE6IFBsYWNlaG9sZGVyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihTaWRlRWZmZWN0cylcblx0X3NpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFJlY29tbWVuZGF0aW9ucylcblx0cmVjb21tZW5kYXRpb25zITogUmVjb21tZW5kYXRpb25zO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihUZWxlbWV0cnkpXG5cdHRlbGVtZXRyeSE6IFRlbGVtZXRyeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29udGV4dFNoYXJpbmcpXG5cdGNvbnRleHRTaGFyaW5nITogQ29udGV4dFNoYXJpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpb25NYW5hZ2VyKVxuXHRjb2xsYWJvcmF0aW9uTWFuYWdlciE6IENvbGxhYm9yYXRpb25NYW5hZ2VyO1xuXG5cdGV4dGVuc2lvbiE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdF9vVmlldz86IFZpZXc7XG5cblx0cm91dGluZ1RhcmdldE5hbWU/OiBzdHJpbmc7XG5cblx0cHJvdGVjdGVkIGV4dGVuc2lvbkFQST86IEV4dGVuc2lvbkFQSTtcblxuXHRjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblxuXHRcdGNvbnN0IG93blByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpO1xuXHRcdGZvciAoY29uc3Qgb3duUHJvcCBvZiBvd25Qcm9wcykge1xuXHRcdFx0aWYgKG93blByb3AgIT09IFwiY29uc3RydWN0b3JcIiAmJiBvd25Qcm9wICE9PSBcImdldE1ldGFkYXRhXCIgJiYgb3duUHJvcCAhPT0gXCJleHRlbnNpb25cIikge1xuXHRcdFx0XHRjb25zdCBmblByb3AgPSAodGhpcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbb3duUHJvcF07XG5cdFx0XHRcdGlmIChmblByb3AgJiYgdHlwZW9mIGZuUHJvcCA9PT0gXCJmdW5jdGlvblwiICYmICEoZm5Qcm9wIGFzIHsgZ2V0TWV0YWRhdGE/OiBGdW5jdGlvbiB9KS5nZXRNZXRhZGF0YSkge1xuXHRcdFx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXSA9ICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IG93bmVyQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRcdFx0XHRcdGlmIChvd25lckNvbXBvbmVudCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb3duZXJDb21wb25lbnQucnVuQXNPd25lcigoKSA9PiBmblByb3AuYXBwbHkodGhpcywgYXJncykpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwib1ZpZXdcIiwge1xuXHRcdFx0Z2V0KCk6IFZpZXcgfCB1bmRlZmluZWQge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fb1ZpZXc7XG5cdFx0XHR9LFxuXHRcdFx0c2V0KHY6IFZpZXcpIHtcblx0XHRcdFx0dGhpcy5fb1ZpZXcgPSB2O1xuXHRcdFx0XHQvLyBPbiB0aGUgaW5pdGlhbCB2aWV3IGluc3RhbnRpYXRpb24gZnJvbSBYTUwgdGhlIHRlbXBsYXRpbmcgcHJvY2VzcyBtYXkgYmUgZmluaXNoZWQgYmVmb3JlIHRoZSB2aWV3IGlzIGNvbXBsZXRlbHkgY3JlYXRlZFxuXHRcdFx0XHQvLyBXaGVuIHRoYXQgaGFwcGVucyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSByb290IGNvbnRyb2xsZXIgaXMgYXZhaWxhYmxlIG9uIHRoZSBUZW1wbGF0ZUNvbXBvbmVudFxuXHRcdFx0XHR0aGlzLmdldE93bmVyQ29tcG9uZW50KCk/LnNldFJvb3RDb250cm9sbGVyPy4odGhpcyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IG9VSU1vZGVsID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChcInVpXCIpLFxuXHRcdFx0b0ludGVybmFsTW9kZWwgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsLFxuXHRcdFx0c1BhdGggPSBgL3BhZ2VzLyR7dGhpcy5nZXRWaWV3KCkuZ2V0SWQoKX1gO1xuXG5cdFx0b1VJTW9kZWwuc2V0UHJvcGVydHkoc1BhdGgsIHtcblx0XHRcdGNvbnRyb2xzOiB7fVxuXHRcdH0pO1xuXHRcdG9JbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KHNQYXRoLCB7XG5cdFx0XHRjb250cm9sczoge30sXG5cdFx0XHRjb2xsYWJvcmF0aW9uOiB7fVxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IFwiL1wiLFxuXHRcdFx0bW9kZWw6IFwidWlcIlxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIlxuXHRcdH0pO1xuXG5cdFx0Ly8gZm9yIHRoZSB0aW1lIGJlaW5nIHByb3ZpZGUgaXQgYWxzbyBwYWdlSW50ZXJuYWwgYXMgc29tZSBtYWNyb3MgYWNjZXNzIGl0IC0gdG8gYmUgcmVtb3ZlZFxuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwicGFnZUludGVybmFsXCJcblx0XHR9KTtcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJwYWdlSW50ZXJuYWxcIik7XG5cblx0XHQvLyBhcyB0aGUgbW9kZWwgcHJvcGFnYXRpb24gaGFwcGVucyBhZnRlciBpbml0IGJ1dCB3ZSBhY3R1YWxseSB3YW50IHRvIGFjY2VzcyB0aGUgYmluZGluZyBjb250ZXh0IGluIHRoZVxuXHRcdC8vIGluaXQgcGhhc2UgYWxyZWFkeSBzZXR0aW5nIHRoZSBtb2RlbCBoZXJlXG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob1VJTW9kZWwsIFwidWlcIik7XG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucGxhY2Vob2xkZXIuYXR0YWNoSGlkZUNhbGxiYWNrKSB7XG5cdFx0XHR0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGV4dGVuc2lvbiBBUEkgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIEBwYXJhbSBpZCBQUklWQVRFXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGV4dGVuc2lvbiBBUEkuXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0Z2V0RXh0ZW5zaW9uQVBJKGlkPzogc3RyaW5nKTogRXh0ZW5zaW9uQVBJIHtcblx0XHRpZiAoIXRoaXMuZXh0ZW5zaW9uQVBJKSB7XG5cdFx0XHR0aGlzLmV4dGVuc2lvbkFQSSA9IG5ldyBFeHRlbnNpb25BUEkodGhpcywgaWQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5leHRlbnNpb25BUEk7XG5cdH1cblxuXHQvLyBXZSBzcGVjaWZ5IHRoZSBleHRlbnNpYmlsaXR5IGhlcmUgdGhlIHNhbWUgd2F5IGFzIGl0IGlzIGRvbmUgaW4gdGhlIG9iamVjdCBwYWdlIGNvbnRyb2xsZXJcblx0Ly8gc2luY2UgdGhlIHNwZWNpZmljYXRpb24gaGVyZSBvdmVycmlkZXMgaXQgYW5kIGlmIHdlIGRvIG5vdCBzcGVjaWZ5IGFueXRoaW5nIGhlcmUsIHRoZVxuXHQvLyBiZWhhdmlvciBkZWZhdWx0cyB0byBhbiBleGVjdXRlIGluc3RlYWQhXG5cdC8vIFRPRE8gVGhpcyBtYXkgbm90IGJlIGlkZWFsLCBzaW5jZSBpdCBhbHNvIGluZmx1ZW5jZXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgYnV0IGN1cnJlbnRseSBpdCdzIHRoZSBiZXN0IHNvbHV0aW9uLlxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoXCJBZnRlclwiKVxuXHRvblBhZ2VSZWFkeShfbVBhcmFtZXRlcnM6IHVua25vd24pOiB2b2lkIHtcblx0XHQvLyBBcHBseSBhcHAgc3RhdGUgb25seSBhZnRlciB0aGUgcGFnZSBpcyByZWFkeSB3aXRoIHRoZSBmaXJzdCBzZWN0aW9uIHNlbGVjdGVkXG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuYXBwbHlBcHBTdGF0ZSh2aWV3LmdldElkKCksIHZpZXcpO1xuXHR9XG5cblx0X2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKCk6IFRpdGxlSW5mb3JtYXRpb24ge1xuXHRcdHJldHVybiB7fTtcblx0fVxuXG5cdF9nZXRQYWdlTW9kZWwoKTogSlNPTk1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBwYWdlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRyZXR1cm4gcGFnZUNvbXBvbmVudD8uZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpIGFzIEpTT05Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVucyBvbmUgb3IgbW9yZSBuZXcgdGFicyB3aXRoIHRoZSBnaXZlbiBvdXRib3VuZCB0YXJnZXQgZm9yIHRoZSBzZWxlY3RlZCBjb250ZXh0cy5cblx0ICogQHBhcmFtIG91dGJvdW5kVGFyZ2V0IFRoZSBvdXRib3VuZCB0YXJnZXRcblx0ICogQHBhcmFtIGNvbnRleHRzIFRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcGFyYW0gY3JlYXRlUGF0aCBUaGUgY3JlYXRlIHBhdGhcblx0ICogQHBhcmFtIG1heE51bWJlck9mU2VsZWN0ZWRJdGVtcyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXNcblx0ICovXG5cdG9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZChcblx0XHRvdXRib3VuZFRhcmdldDogc3RyaW5nLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0Y3JlYXRlUGF0aDogc3RyaW5nLFxuXHRcdG1heE51bWJlck9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHRjb250ZXh0cy5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZXh0OiBDb250ZXh0KSB7XG5cdFx0XHRcdHRoYXQuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQodGhhdCwgb3V0Ym91bmRUYXJnZXQsIGNvbnRleHQsIGNyZWF0ZVBhdGgsIFwiZXhwbGFjZVwiKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9OQVZJR0FUSU9OX1RPT19NQU5ZX0lURU1TX1NFTEVDVEVEXCIsIFtcblx0XHRcdFx0XHRtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXNcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbmFtZSBvZiB0aGUgcGFnZSBhcyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCByb3V0aW5nIHNlY3Rpb24uXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBwYWdlXG5cdCAqL1xuXHRnZXRSb3V0aW5nVGFyZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdGlmICghdGhpcy5yb3V0aW5nVGFyZ2V0TmFtZSkge1xuXHRcdFx0dGhpcy5yb3V0aW5nVGFyZ2V0TmFtZSA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um91dGluZ1NlcnZpY2UoKS5nZXRUYXJnZXROYW1lRm9yVmlldyh0aGlzLmdldFZpZXcoKSkgPz8gXCJcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMucm91dGluZ1RhcmdldE5hbWU7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnZUNvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQSxJQVNNQSxjQUFjLElBQUFDLElBQUEsR0FEbkJDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFBQyxLQUFBLEdBRTNDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQyxFQUFBQyxLQUFBLEdBR3ZCRixjQUFjLENBQUNHLGtCQUFrQixDQUFDLEVBQUFDLEtBQUEsR0FHbENKLGNBQWMsQ0FBQ0ssZUFBZSxDQUFDLEVBQUFDLEtBQUEsR0FHL0JOLGNBQWMsQ0FBQ08sUUFBUSxDQUFDLEVBQUFDLEtBQUEsR0FHeEJSLGNBQWMsQ0FBQ1MscUJBQXFCLENBQUMsRUFBQUMsS0FBQSxHQUdyQ1YsY0FBYyxDQUFDVyw2QkFBNkIsQ0FBQyxFQUFBQyxLQUFBLEdBRzdDWixjQUFjLENBQUNhLFNBQVMsQ0FBQyxFQUFBQyxLQUFBLEdBR3pCZCxjQUFjLENBQUNlLGNBQWMsQ0FBQyxFQUFBQyxNQUFBLEdBRzlCaEIsY0FBYyxDQUFDaUIsS0FBSyxDQUFDLEVBQUFDLE1BQUEsR0FHckJsQixjQUFjLENBQUNtQixTQUFTLENBQUMsRUFBQUMsTUFBQSxHQUd6QnBCLGNBQWMsQ0FBQ3FCLFNBQVMsQ0FBQyxFQUFBQyxNQUFBLEdBR3pCdEIsY0FBYyxDQUFDdUIsV0FBVyxDQUFDLEVBQUFDLE1BQUEsR0FHM0J4QixjQUFjLENBQUN5QixXQUFXLENBQUMsRUFBQUMsTUFBQSxHQUczQjFCLGNBQWMsQ0FBQzJCLGVBQWUsQ0FBQyxFQUFBQyxNQUFBLEdBRy9CNUIsY0FBYyxDQUFDNkIsU0FBUyxDQUFDLEVBQUFDLE1BQUEsR0FHekI5QixjQUFjLENBQUMrQixjQUFjLENBQUMsRUFBQUMsTUFBQSxHQUc5QmhDLGNBQWMsQ0FBQ2lDLG9CQUFvQixDQUFDLEVBQUFDLE1BQUEsR0E0Q3BDQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxNQUFBLEdBbUNqQkQsZUFBZSxDQUFDLENBQUMsRUFBQUUsTUFBQSxHQWFqQkYsZUFBZSxDQUFDLENBQUMsRUFBQUcsTUFBQSxHQVlqQkgsZUFBZSxDQUFDLENBQUMsRUFBQUksTUFBQSxHQUNqQkMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFBM0MsSUFBQSxDQUFBNEMsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxlQUFBO0lBOUZwQixTQUFBL0MsZUFBWWdELElBQVksRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDekJBLEtBQUEsR0FBQUYsZUFBQSxDQUFBRyxJQUFBLE9BQU1GLElBQUksQ0FBQztNQUFDRywwQkFBQSxDQUFBRixLQUFBLGFBQUFHLFdBQUEsRUFBQUgsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLHdCQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxjQUFBSyxZQUFBLEVBQUFMLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxjQUFBTSxZQUFBLEVBQUFOLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSwyQkFBQU8sWUFBQSxFQUFBUCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsNEJBQUFRLFlBQUEsRUFBQVIsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGVBQUFTLFlBQUEsRUFBQVQsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLG9CQUFBVSxZQUFBLEVBQUFWLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxXQUFBVyxZQUFBLEVBQUFYLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxlQUFBWSxhQUFBLEVBQUFaLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxlQUFBYSxhQUFBLEVBQUFiLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxpQkFBQWMsYUFBQSxFQUFBZCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFlLGFBQUEsRUFBQWYsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLHFCQUFBZ0IsYUFBQSxFQUFBaEIsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGVBQUFpQixhQUFBLEVBQUFqQixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsb0JBQUFrQixhQUFBLEVBQUFsQixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUFtQixhQUFBLEVBQUFuQixLQUFBO01BRVosTUFBTW9CLFFBQVEsR0FBR0MsTUFBTSxDQUFDQyxtQkFBbUIsQ0FBQ3RCLEtBQUEsQ0FBS3VCLFdBQVcsQ0FBQ0MsU0FBUyxDQUFDO01BQ3ZFLEtBQUssTUFBTUMsT0FBTyxJQUFJTCxRQUFRLEVBQUU7UUFDL0IsSUFBSUssT0FBTyxLQUFLLGFBQWEsSUFBSUEsT0FBTyxLQUFLLGFBQWEsSUFBSUEsT0FBTyxLQUFLLFdBQVcsRUFBRTtVQUN0RixNQUFNQyxNQUFNLEdBQUcxQixLQUFBLENBQWtDeUIsT0FBTyxDQUFDO1VBQ3pELElBQUlDLE1BQU0sSUFBSSxPQUFPQSxNQUFNLEtBQUssVUFBVSxJQUFJLENBQUVBLE1BQU0sQ0FBZ0NDLFdBQVcsRUFBRTtZQUNsRzNCLEtBQUEsQ0FBa0N5QixPQUFPLENBQUMsR0FBRyxZQUFpQztjQUFBLFNBQUFHLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQTdCQyxJQUFJLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxHQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO2dCQUFKRixJQUFJLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO2NBQUE7Y0FDcEQsTUFBTUMsY0FBYyxHQUFHQyxTQUFTLENBQUNDLG9CQUFvQixDQUFDcEMsS0FBQSxDQUFLcUMsT0FBTyxDQUFDLENBQUMsQ0FBQztjQUNyRSxJQUFJSCxjQUFjLEVBQUU7Z0JBQ25CLE9BQU9BLGNBQWMsQ0FBQ0ksVUFBVSxDQUFDLE1BQU1aLE1BQU0sQ0FBQ2EsS0FBSyxDQUFBdkMsS0FBQSxFQUFPK0IsSUFBSSxDQUFDLENBQUM7Y0FDakUsQ0FBQyxNQUFNO2dCQUNOLE9BQU9MLE1BQU0sQ0FBQ2EsS0FBSyxDQUFBdkMsS0FBQSxFQUFPK0IsSUFBSSxDQUFDO2NBQ2hDO1lBQ0QsQ0FBQztVQUNGO1FBQ0Q7TUFDRDtNQUVBVixNQUFNLENBQUNtQixjQUFjLENBQUF4QyxLQUFBLEVBQU8sT0FBTyxFQUFFO1FBQ3BDeUMsR0FBR0EsQ0FBQSxFQUFxQjtVQUN2QixPQUFPLElBQUksQ0FBQ0MsTUFBTTtRQUNuQixDQUFDO1FBQ0RDLEdBQUdBLENBQUNDLENBQU8sRUFBRTtVQUNaLElBQUksQ0FBQ0YsTUFBTSxHQUFHRSxDQUFDO1VBQ2Y7VUFDQTtVQUNBLElBQUksQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQyxFQUFFQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDcEQ7TUFDRCxDQUFDLENBQUM7TUFBQyxPQUFBOUMsS0FBQTtJQUNKO0lBQUMrQyxjQUFBLENBQUFoRyxjQUFBLEVBQUErQyxlQUFBO0lBQUEsSUFBQWtELE1BQUEsR0FBQWpHLGNBQUEsQ0FBQXlFLFNBQUE7SUFBQXdCLE1BQUEsQ0FHREMsTUFBTSxHQUROLFNBQ0FBLE1BQU1BLENBQUEsRUFBUztNQUNkLE1BQU1DLFFBQVEsR0FBRyxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDckRDLGNBQWMsR0FBRyxJQUFJLENBQUNGLGVBQWUsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxVQUFVLENBQWM7UUFDekVFLEtBQUssR0FBRyxVQUFVLElBQUksQ0FBQ2pCLE9BQU8sQ0FBQyxDQUFDLENBQUNrQixLQUFLLENBQUMsQ0FBQyxFQUFFO01BRTNDTCxRQUFRLENBQUNNLFdBQVcsQ0FBQ0YsS0FBSyxFQUFFO1FBQzNCRyxRQUFRLEVBQUUsQ0FBQztNQUNaLENBQUMsQ0FBQztNQUNGSixjQUFjLENBQUNHLFdBQVcsQ0FBQ0YsS0FBSyxFQUFFO1FBQ2pDRyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ1pDLGFBQWEsRUFBRSxDQUFDO01BQ2pCLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ3JCLE9BQU8sQ0FBQyxDQUFDLENBQUNzQixXQUFXLENBQUM7UUFDMUJDLElBQUksRUFBRSxHQUFHO1FBQ1RDLEtBQUssRUFBRTtNQUNSLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ3hCLE9BQU8sQ0FBQyxDQUFDLENBQUNzQixXQUFXLENBQUM7UUFDMUJDLElBQUksRUFBRU4sS0FBSztRQUNYTyxLQUFLLEVBQUU7TUFDUixDQUFDLENBQUM7O01BRUY7TUFDQSxJQUFJLENBQUN4QixPQUFPLENBQUMsQ0FBQyxDQUFDc0IsV0FBVyxDQUFDO1FBQzFCQyxJQUFJLEVBQUVOLEtBQUs7UUFDWE8sS0FBSyxFQUFFO01BQ1IsQ0FBQyxDQUFDO01BQ0YsSUFBSSxDQUFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQ3lCLFFBQVEsQ0FBQ1QsY0FBYyxFQUFFLGNBQWMsQ0FBQzs7TUFFdkQ7TUFDQTtNQUNBLElBQUksQ0FBQ2hCLE9BQU8sQ0FBQyxDQUFDLENBQUN5QixRQUFRLENBQUNaLFFBQVEsRUFBRSxJQUFJLENBQUM7TUFDdkMsSUFBSSxDQUFDYixPQUFPLENBQUMsQ0FBQyxDQUFDeUIsUUFBUSxDQUFDVCxjQUFjLEVBQUUsVUFBVSxDQUFDO0lBQ3BELENBQUM7SUFBQUwsTUFBQSxDQUdEZSxpQkFBaUIsR0FEakIsU0FDQUEsaUJBQWlCQSxDQUFBLEVBQVM7TUFDekIsSUFBSSxJQUFJLENBQUNDLFdBQVcsQ0FBQ0Msa0JBQWtCLEVBQUU7UUFDeEMsSUFBSSxDQUFDRCxXQUFXLENBQUNDLGtCQUFrQixDQUFDLENBQUM7TUFDdEM7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBakIsTUFBQSxDQU9Ba0IsZUFBZSxHQURmLFNBQ0FBLGVBQWVBLENBQUNDLEVBQVcsRUFBZ0I7TUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQ0MsWUFBWSxFQUFFO1FBQ3ZCLElBQUksQ0FBQ0EsWUFBWSxHQUFHLElBQUlDLFlBQVksQ0FBQyxJQUFJLEVBQUVGLEVBQUUsQ0FBQztNQUMvQztNQUNBLE9BQU8sSUFBSSxDQUFDQyxZQUFZO0lBQ3pCOztJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQUE7SUFBQXBCLE1BQUEsQ0FHQXNCLFdBQVcsR0FGWCxTQUVBQSxXQUFXQSxDQUFDQyxZQUFxQixFQUFRO01BQ3hDO01BQ0EsTUFBTUMsSUFBSSxHQUFHLElBQUksQ0FBQ25DLE9BQU8sQ0FBQyxDQUFDO01BQzNCLElBQUksQ0FBQ2MsZUFBZSxDQUFDLENBQUMsQ0FBQ3NCLGtCQUFrQixDQUFDLENBQUMsQ0FBQ0MsYUFBYSxDQUFDRixJQUFJLENBQUNqQixLQUFLLENBQUMsQ0FBQyxFQUFFaUIsSUFBSSxDQUFDO0lBQzlFLENBQUM7SUFBQXhCLE1BQUEsQ0FFRDJCLHdCQUF3QixHQUF4QixTQUFBQSx3QkFBd0JBLENBQUEsRUFBcUI7TUFDNUMsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0lBQUEzQixNQUFBLENBRUQ0QixhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQSxFQUEwQjtNQUN0QyxNQUFNQyxhQUFhLEdBQUcxQyxTQUFTLENBQUNDLG9CQUFvQixDQUFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUNwRSxPQUFPd0MsYUFBYSxFQUFFekIsUUFBUSxDQUFDLFlBQVksQ0FBQztJQUM3Qzs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQU5DO0lBQUFKLE1BQUEsQ0FPQThCLDhCQUE4QixHQUE5QixTQUFBQSw4QkFBOEJBLENBQzdCQyxjQUFzQixFQUN0QkMsUUFBbUIsRUFDbkJDLFVBQWtCLEVBQ2xCQyx3QkFBZ0MsRUFDekI7TUFDUDtNQUNBLE1BQU1DLElBQUksR0FBRyxJQUFJO01BQ2pCLElBQUlILFFBQVEsQ0FBQ2xELE1BQU0sSUFBSW9ELHdCQUF3QixFQUFFO1FBQ2hERixRQUFRLENBQUNJLE9BQU8sQ0FBQyxVQUFVQyxPQUFnQixFQUFFO1VBQzVDRixJQUFJLENBQUNHLHNCQUFzQixDQUFDQyw4QkFBOEIsQ0FBQ0osSUFBSSxFQUFFSixjQUFjLEVBQUVNLE9BQU8sRUFBRUosVUFBVSxFQUFFLFNBQVMsQ0FBQztRQUNqSCxDQUFDLENBQUM7TUFDSCxDQUFDLE1BQU07UUFDTk8sVUFBVSxDQUFDQyxPQUFPLENBQ2pCQyxPQUFPLENBQUNDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFFQyxPQUFPLENBQUMsNENBQTRDLEVBQUUsQ0FDcEdWLHdCQUF3QixDQUN4QixDQUNGLENBQUM7TUFDRjtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQWxDLE1BQUEsQ0FJQTZDLG9CQUFvQixHQUFwQixTQUFBQSxvQkFBb0JBLENBQUEsRUFBVztNQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDQyxpQkFBaUIsRUFBRTtRQUM1QixJQUFJLENBQUNBLGlCQUFpQixHQUFHLElBQUksQ0FBQzNDLGVBQWUsQ0FBQyxDQUFDLENBQUM0QyxpQkFBaUIsQ0FBQyxDQUFDLENBQUNDLG9CQUFvQixDQUFDLElBQUksQ0FBQzNELE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO01BQy9HO01BQ0EsT0FBTyxJQUFJLENBQUN5RCxpQkFBaUI7SUFDOUIsQ0FBQztJQUFBLE9BQUEvSSxjQUFBO0VBQUEsRUEvTTJCa0osY0FBYyxHQUFBOUYsV0FBQSxHQUFBK0YseUJBQUEsQ0FBQXJHLE9BQUEsQ0FBQTJCLFNBQUEsY0FBQXRFLEtBQUE7SUFBQWlKLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbEcsWUFBQSxHQUFBOEYseUJBQUEsQ0FBQXJHLE9BQUEsQ0FBQTJCLFNBQUEseUJBQUFuRSxLQUFBO0lBQUE4SSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpHLFlBQUEsR0FBQTZGLHlCQUFBLENBQUFyRyxPQUFBLENBQUEyQixTQUFBLGVBQUFqRSxLQUFBO0lBQUE0SSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWhHLFlBQUEsR0FBQTRGLHlCQUFBLENBQUFyRyxPQUFBLENBQUEyQixTQUFBLGVBQUEvRCxLQUFBO0lBQUEwSSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9GLFlBQUEsR0FBQTJGLHlCQUFBLENBQUFyRyxPQUFBLENBQUEyQixTQUFBLDRCQUFBN0QsS0FBQTtJQUFBd0ksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5RixZQUFBLEdBQUEwRix5QkFBQSxDQUFBckcsT0FBQSxDQUFBMkIsU0FBQSw2QkFBQTNELEtBQUE7SUFBQXNJLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN0YsWUFBQSxHQUFBeUYseUJBQUEsQ0FBQXJHLE9BQUEsQ0FBQTJCLFNBQUEsZ0JBQUF6RCxLQUFBO0lBQUFvSSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVGLFlBQUEsR0FBQXdGLHlCQUFBLENBQUFyRyxPQUFBLENBQUEyQixTQUFBLHFCQUFBdkQsS0FBQTtJQUFBa0ksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEzRixZQUFBLEdBQUF1Rix5QkFBQSxDQUFBckcsT0FBQSxDQUFBMkIsU0FBQSxZQUFBckQsTUFBQTtJQUFBZ0ksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUExRixhQUFBLEdBQUFzRix5QkFBQSxDQUFBckcsT0FBQSxDQUFBMkIsU0FBQSxnQkFBQW5ELE1BQUE7SUFBQThILFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBekYsYUFBQSxHQUFBcUYseUJBQUEsQ0FBQXJHLE9BQUEsQ0FBQTJCLFNBQUEsZ0JBQUFqRCxNQUFBO0lBQUE0SCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXhGLGFBQUEsR0FBQW9GLHlCQUFBLENBQUFyRyxPQUFBLENBQUEyQixTQUFBLGtCQUFBL0MsTUFBQTtJQUFBMEgsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF2RixhQUFBLEdBQUFtRix5QkFBQSxDQUFBckcsT0FBQSxDQUFBMkIsU0FBQSxtQkFBQTdDLE1BQUE7SUFBQXdILFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdEYsYUFBQSxHQUFBa0YseUJBQUEsQ0FBQXJHLE9BQUEsQ0FBQTJCLFNBQUEsc0JBQUEzQyxNQUFBO0lBQUFzSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXJGLGFBQUEsR0FBQWlGLHlCQUFBLENBQUFyRyxPQUFBLENBQUEyQixTQUFBLGdCQUFBekMsTUFBQTtJQUFBb0gsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFwRixhQUFBLEdBQUFnRix5QkFBQSxDQUFBckcsT0FBQSxDQUFBMkIsU0FBQSxxQkFBQXZDLE1BQUE7SUFBQWtILFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbkYsYUFBQSxHQUFBK0UseUJBQUEsQ0FBQXJHLE9BQUEsQ0FBQTJCLFNBQUEsMkJBQUFyQyxNQUFBO0lBQUFnSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQUoseUJBQUEsQ0FBQXJHLE9BQUEsQ0FBQTJCLFNBQUEsYUFBQW5DLE1BQUEsR0FBQWdDLE1BQUEsQ0FBQWtGLHdCQUFBLENBQUExRyxPQUFBLENBQUEyQixTQUFBLGFBQUEzQixPQUFBLENBQUEyQixTQUFBLEdBQUEwRSx5QkFBQSxDQUFBckcsT0FBQSxDQUFBMkIsU0FBQSx3QkFBQWpDLE1BQUEsR0FBQThCLE1BQUEsQ0FBQWtGLHdCQUFBLENBQUExRyxPQUFBLENBQUEyQixTQUFBLHdCQUFBM0IsT0FBQSxDQUFBMkIsU0FBQSxHQUFBMEUseUJBQUEsQ0FBQXJHLE9BQUEsQ0FBQTJCLFNBQUEsc0JBQUFoQyxNQUFBLEdBQUE2QixNQUFBLENBQUFrRix3QkFBQSxDQUFBMUcsT0FBQSxDQUFBMkIsU0FBQSxzQkFBQTNCLE9BQUEsQ0FBQTJCLFNBQUEsR0FBQTBFLHlCQUFBLENBQUFyRyxPQUFBLENBQUEyQixTQUFBLGtCQUFBL0IsTUFBQSxFQUFBQyxNQUFBLEdBQUEyQixNQUFBLENBQUFrRix3QkFBQSxDQUFBMUcsT0FBQSxDQUFBMkIsU0FBQSxrQkFBQTNCLE9BQUEsQ0FBQTJCLFNBQUEsR0FBQTNCLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9Ba041QjdDLGNBQWM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
298
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiX2RlYzMiLCJDb2xsYWJvcmF0aXZlRHJhZnQiLCJfZGVjNCIsIkludGVybmFsUm91dGluZyIsIl9kZWM1IiwiRWRpdEZsb3ciLCJfZGVjNiIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9kZWM3IiwiSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJfZGVjOCIsIlBhZ2VSZWFkeSIsIl9kZWM5IiwiTWVzc2FnZUhhbmRsZXIiLCJfZGVjMTAiLCJTaGFyZSIsIl9kZWMxMSIsIlBhZ2luYXRvciIsIl9kZWMxMiIsIlZpZXdTdGF0ZSIsIl9kZWMxMyIsIlBsYWNlaG9sZGVyIiwiX2RlYzE0IiwiU2lkZUVmZmVjdHMiLCJfZGVjMTUiLCJSZWNvbW1lbmRhdGlvbnMiLCJfZGVjMTYiLCJUZWxlbWV0cnkiLCJfZGVjMTciLCJDb250ZXh0U2hhcmluZyIsIl9kZWMxOCIsIkNvbGxhYm9yYXRpb25NYW5hZ2VyIiwiX2RlYzE5IiwiSW5saW5lRWRpdEZsb3ciLCJfZGVjMjAiLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJleHRlbnNpYmxlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CYXNlQ29udHJvbGxlciIsIm5hbWUiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4Iiwib3duUHJvcHMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25Qcm9wIiwiZm5Qcm9wIiwiZ2V0TWV0YWRhdGEiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIm93bmVyQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRWaWV3IiwicnVuQXNPd25lciIsImFwcGx5IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJfb1ZpZXciLCJzZXQiLCJ2IiwiZ2V0T3duZXJDb21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwib25Jbml0Iiwib1VJTW9kZWwiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNb2RlbCIsIm9JbnRlcm5hbE1vZGVsIiwic1BhdGgiLCJnZXRJZCIsInNldFByb3BlcnR5IiwiY29udHJvbHMiLCJjb2xsYWJvcmF0aW9uIiwiYmluZEVsZW1lbnQiLCJwYXRoIiwibW9kZWwiLCJzZXRNb2RlbCIsIm9uQmVmb3JlUmVuZGVyaW5nIiwicGxhY2Vob2xkZXIiLCJhdHRhY2hIaWRlQ2FsbGJhY2siLCJnZXRFeHRlbnNpb25BUEkiLCJpZCIsImV4dGVuc2lvbkFQSSIsIkV4dGVuc2lvbkFQSSIsIm9uUGFnZVJlYWR5IiwiX21QYXJhbWV0ZXJzIiwidmlldyIsImdldEFwcFN0YXRlSGFuZGxlciIsImFwcGx5QXBwU3RhdGUiLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJfZ2V0UGFnZU1vZGVsIiwicGFnZUNvbXBvbmVudCIsIm9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZCIsIm91dGJvdW5kVGFyZ2V0IiwiY29udGV4dHMiLCJjcmVhdGVQYXRoIiwibWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zIiwidGhhdCIsImZvckVhY2giLCJjb250ZXh0IiwiX2ludGVudEJhc2VkTmF2aWdhdGlvbiIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0VGV4dCIsImdldFJvdXRpbmdUYXJnZXROYW1lIiwicm91dGluZ1RhcmdldE5hbWUiLCJnZXRSb3V0aW5nU2VydmljZSIsImdldFRhcmdldE5hbWVGb3JWaWV3Iiwic2V0U2hvd0Zvb3RlciIsInNob3ciLCJ1bmRlZmluZWQiLCJwYWdlIiwiZ2V0Q29udGVudCIsImlzQSIsImdldEZvb3RlciIsIkJhc2VDb250cm9sbGVyIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBEeW5hbWljUGFnZSBmcm9tIFwic2FwL2YvRHluYW1pY1BhZ2VcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBwdWJsaWNFeHRlbnNpb24sIHVzaW5nRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgQ29sbGFib3JhdGl2ZURyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db2xsYWJvcmF0aXZlRHJhZnRcIjtcbmltcG9ydCBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCBJbmxpbmVFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW5saW5lRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgTWVzc2FnZUhhbmRsZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgUGFnZVJlYWR5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QYWdlUmVhZHlcIjtcbmltcG9ydCBQYWdpbmF0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2luYXRvclwiO1xuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QbGFjZWhvbGRlclwiO1xuaW1wb3J0IFJlY29tbWVuZGF0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUmVjb21tZW5kYXRpb25zXCI7XG5pbXBvcnQgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IFRlbGVtZXRyeSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVGVsZW1ldHJ5XCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgVGl0bGVJbmZvcm1hdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VMYXlvdXQgZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VMYXlvdXRcIjtcbmltcG9ydCBDb250ZXh0U2hhcmluZyBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db250ZXh0U2hhcmluZ1wiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25NYW5hZ2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL2NhcmRzL0NvbGxhYm9yYXRpb25NYW5hZ2VyXCI7XG5cbi8qKlxuICogQmFzZSBjb250cm9sbGVyIGNsYXNzIGZvciB5b3VyIGN1c3RvbSBwYWdlIHVzZWQgaW5zaWRlIGFuIFNBUCBGaW9yaSBlbGVtZW50cyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBUaGlzIGNvbnRyb2xsZXIgcHJvdmlkZXMgcHJlY29uZmlndXJlZCBleHRlbnNpb25zIHRoYXQgd2lsbCBlbnN1cmUgeW91IGhhdmUgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdGllcyByZXF1aXJlZCB0byB1c2UgdGhlIGJ1aWxkaW5nIGJsb2Nrcy5cbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjg4LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXJcIilcbmNsYXNzIFBhZ2VDb250cm9sbGVyIGV4dGVuZHMgQmFzZUNvbnRyb2xsZXIge1xuXHRAdXNpbmdFeHRlbnNpb24oUm91dGluZylcblx0cm91dGluZyE6IFJvdXRpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpdmVEcmFmdClcblx0Y29sbGFib3JhdGl2ZURyYWZ0ITogQ29sbGFib3JhdGl2ZURyYWZ0O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbnRlcm5hbFJvdXRpbmcpXG5cdF9yb3V0aW5nITogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihFZGl0Rmxvdylcblx0ZWRpdEZsb3chOiBFZGl0RmxvdztcblxuXHRAdXNpbmdFeHRlbnNpb24oSW50ZW50QmFzZWROYXZpZ2F0aW9uKVxuXHRpbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uKVxuXHRfaW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBhZ2VSZWFkeSlcblx0cGFnZVJlYWR5ITogUGFnZVJlYWR5O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihNZXNzYWdlSGFuZGxlcilcblx0bWVzc2FnZUhhbmRsZXIhOiBNZXNzYWdlSGFuZGxlcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2hhcmUpXG5cdHNoYXJlITogU2hhcmU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBhZ2luYXRvcilcblx0cGFnaW5hdG9yITogUGFnaW5hdG9yO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihWaWV3U3RhdGUpXG5cdHZpZXdTdGF0ZSE6IFZpZXdTdGF0ZTtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGxhY2Vob2xkZXIpXG5cdHBsYWNlaG9sZGVyITogUGxhY2Vob2xkZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNpZGVFZmZlY3RzKVxuXHRfc2lkZUVmZmVjdHMhOiBTaWRlRWZmZWN0cztcblxuXHRAdXNpbmdFeHRlbnNpb24oUmVjb21tZW5kYXRpb25zKVxuXHRyZWNvbW1lbmRhdGlvbnMhOiBSZWNvbW1lbmRhdGlvbnM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFRlbGVtZXRyeSlcblx0dGVsZW1ldHJ5ITogVGVsZW1ldHJ5O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb250ZXh0U2hhcmluZylcblx0Y29udGV4dFNoYXJpbmchOiBDb250ZXh0U2hhcmluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29sbGFib3JhdGlvbk1hbmFnZXIpXG5cdGNvbGxhYm9yYXRpb25NYW5hZ2VyITogQ29sbGFib3JhdGlvbk1hbmFnZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKElubGluZUVkaXRGbG93KVxuXHRpbmxpbmVFZGl0RmxvdyE6IElubGluZUVkaXRGbG93O1xuXG5cdGV4dGVuc2lvbiE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdF9vVmlldz86IFZpZXc7XG5cblx0cm91dGluZ1RhcmdldE5hbWU/OiBzdHJpbmc7XG5cblx0cHJvdGVjdGVkIGV4dGVuc2lvbkFQST86IEV4dGVuc2lvbkFQSTtcblxuXHRjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblxuXHRcdGNvbnN0IG93blByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpO1xuXHRcdGZvciAoY29uc3Qgb3duUHJvcCBvZiBvd25Qcm9wcykge1xuXHRcdFx0aWYgKG93blByb3AgIT09IFwiY29uc3RydWN0b3JcIiAmJiBvd25Qcm9wICE9PSBcImdldE1ldGFkYXRhXCIgJiYgb3duUHJvcCAhPT0gXCJleHRlbnNpb25cIikge1xuXHRcdFx0XHRjb25zdCBmblByb3AgPSAodGhpcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbb3duUHJvcF07XG5cdFx0XHRcdGlmIChmblByb3AgJiYgdHlwZW9mIGZuUHJvcCA9PT0gXCJmdW5jdGlvblwiICYmICEoZm5Qcm9wIGFzIHsgZ2V0TWV0YWRhdGE/OiBGdW5jdGlvbiB9KS5nZXRNZXRhZGF0YSkge1xuXHRcdFx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXSA9ICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IG93bmVyQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRcdFx0XHRcdGlmIChvd25lckNvbXBvbmVudCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb3duZXJDb21wb25lbnQucnVuQXNPd25lcigoKSA9PiBmblByb3AuYXBwbHkodGhpcywgYXJncykpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwib1ZpZXdcIiwge1xuXHRcdFx0Z2V0KCk6IFZpZXcgfCB1bmRlZmluZWQge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fb1ZpZXc7XG5cdFx0XHR9LFxuXHRcdFx0c2V0KHY6IFZpZXcpIHtcblx0XHRcdFx0dGhpcy5fb1ZpZXcgPSB2O1xuXHRcdFx0XHQvLyBPbiB0aGUgaW5pdGlhbCB2aWV3IGluc3RhbnRpYXRpb24gZnJvbSBYTUwgdGhlIHRlbXBsYXRpbmcgcHJvY2VzcyBtYXkgYmUgZmluaXNoZWQgYmVmb3JlIHRoZSB2aWV3IGlzIGNvbXBsZXRlbHkgY3JlYXRlZFxuXHRcdFx0XHQvLyBXaGVuIHRoYXQgaGFwcGVucyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSByb290IGNvbnRyb2xsZXIgaXMgYXZhaWxhYmxlIG9uIHRoZSBUZW1wbGF0ZUNvbXBvbmVudFxuXHRcdFx0XHR0aGlzLmdldE93bmVyQ29tcG9uZW50KCk/LnNldFJvb3RDb250cm9sbGVyPy4odGhpcyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IG9VSU1vZGVsID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChcInVpXCIpLFxuXHRcdFx0b0ludGVybmFsTW9kZWwgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsLFxuXHRcdFx0c1BhdGggPSBgL3BhZ2VzLyR7dGhpcy5nZXRWaWV3KCkuZ2V0SWQoKX1gO1xuXG5cdFx0b1VJTW9kZWwuc2V0UHJvcGVydHkoc1BhdGgsIHtcblx0XHRcdGNvbnRyb2xzOiB7fVxuXHRcdH0pO1xuXHRcdG9JbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KHNQYXRoLCB7XG5cdFx0XHRjb250cm9sczoge30sXG5cdFx0XHRjb2xsYWJvcmF0aW9uOiB7fVxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IFwiL1wiLFxuXHRcdFx0bW9kZWw6IFwidWlcIlxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIlxuXHRcdH0pO1xuXG5cdFx0Ly8gZm9yIHRoZSB0aW1lIGJlaW5nIHByb3ZpZGUgaXQgYWxzbyBwYWdlSW50ZXJuYWwgYXMgc29tZSBtYWNyb3MgYWNjZXNzIGl0IC0gdG8gYmUgcmVtb3ZlZFxuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwicGFnZUludGVybmFsXCJcblx0XHR9KTtcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJwYWdlSW50ZXJuYWxcIik7XG5cblx0XHQvLyBhcyB0aGUgbW9kZWwgcHJvcGFnYXRpb24gaGFwcGVucyBhZnRlciBpbml0IGJ1dCB3ZSBhY3R1YWxseSB3YW50IHRvIGFjY2VzcyB0aGUgYmluZGluZyBjb250ZXh0IGluIHRoZVxuXHRcdC8vIGluaXQgcGhhc2UgYWxyZWFkeSBzZXR0aW5nIHRoZSBtb2RlbCBoZXJlXG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob1VJTW9kZWwsIFwidWlcIik7XG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucGxhY2Vob2xkZXIuYXR0YWNoSGlkZUNhbGxiYWNrKSB7XG5cdFx0XHR0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGV4dGVuc2lvbiBBUEkgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIEBwYXJhbSBpZCBQUklWQVRFXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGV4dGVuc2lvbiBBUEkuXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0Z2V0RXh0ZW5zaW9uQVBJKGlkPzogc3RyaW5nKTogRXh0ZW5zaW9uQVBJIHtcblx0XHRpZiAoIXRoaXMuZXh0ZW5zaW9uQVBJKSB7XG5cdFx0XHR0aGlzLmV4dGVuc2lvbkFQSSA9IG5ldyBFeHRlbnNpb25BUEkodGhpcywgaWQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5leHRlbnNpb25BUEk7XG5cdH1cblxuXHQvLyBXZSBzcGVjaWZ5IHRoZSBleHRlbnNpYmlsaXR5IGhlcmUgdGhlIHNhbWUgd2F5IGFzIGl0IGlzIGRvbmUgaW4gdGhlIG9iamVjdCBwYWdlIGNvbnRyb2xsZXJcblx0Ly8gc2luY2UgdGhlIHNwZWNpZmljYXRpb24gaGVyZSBvdmVycmlkZXMgaXQgYW5kIGlmIHdlIGRvIG5vdCBzcGVjaWZ5IGFueXRoaW5nIGhlcmUsIHRoZVxuXHQvLyBiZWhhdmlvciBkZWZhdWx0cyB0byBhbiBleGVjdXRlIGluc3RlYWQhXG5cdC8vIFRPRE8gVGhpcyBtYXkgbm90IGJlIGlkZWFsLCBzaW5jZSBpdCBhbHNvIGluZmx1ZW5jZXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgYnV0IGN1cnJlbnRseSBpdCdzIHRoZSBiZXN0IHNvbHV0aW9uLlxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoXCJBZnRlclwiKVxuXHRvblBhZ2VSZWFkeShfbVBhcmFtZXRlcnM6IHVua25vd24pOiB2b2lkIHtcblx0XHQvLyBBcHBseSBhcHAgc3RhdGUgb25seSBhZnRlciB0aGUgcGFnZSBpcyByZWFkeSB3aXRoIHRoZSBmaXJzdCBzZWN0aW9uIHNlbGVjdGVkXG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuYXBwbHlBcHBTdGF0ZSh2aWV3LmdldElkKCksIHZpZXcpO1xuXHR9XG5cblx0X2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKCk6IFRpdGxlSW5mb3JtYXRpb24ge1xuXHRcdHJldHVybiB7fTtcblx0fVxuXG5cdF9nZXRQYWdlTW9kZWwoKTogSlNPTk1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBwYWdlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRyZXR1cm4gcGFnZUNvbXBvbmVudD8uZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpIGFzIEpTT05Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVucyBvbmUgb3IgbW9yZSBuZXcgdGFicyB3aXRoIHRoZSBnaXZlbiBvdXRib3VuZCB0YXJnZXQgZm9yIHRoZSBzZWxlY3RlZCBjb250ZXh0cy5cblx0ICogQHBhcmFtIG91dGJvdW5kVGFyZ2V0IFRoZSBvdXRib3VuZCB0YXJnZXRcblx0ICogQHBhcmFtIGNvbnRleHRzIFRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcGFyYW0gY3JlYXRlUGF0aCBUaGUgY3JlYXRlIHBhdGhcblx0ICogQHBhcmFtIG1heE51bWJlck9mU2VsZWN0ZWRJdGVtcyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXNcblx0ICovXG5cdG9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZChcblx0XHRvdXRib3VuZFRhcmdldDogc3RyaW5nLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0Y3JlYXRlUGF0aDogc3RyaW5nLFxuXHRcdG1heE51bWJlck9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHRjb250ZXh0cy5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZXh0OiBDb250ZXh0KSB7XG5cdFx0XHRcdHRoYXQuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQodGhhdCwgb3V0Ym91bmRUYXJnZXQsIGNvbnRleHQsIGNyZWF0ZVBhdGgsIFwiZXhwbGFjZVwiKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9OQVZJR0FUSU9OX1RPT19NQU5ZX0lURU1TX1NFTEVDVEVEXCIsIFtcblx0XHRcdFx0XHRtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXNcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbmFtZSBvZiB0aGUgcGFnZSBhcyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCByb3V0aW5nIHNlY3Rpb24uXG5cdCAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBwYWdlXG5cdCAqL1xuXHRnZXRSb3V0aW5nVGFyZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdGlmICghdGhpcy5yb3V0aW5nVGFyZ2V0TmFtZSkge1xuXHRcdFx0dGhpcy5yb3V0aW5nVGFyZ2V0TmFtZSA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um91dGluZ1NlcnZpY2UoKS5nZXRUYXJnZXROYW1lRm9yVmlldyh0aGlzLmdldFZpZXcoKSkgPz8gXCJcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMucm91dGluZ1RhcmdldE5hbWU7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGZvcndhcmQgc2V0U2hvd0Zvb3RlciBvbiB0aGUgZmlyc3QgY29udGVudCBvZiB0aGUgdmlldyBpZiByZWNvZ25pemVkLlxuXHQgKiBAcGFyYW0gc2hvd1xuXHQgKi9cblx0c2V0U2hvd0Zvb3RlcihzaG93ID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBwYWdlID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdO1xuXHRcdGlmIChwYWdlLmlzQTxEeW5hbWljUGFnZT4oXCJzYXAuZi5EeW5hbWljUGFnZVwiKSB8fCBwYWdlLmlzQTxPYmplY3RQYWdlTGF5b3V0PihcInNhcC51eGFwLk9iamVjdFBhZ2VMYXlvdXRcIikpIHtcblx0XHRcdHBhZ2Uuc2V0U2hvd0Zvb3RlcihzaG93KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGdldCB0aGUgZm9vdGVyLlxuXHQgKiBAcmV0dXJucyBUaGUgZm9vdGVyIG9mIHRoZSBwYWdlIGlmIGl0IGV4aXN0c1xuXHQgKi9cblx0Z2V0Rm9vdGVyKCk6IENvbnRyb2wgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHBhZ2UgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250ZW50KClbMF07XG5cdFx0aWYgKHBhZ2UuaXNBPER5bmFtaWNQYWdlPihcInNhcC5mLkR5bmFtaWNQYWdlXCIpIHx8IHBhZ2UuaXNBPE9iamVjdFBhZ2VMYXlvdXQ+KFwic2FwLnV4YXAuT2JqZWN0UGFnZUxheW91dFwiKSkge1xuXHRcdFx0cmV0dXJuIHBhZ2UuZ2V0Rm9vdGVyKCkgYXMgdW5rbm93biBhcyBDb250cm9sO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztFQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEsSUFTTUEsY0FBYyxJQUFBQyxJQUFBLEdBRG5CQyxjQUFjLENBQUMsNEJBQTRCLENBQUMsRUFBQUMsS0FBQSxHQUUzQ0MsY0FBYyxDQUFDQyxPQUFPLENB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
@@ -1,8 +1,10 @@
1
+ import type DynamicPage from "sap/f/DynamicPage";
1
2
  import { defineUI5Class, extensible, publicExtension, usingExtension } from "sap/fe/base/ClassSupport";
2
3
  import BaseController from "sap/fe/core/BaseController";
3
4
  import ExtensionAPI from "sap/fe/core/ExtensionAPI";
4
5
  import CollaborativeDraft from "sap/fe/core/controllerextensions/CollaborativeDraft";
5
6
  import EditFlow from "sap/fe/core/controllerextensions/EditFlow";
7
+ import InlineEditFlow from "sap/fe/core/controllerextensions/InlineEditFlow";
6
8
  import IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentBasedNavigation";
7
9
  import InternalIntentBasedNavigation from "sap/fe/core/controllerextensions/InternalIntentBasedNavigation";
8
10
  import InternalRouting from "sap/fe/core/controllerextensions/InternalRouting";
@@ -21,8 +23,10 @@ import MessageBox from "sap/m/MessageBox";
21
23
  import Component from "sap/ui/core/Component";
22
24
  import Library from "sap/ui/core/Lib";
23
25
  import type View from "sap/ui/core/mvc/View";
26
+ import type Control from "sap/ui/mdc/Control";
24
27
  import type JSONModel from "sap/ui/model/json/JSONModel";
25
28
  import type Context from "sap/ui/model/odata/v4/Context";
29
+ import type ObjectPageLayout from "sap/uxap/ObjectPageLayout";
26
30
  import ContextSharing from "./controllerextensions/ContextSharing";
27
31
  import CollaborationManager from "./controllerextensions/cards/CollaborationManager";
28
32
 
@@ -87,6 +91,9 @@ class PageController extends BaseController {
87
91
  @usingExtension(CollaborationManager)
88
92
  collaborationManager!: CollaborationManager;
89
93
 
94
+ @usingExtension(InlineEditFlow)
95
+ inlineEditFlow!: InlineEditFlow;
96
+
90
97
  extension!: Record<string, unknown>;
91
98
 
92
99
  _oView?: View;
@@ -243,6 +250,29 @@ class PageController extends BaseController {
243
250
  }
244
251
  return this.routingTargetName;
245
252
  }
253
+
254
+ /**
255
+ * Method to forward setShowFooter on the first content of the view if recognized.
256
+ * @param show
257
+ */
258
+ setShowFooter(show = false): void {
259
+ const page = this.getView().getContent()[0];
260
+ if (page.isA<DynamicPage>("sap.f.DynamicPage") || page.isA<ObjectPageLayout>("sap.uxap.ObjectPageLayout")) {
261
+ page.setShowFooter(show);
262
+ }
263
+ }
264
+
265
+ /**
266
+ * Method to get the footer.
267
+ * @returns The footer of the page if it exists
268
+ */
269
+ getFooter(): Control | undefined {
270
+ const page = this.getView().getContent()[0];
271
+ if (page.isA<DynamicPage>("sap.f.DynamicPage") || page.isA<ObjectPageLayout>("sap.uxap.ObjectPageLayout")) {
272
+ return page.getFooter() as unknown as Control;
273
+ }
274
+ return undefined;
275
+ }
246
276
  }
247
277
 
248
278
  export default PageController;
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/model/resource/ResourceModel"], function (ClassSupport, UI5ResourceModel) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/fpm/Component", "sap/ui/core/Component"], function (Log, ClassSupport, CommonUtils, FPMComponent, Component) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
5
  sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/converters/ManifestWrapper", "sap/fe/core/converters/MetaModelConverter", "sap/ui/core/UIComponent"], function (ClassSupport, CommonUtils, ManifestWrapper, MetaModelConverter, UIComponent) {
6
6
  "use strict";