@sapui5/sap.fe.core 1.121.2 → 1.123.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 (241) 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 +2 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +1 -2
  5. package/src/sap/fe/core/CommonUtils.js +14 -171
  6. package/src/sap/fe/core/CommonUtils.ts +15 -221
  7. package/src/sap/fe/core/PageController.js +13 -1
  8. package/src/sap/fe/core/PageController.ts +16 -0
  9. package/src/sap/fe/core/TemplateComponent.js +6 -1
  10. package/src/sap/fe/core/TemplateComponent.ts +8 -0
  11. package/src/sap/fe/core/UIProvider.js +23 -0
  12. package/src/sap/fe/core/UIProvider.ts +38 -0
  13. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +97 -43
  14. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +120 -50
  15. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +6 -3
  16. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +12 -18
  17. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +2 -2
  18. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -3
  21. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +1 -0
  23. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +42 -1
  24. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +40 -0
  25. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +5 -2
  26. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +5 -3
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +151 -60
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +165 -68
  29. package/src/sap/fe/core/controllerextensions/HookSupport.js +32 -14
  30. package/src/sap/fe/core/controllerextensions/HookSupport.ts +35 -14
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +5 -17
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -12
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +6 -6
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +15 -10
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +108 -287
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +117 -309
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +6 -2
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +6 -6
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -4
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +17 -110
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +13 -130
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +1 -2
  47. package/src/sap/fe/core/controllerextensions/Recommendations.js +36 -31
  48. package/src/sap/fe/core/controllerextensions/Recommendations.ts +32 -37
  49. package/src/sap/fe/core/controllerextensions/Share.js +7 -7
  50. package/src/sap/fe/core/controllerextensions/Share.ts +6 -6
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +52 -6
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -4
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +32 -46
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +24 -31
  55. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +42 -31
  56. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +6 -0
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +168 -276
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +182 -310
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -2
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +4 -3
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +3 -2
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +74 -52
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +95 -55
  65. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -17
  66. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +10 -23
  67. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +3 -3
  68. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +2 -2
  69. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +225 -0
  70. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +241 -0
  71. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +69 -48
  72. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +56 -33
  73. package/src/sap/fe/core/controls/FormElementWrapper.js +8 -11
  74. package/src/sap/fe/core/controls/FormElementWrapper.ts +9 -0
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +6 -14
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +12 -23
  77. package/src/sap/fe/core/converters/ConverterContext.js +17 -9
  78. package/src/sap/fe/core/converters/ConverterContext.ts +55 -41
  79. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  80. package/src/sap/fe/core/converters/ManifestSettings.ts +19 -5
  81. package/src/sap/fe/core/converters/ManifestWrapper.js +14 -4
  82. package/src/sap/fe/core/converters/ManifestWrapper.ts +21 -10
  83. package/src/sap/fe/core/converters/MetaModelConverter.js +402 -383
  84. package/src/sap/fe/core/converters/MetaModelConverter.ts +538 -338
  85. package/src/sap/fe/core/converters/TemplateConverter.js +4 -2
  86. package/src/sap/fe/core/converters/TemplateConverter.ts +18 -13
  87. package/src/sap/fe/core/converters/annotations/DataField.js +30 -28
  88. package/src/sap/fe/core/converters/annotations/DataField.ts +58 -35
  89. package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -23
  90. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -4
  91. package/src/sap/fe/core/converters/controls/Common/Action.ts +34 -28
  92. package/src/sap/fe/core/converters/controls/Common/Chart.js +37 -33
  93. package/src/sap/fe/core/converters/controls/Common/Chart.ts +64 -46
  94. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -4
  95. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +31 -15
  96. package/src/sap/fe/core/converters/controls/Common/Form.js +6 -4
  97. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -11
  98. package/src/sap/fe/core/converters/controls/Common/KPI.js +5 -3
  99. package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -11
  100. package/src/sap/fe/core/converters/controls/Common/Table.js +197 -101
  101. package/src/sap/fe/core/converters/controls/Common/Table.ts +393 -182
  102. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +4 -5
  103. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +38 -27
  104. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +41 -11
  105. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +112 -45
  106. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +7 -7
  107. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +18 -12
  108. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  109. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +5 -4
  110. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
  111. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +19 -9
  112. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +64 -63
  113. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +109 -100
  114. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -11
  115. package/src/sap/fe/core/converters/helpers/Aggregation.ts +35 -30
  116. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -1
  117. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +12 -9
  118. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
  119. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +1 -1
  120. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  121. package/src/sap/fe/core/converters/helpers/ID.ts +6 -6
  122. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +3 -3
  123. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +11 -6
  124. package/src/sap/fe/core/converters/helpers/Key.js +2 -2
  125. package/src/sap/fe/core/converters/helpers/Key.ts +4 -4
  126. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  127. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -2
  128. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +21 -19
  129. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +43 -31
  130. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  131. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +16 -12
  132. package/src/sap/fe/core/converters/templates/ListReportConverter.js +8 -3
  133. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +41 -21
  134. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +5 -3
  135. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +24 -19
  136. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -2
  137. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +2 -1
  138. package/src/sap/fe/core/filter/DraftEditState.fragment.xml +1 -1
  139. package/src/sap/fe/core/formatters/CollaborationFormatter.js +4 -6
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +5 -4
  141. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -13
  142. package/src/sap/fe/core/formatters/FPMFormatter.ts +11 -10
  143. package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
  144. package/src/sap/fe/core/formatters/FiscalFormat.ts +1 -1
  145. package/src/sap/fe/core/formatters/KPIFormatter.js +4 -7
  146. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -3
  147. package/src/sap/fe/core/formatters/StandardFormatter.js +4 -7
  148. package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
  149. package/src/sap/fe/core/formatters/ValueFormatter.js +35 -6
  150. package/src/sap/fe/core/formatters/ValueFormatter.ts +31 -3
  151. package/src/sap/fe/core/fpm/manifest.json +1 -1
  152. package/src/sap/fe/core/helpers/AppStartupHelper.js +54 -33
  153. package/src/sap/fe/core/helpers/AppStartupHelper.ts +62 -41
  154. package/src/sap/fe/core/helpers/BindingToolkit.js +17 -3
  155. package/src/sap/fe/core/helpers/BindingToolkit.ts +28 -6
  156. package/src/sap/fe/core/helpers/ClassSupport.js +32 -13
  157. package/src/sap/fe/core/helpers/ClassSupport.ts +35 -15
  158. package/src/sap/fe/core/helpers/DeleteHelper.js +71 -61
  159. package/src/sap/fe/core/helpers/DeleteHelper.ts +125 -103
  160. package/src/sap/fe/core/helpers/DraftEditState.js +5 -3
  161. package/src/sap/fe/core/helpers/DraftEditState.ts +3 -1
  162. package/src/sap/fe/core/helpers/FPMHelper.js +43 -46
  163. package/src/sap/fe/core/helpers/FPMHelper.ts +50 -56
  164. package/src/sap/fe/core/helpers/MetaModelFunction.js +77 -53
  165. package/src/sap/fe/core/helpers/MetaModelFunction.ts +78 -57
  166. package/src/sap/fe/core/helpers/ModelHelper.js +10 -4
  167. package/src/sap/fe/core/helpers/ModelHelper.ts +12 -6
  168. package/src/sap/fe/core/helpers/PasteHelper.js +194 -7
  169. package/src/sap/fe/core/helpers/PasteHelper.ts +265 -13
  170. package/src/sap/fe/core/helpers/PromiseKeeper.js +66 -0
  171. package/src/sap/fe/core/helpers/PromiseKeeper.ts +56 -0
  172. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +30 -19
  173. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +34 -22
  174. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  175. package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -2
  176. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +26 -52
  177. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +37 -63
  178. package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
  179. package/src/sap/fe/core/helpers/TitleHelper.ts +17 -14
  180. package/src/sap/fe/core/helpers/TypeGuards.js +27 -3
  181. package/src/sap/fe/core/helpers/TypeGuards.ts +37 -7
  182. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +48 -8
  183. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +40 -9
  184. package/src/sap/fe/core/library.js +1 -1
  185. package/src/sap/fe/core/messagebundle.properties +5 -2
  186. package/src/sap/fe/core/messagebundle_da.properties +1 -1
  187. package/src/sap/fe/core/messagebundle_en.properties +267 -2
  188. package/src/sap/fe/core/messagebundle_sl.properties +1 -1
  189. package/src/sap/fe/core/operationsHelper.js +2 -1
  190. package/src/sap/fe/core/operationsHelper.ts +1 -0
  191. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -3
  192. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +2 -2
  193. package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
  194. package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -2
  195. package/src/sap/fe/core/services/RoutingServiceFactory.js +27 -14
  196. package/src/sap/fe/core/services/RoutingServiceFactory.ts +27 -14
  197. package/src/sap/fe/core/services/ShellServicesFactory.js +49 -12
  198. package/src/sap/fe/core/services/ShellServicesFactory.ts +62 -13
  199. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +156 -82
  200. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +218 -100
  201. package/src/sap/fe/core/services/TelemetryServiceFactory.js +3 -3
  202. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +6 -6
  203. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +3 -2
  204. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
  205. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
  206. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
  207. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  208. package/src/sap/fe/core/templating/CommonFormatters.js +6 -3
  209. package/src/sap/fe/core/templating/CommonFormatters.ts +13 -12
  210. package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
  211. package/src/sap/fe/core/templating/CriticalityFormatters.ts +37 -14
  212. package/src/sap/fe/core/templating/DataFieldFormatters.js +12 -11
  213. package/src/sap/fe/core/templating/DataFieldFormatters.ts +35 -24
  214. package/src/sap/fe/core/templating/DataModelPathHelper.js +22 -18
  215. package/src/sap/fe/core/templating/DataModelPathHelper.ts +61 -51
  216. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  217. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +8 -3
  218. package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
  219. package/src/sap/fe/core/templating/EntityTypeHelper.ts +1 -1
  220. package/src/sap/fe/core/templating/FieldControlHelper.js +3 -3
  221. package/src/sap/fe/core/templating/FieldControlHelper.ts +27 -8
  222. package/src/sap/fe/core/templating/FilterHelper.js +13 -10
  223. package/src/sap/fe/core/templating/FilterHelper.ts +80 -46
  224. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  225. package/src/sap/fe/core/templating/FilterTemplating.ts +2 -2
  226. package/src/sap/fe/core/templating/PropertyFormatters.js +6 -8
  227. package/src/sap/fe/core/templating/PropertyFormatters.ts +11 -11
  228. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  229. package/src/sap/fe/core/templating/PropertyHelper.ts +4 -4
  230. package/src/sap/fe/core/templating/SemanticObjectHelper.js +157 -13
  231. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +182 -16
  232. package/src/sap/fe/core/templating/UIFormatters.js +23 -22
  233. package/src/sap/fe/core/templating/UIFormatters.ts +94 -66
  234. package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
  235. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -2
  236. package/src/sap/fe/core/type/EDM.js +1 -1
  237. package/src/sap/fe/core/type/EDM.ts +2 -2
  238. package/src/sap/fe/core/type/Email.js +1 -1
  239. package/src/sap/fe/core/type/Email.ts +1 -1
  240. package/src/sap/fe/core/type/FiscalDate.js +2 -2
  241. package/src/sap/fe/core/type/FiscalDate.ts +2 -2
@@ -14,7 +14,6 @@ import type PageController from "sap/fe/core/PageController";
14
14
  import ConverterContext from "sap/fe/core/converters/ConverterContext";
15
15
  import type { FilterSettings } from "sap/fe/core/converters/ManifestSettings";
16
16
  import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
17
- import { compileExpression, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
18
17
  import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
19
18
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
20
19
  import SemanticDateOperators from "sap/fe/core/helpers/SemanticDateOperators";
@@ -1195,95 +1194,6 @@ async function fnGetSemanticObjectsFromPath(oMetaModel: ODataMetaModel, sPath: s
1195
1194
  });
1196
1195
  }
1197
1196
 
1198
- async function fnUpdateSemanticTargetsModel(
1199
- aGetLinksPromises: Promise<Link[][]>[],
1200
- aSemanticObjects: SemanticObject[],
1201
- oInternalModelContext: InternalModelContext,
1202
- sCurrentHash: string
1203
- ) {
1204
- type SemanticObjectInfo = { semanticObject: string; path: string; HasTargets: boolean; HasTargetsNotFiltered: boolean };
1205
- return Promise.all(aGetLinksPromises)
1206
- .then(function (aValues) {
1207
- let aLinks: Link[][],
1208
- _oLink,
1209
- _sLinkIntentAction,
1210
- aFinalLinks: LinkDefinition[][] = [];
1211
- let oFinalSemanticObjects: Record<string, SemanticObjectInfo> = {};
1212
- const bIntentHasActions = function (sIntent: string, aActions?: unknown[]) {
1213
- for (const intent in aActions) {
1214
- if (intent === sIntent) {
1215
- return true;
1216
- } else {
1217
- return false;
1218
- }
1219
- }
1220
- };
1221
-
1222
- for (let k = 0; k < aValues.length; k++) {
1223
- aLinks = aValues[k];
1224
- if (aLinks && aLinks.length > 0 && aLinks[0] !== undefined) {
1225
- const oSemanticObject: Record<string, Record<string, SemanticObjectInfo>> = {};
1226
- let oTmp: SemanticObjectInfo;
1227
- let sAlternatePath;
1228
- for (let i = 0; i < aLinks.length; i++) {
1229
- aFinalLinks.push([]);
1230
- let hasTargetsNotFiltered = false;
1231
- let hasTargets = false;
1232
- for (const element of aLinks[i]) {
1233
- _oLink = element;
1234
- _sLinkIntentAction = _oLink && _oLink.intent.split("?")[0].split("-")[1];
1235
-
1236
- if (!(_oLink && _oLink.intent && _oLink.intent.indexOf(sCurrentHash) === 0)) {
1237
- hasTargetsNotFiltered = true;
1238
- if (!bIntentHasActions(_sLinkIntentAction, aSemanticObjects[k].unavailableActions)) {
1239
- aFinalLinks[i].push(_oLink);
1240
- hasTargets = true;
1241
- }
1242
- }
1243
- }
1244
- oTmp = {
1245
- semanticObject: aSemanticObjects[k].semanticObject,
1246
- path: aSemanticObjects[k].path,
1247
- HasTargets: hasTargets,
1248
- HasTargetsNotFiltered: hasTargetsNotFiltered
1249
- };
1250
- if (oSemanticObject[aSemanticObjects[k].semanticObject] === undefined) {
1251
- oSemanticObject[aSemanticObjects[k].semanticObject] = {};
1252
- }
1253
- sAlternatePath = aSemanticObjects[k].path.replace(/\//g, "_");
1254
- if (oSemanticObject[aSemanticObjects[k].semanticObject][sAlternatePath] === undefined) {
1255
- oSemanticObject[aSemanticObjects[k].semanticObject][sAlternatePath] = {} as SemanticObjectInfo;
1256
- }
1257
- oSemanticObject[aSemanticObjects[k].semanticObject][sAlternatePath] = Object.assign(
1258
- oSemanticObject[aSemanticObjects[k].semanticObject][sAlternatePath],
1259
- oTmp
1260
- );
1261
- }
1262
- const sSemanticObjectName = Object.keys(oSemanticObject)[0];
1263
- if (Object.keys(oFinalSemanticObjects).includes(sSemanticObjectName)) {
1264
- oFinalSemanticObjects[sSemanticObjectName] = Object.assign(
1265
- oFinalSemanticObjects[sSemanticObjectName],
1266
- oSemanticObject[sSemanticObjectName]
1267
- );
1268
- } else {
1269
- oFinalSemanticObjects = Object.assign(oFinalSemanticObjects, oSemanticObject);
1270
- }
1271
- aFinalLinks = [];
1272
- }
1273
- }
1274
- if (Object.keys(oFinalSemanticObjects).length > 0) {
1275
- oInternalModelContext.setProperty(
1276
- "semanticsTargets",
1277
- mergeObjects(oFinalSemanticObjects, oInternalModelContext.getProperty("semanticsTargets"))
1278
- );
1279
- return oFinalSemanticObjects;
1280
- }
1281
- })
1282
- .catch(function (oError: unknown) {
1283
- Log.error("fnUpdateSemanticTargetsModel: Cannot read links", oError as string);
1284
- });
1285
- }
1286
-
1287
1197
  async function fnGetSemanticObjectPromise(oMetaModel: ODataMetaModel, sPath: string, sQualifier: string): Promise<SemanticObjectFromPath> {
1288
1198
  return CommonUtils.getSemanticObjectsFromPath(oMetaModel, sPath, sQualifier);
1289
1199
  }
@@ -1315,125 +1225,6 @@ function fnPrepareSemanticObjectsPromises(
1315
1225
  type InternalJSONModel = {
1316
1226
  _getObject(val: string, context?: Context): object;
1317
1227
  };
1318
- async function fnGetSemanticTargetsFromPageModel(oController: PageController, sPageModel: string): Promise<void> {
1319
- const _fnfindValuesHelper = function (
1320
- obj: undefined | null | Record<string, string>[] | Record<string, unknown>,
1321
- key: string,
1322
- list: string[]
1323
- ) {
1324
- if (!obj) {
1325
- return list;
1326
- }
1327
- if (obj instanceof Array) {
1328
- obj.forEach((item) => {
1329
- list = list.concat(_fnfindValuesHelper(item, key, []));
1330
- });
1331
- return list;
1332
- }
1333
- if (obj[key]) {
1334
- list.push(obj[key] as string);
1335
- }
1336
-
1337
- if (typeof obj == "object" && obj !== null) {
1338
- const children = Object.keys(obj);
1339
- if (children.length > 0) {
1340
- for (const element of children) {
1341
- list = list.concat(_fnfindValuesHelper(obj[element] as Record<string, unknown>, key, []));
1342
- }
1343
- }
1344
- }
1345
- return list;
1346
- };
1347
- const _fnfindValues = function (obj: undefined | null | Record<string, string>[] | Record<string, unknown>, key: string) {
1348
- return _fnfindValuesHelper(obj, key, []);
1349
- };
1350
- const _fnDeleteDuplicateSemanticObjects = function (aSemanticObjectPath: string[]) {
1351
- return aSemanticObjectPath.filter(function (value: string, index: number) {
1352
- return aSemanticObjectPath.indexOf(value) === index;
1353
- });
1354
- };
1355
- const oView = oController.getView();
1356
- const oInternalModelContext = oView.getBindingContext("internal") as InternalModelContext;
1357
-
1358
- if (oInternalModelContext) {
1359
- const aSemanticObjectsPromises: Promise<SemanticObjectFromPath>[] = [];
1360
- const oComponent = oController.getOwnerComponent();
1361
- const oAppComponent = Component.getOwnerComponentFor(oComponent) as AppComponent;
1362
- const oMetaModel = oAppComponent.getMetaModel();
1363
- let oPageModel = (oComponent.getModel(sPageModel) as JSONModel).getData();
1364
- if (JSON.stringify(oPageModel) === "{}") {
1365
- oPageModel = (oComponent.getModel(sPageModel) as unknown as InternalJSONModel)._getObject("/", undefined);
1366
- }
1367
- let aSemanticObjectsFound = _fnfindValues(oPageModel, "semanticObjectPath");
1368
- aSemanticObjectsFound = _fnDeleteDuplicateSemanticObjects(aSemanticObjectsFound);
1369
- const oShellServiceHelper = oAppComponent.getShellServices();
1370
- let sCurrentHash = oShellServiceHelper.getHash();
1371
- const aSemanticObjects: SemanticObject[] = [];
1372
- let _oSemanticObject;
1373
-
1374
- if (sCurrentHash && sCurrentHash.includes("?")) {
1375
- // sCurrentHash can contain query string, cut it off!
1376
- sCurrentHash = sCurrentHash.split("?")[0];
1377
- }
1378
-
1379
- fnPrepareSemanticObjectsPromises(oMetaModel, aSemanticObjectsFound, aSemanticObjectsPromises);
1380
-
1381
- if (aSemanticObjectsPromises.length === 0) {
1382
- return Promise.resolve();
1383
- } else {
1384
- Promise.all(aSemanticObjectsPromises)
1385
- .then(async function (aValues) {
1386
- const aGetLinksPromises = [];
1387
- let sSemObjExpression;
1388
- type SemanticObjectResolved = {
1389
- semanticObjectPath: string;
1390
- semanticObjectForGetLinks: { semanticObject: string };
1391
- semanticObject: {
1392
- semanticObject: string;
1393
- };
1394
- unavailableActions: string[];
1395
- };
1396
- const aSemanticObjectsResolved: SemanticObjectResolved[] = aValues.filter(function (element) {
1397
- if (
1398
- element.semanticObject !== undefined &&
1399
- element.semanticObject.semanticObject &&
1400
- typeof element.semanticObject.semanticObject === "object"
1401
- ) {
1402
- sSemObjExpression = compileExpression(pathInModel(element.semanticObject.semanticObject.$Path))!;
1403
- (element as unknown as SemanticObjectResolved).semanticObject.semanticObject = sSemObjExpression;
1404
- element.semanticObjectForGetLinks[0].semanticObject = sSemObjExpression;
1405
- return true;
1406
- } else if (element) {
1407
- return element.semanticObject !== undefined;
1408
- } else {
1409
- return false;
1410
- }
1411
- }) as unknown as SemanticObjectResolved[];
1412
- for (const item of aSemanticObjectsResolved) {
1413
- _oSemanticObject = item;
1414
- if (
1415
- _oSemanticObject &&
1416
- _oSemanticObject.semanticObject &&
1417
- _oSemanticObject.semanticObject.semanticObject.indexOf("{") !== 0
1418
- ) {
1419
- aSemanticObjects.push({
1420
- semanticObject: _oSemanticObject.semanticObject.semanticObject,
1421
- unavailableActions: _oSemanticObject.unavailableActions,
1422
- path: item.semanticObjectPath
1423
- });
1424
- aGetLinksPromises.push(oShellServiceHelper.getLinksWithCache([_oSemanticObject.semanticObjectForGetLinks]));
1425
- }
1426
- }
1427
- return CommonUtils.updateSemanticTargets(aGetLinksPromises, aSemanticObjects, oInternalModelContext, sCurrentHash);
1428
- })
1429
- .catch(function (oError: unknown) {
1430
- Log.error("fnGetSemanticTargetsFromTable: Cannot get Semantic Objects", oError as string);
1431
- });
1432
- }
1433
- } else {
1434
- return Promise.resolve();
1435
- }
1436
- }
1437
1228
 
1438
1229
  function getFilterAllowedExpression(oFilterRestrictionsAnnotation?: MetaModelType<FilterRestrictionsType>) {
1439
1230
  const mAllowedExpressions: _FilterAllowedExpressions = {};
@@ -1479,12 +1270,12 @@ function _fetchPropertiesForNavPath(paths: string[], navPath: string, props: str
1479
1270
  }, props);
1480
1271
  }
1481
1272
  type _FilterAllowedExpressions = Record<string, string[]>;
1482
- type _FilterRestrictions = {
1273
+ export type _FilterRestrictions = {
1483
1274
  RequiredProperties: string[];
1484
1275
  NonFilterableProperties: string[];
1485
1276
  FilterAllowedExpressions: _FilterAllowedExpressions;
1486
1277
  };
1487
- function getFilterRestrictionsByPath(entityPath: string, oContext: ODataMetaModel) {
1278
+ function getFilterRestrictionsByPath(entityPath: string, oContext: ODataMetaModel): _FilterRestrictions {
1488
1279
  const oRet: _FilterRestrictions = {
1489
1280
  RequiredProperties: [],
1490
1281
  NonFilterableProperties: [],
@@ -1612,17 +1403,15 @@ async function templateControlFragment(
1612
1403
  oModifier?: BaseTreeModifier
1613
1404
  ): Promise<Element | UI5Element | Element[] | UI5Element[]> {
1614
1405
  oOptions = oOptions || {};
1615
- if (oModifier) {
1406
+ if (oModifier && typeof sFragmentName === "string") {
1616
1407
  return oModifier.templateControlFragment(sFragmentName, oPreprocessorSettings, oOptions.view).then(function (oFragment) {
1617
1408
  // This is required as Flex returns an HTMLCollection as templating result in XML time.
1618
1409
  return oModifier.targets === "xmlTree" && oFragment.length > 0 ? oFragment[0] : oFragment;
1619
1410
  });
1620
1411
  } else {
1621
- const oFragment = await XMLPreprocessor.process(
1622
- XMLTemplateProcessor.loadTemplate(sFragmentName, "fragment"),
1623
- { name: sFragmentName },
1624
- oPreprocessorSettings
1625
- );
1412
+ const fragmentData =
1413
+ typeof sFragmentName === "string" ? XMLTemplateProcessor.loadTemplate(sFragmentName, "fragment") : sFragmentName;
1414
+ const oFragment = await XMLPreprocessor.process(fragmentData, { name: sFragmentName }, oPreprocessorSettings);
1626
1415
  const oControl = oFragment.firstElementChild;
1627
1416
  if (!!oOptions.isXML && oControl) {
1628
1417
  return oControl;
@@ -1634,11 +1423,18 @@ async function templateControlFragment(
1634
1423
  owner = viewOwner;
1635
1424
  }
1636
1425
  }
1426
+ let containingView: View | undefined;
1427
+ if (oOptions.view && !oOptions.controller) {
1428
+ // this is overall stupid, in case we are coming from the delegate with an xml node instead of a fragment we need to pass the containingView in there (done by the oModifier call for instance)
1429
+ // But in other runtime case where we are here we need to maintain the controller and thus cannot have a containingView...
1430
+ containingView = oOptions.view;
1431
+ }
1637
1432
  return owner.runAsOwner(async () => {
1638
1433
  return Fragment.load({
1639
1434
  id: oOptions.id,
1640
1435
  definition: oFragment as unknown as string,
1641
- controller: oOptions.controller
1436
+ controller: oOptions.controller,
1437
+ containingView: containingView
1642
1438
  });
1643
1439
  });
1644
1440
  }
@@ -1761,7 +1557,7 @@ function getFiltersFromAnnotation(control: Control | MDCChart | MDCTable, annota
1761
1557
 
1762
1558
  function getConverterContextForPath(sMetaPath: string, oMetaModel: ODataMetaModel, sEntitySet: string, oDiagnostics: Diagnostics) {
1763
1559
  const oContext = oMetaModel.createBindingContext(sMetaPath) as ODataV4Context;
1764
- return ConverterContext?.createConverterContextForMacro(sEntitySet, oContext || oMetaModel, oDiagnostics, mergeObjects, undefined);
1560
+ return ConverterContext?.createConverterContextForMacro(sEntitySet, oContext || oMetaModel, oDiagnostics, mergeObjects);
1765
1561
  }
1766
1562
 
1767
1563
  /**
@@ -1830,9 +1626,7 @@ const CommonUtils = {
1830
1626
  getSemanticObjectMapping: getSemanticObjectMapping,
1831
1627
  setSemanticObjectMappings: setSemanticObjectMappings,
1832
1628
  getSemanticObjectPromise: fnGetSemanticObjectPromise,
1833
- getSemanticTargetsFromPageModel: fnGetSemanticTargetsFromPageModel,
1834
1629
  getSemanticObjectsFromPath: fnGetSemanticObjectsFromPath,
1835
- updateSemanticTargets: fnUpdateSemanticTargetsModel,
1836
1630
  waitForContextRequested: waitForContextRequested,
1837
1631
  getFilterRestrictionsByPath: getFilterRestrictionsByPath,
1838
1632
  getSpecificAllowedExpression: getSpecificAllowedExpression,
@@ -66,6 +66,18 @@ sap.ui.define(["sap/fe/core/BaseController", "sap/fe/core/ExtensionAPI", "sap/fe
66
66
  }
67
67
  }
68
68
  }
69
+ Object.defineProperty(_assertThisInitialized(_this), "oView", {
70
+ get() {
71
+ return this._oView;
72
+ },
73
+ set(v) {
74
+ var _this$getOwnerCompone, _this$getOwnerCompone2;
75
+ this._oView = v;
76
+ // On the initial view instantiation from XML the templating process may be finished before the view is completely created
77
+ // When that happens we need to ensure that the root controller is available on the TemplateComponent
78
+ (_this$getOwnerCompone = this.getOwnerComponent()) === null || _this$getOwnerCompone === void 0 ? void 0 : (_this$getOwnerCompone2 = _this$getOwnerCompone.setRootController) === null || _this$getOwnerCompone2 === void 0 ? void 0 : _this$getOwnerCompone2.call(_this$getOwnerCompone, this);
79
+ }
80
+ });
69
81
  return _this;
70
82
  }
71
83
  var _proto = PageController.prototype;
@@ -246,4 +258,4 @@ sap.ui.define(["sap/fe/core/BaseController", "sap/fe/core/ExtensionAPI", "sap/fe
246
258
  }), _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);
247
259
  return PageController;
248
260
  }, false);
249
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsImRlZmluZVVJNUNsYXNzIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiQ29sbGFib3JhdGl2ZURyYWZ0IiwiQ29sbGFib3JhdGlvbk1hbmFnZXIiLCJJbnRlcm5hbFJvdXRpbmciLCJFZGl0RmxvdyIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsIkludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiUGFnZVJlYWR5IiwiTWVzc2FnZUhhbmRsZXIiLCJTaGFyZSIsIlBhZ2luYXRvciIsIlZpZXdTdGF0ZSIsIlBsYWNlaG9sZGVyIiwiU2lkZUVmZmVjdHMiLCJSZWNvbW1lbmRhdGlvbnMiLCJUZWxlbWV0cnkiLCJDb250ZXh0U2hhcmluZyIsInB1YmxpY0V4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkFmdGVyIiwibmFtZSIsIm93blByb3BzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duUHJvcCIsImZuUHJvcCIsImdldE1ldGFkYXRhIiwiYXJncyIsIm93bmVyQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRWaWV3IiwicnVuQXNPd25lciIsImFwcGx5Iiwib25Jbml0Iiwib1VJTW9kZWwiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNb2RlbCIsIm9JbnRlcm5hbE1vZGVsIiwic1BhdGgiLCJnZXRJZCIsInNldFByb3BlcnR5IiwiY29udHJvbHMiLCJjb2xsYWJvcmF0aW9uIiwiYmluZEVsZW1lbnQiLCJwYXRoIiwibW9kZWwiLCJzZXRNb2RlbCIsIm9uQmVmb3JlUmVuZGVyaW5nIiwicGxhY2Vob2xkZXIiLCJhdHRhY2hIaWRlQ2FsbGJhY2siLCJnZXRFeHRlbnNpb25BUEkiLCJpZCIsImV4dGVuc2lvbkFQSSIsIkV4dGVuc2lvbkFQSSIsIm9uUGFnZVJlYWR5IiwiX21QYXJhbWV0ZXJzIiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiYXBwbHlBcHBTdGF0ZSIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIl9nZXRQYWdlTW9kZWwiLCJwYWdlQ29tcG9uZW50Iiwib25PcGVuSW5OZXdUYWJOYXZpZ2F0ZU91dEJvdW5kIiwib3V0Ym91bmRUYXJnZXQiLCJjb250ZXh0cyIsImNyZWF0ZVBhdGgiLCJtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXMiLCJ0aGF0IiwibGVuZ3RoIiwiZm9yRWFjaCIsImNvbnRleHQiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwib25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kIiwiTWVzc2FnZUJveCIsIndhcm5pbmciLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJnZXRUZXh0IiwiQmFzZUNvbnRyb2xsZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlBhZ2VDb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBFeHRlbnNpb25BUEkgZnJvbSBcInNhcC9mZS9jb3JlL0V4dGVuc2lvbkFQSVwiO1xuaW1wb3J0IENvbGxhYm9yYXRpdmVEcmFmdCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvQ29sbGFib3JhdGl2ZURyYWZ0XCI7XG5pbXBvcnQgRWRpdEZsb3cgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0VkaXRGbG93XCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IE1lc3NhZ2VIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9NZXNzYWdlSGFuZGxlclwiO1xuaW1wb3J0IFBhZ2VSZWFkeSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGFnZVJlYWR5XCI7XG5pbXBvcnQgUGFnaW5hdG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QYWdpbmF0b3JcIjtcbmltcG9ydCBQbGFjZWhvbGRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGxhY2Vob2xkZXJcIjtcbmltcG9ydCBSZWNvbW1lbmRhdGlvbnMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1JlY29tbWVuZGF0aW9uc1wiO1xuaW1wb3J0IFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1JvdXRpbmdcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBTaWRlRWZmZWN0cyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCBUZWxlbWV0cnkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1RlbGVtZXRyeVwiO1xuaW1wb3J0IFZpZXdTdGF0ZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgcHVibGljRXh0ZW5zaW9uLCB1c2luZ0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUaXRsZUluZm9ybWF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3Jvb3RWaWV3L1Jvb3RWaWV3QmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBDb250ZXh0U2hhcmluZyBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db250ZXh0U2hhcmluZ1wiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25NYW5hZ2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL2NhcmRzL0NvbGxhYm9yYXRpb25NYW5hZ2VyXCI7XG5cbi8qKlxuICogQmFzZSBjb250cm9sbGVyIGNsYXNzIGZvciB5b3VyIGN1c3RvbSBwYWdlIHVzZWQgaW5zaWRlIGFuIFNBUCBGaW9yaSBlbGVtZW50cyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBUaGlzIGNvbnRyb2xsZXIgcHJvdmlkZXMgcHJlY29uZmlndXJlZCBleHRlbnNpb25zIHRoYXQgd2lsbCBlbnN1cmUgeW91IGhhdmUgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdGllcyByZXF1aXJlZCB0byB1c2UgdGhlIGJ1aWxkaW5nIGJsb2Nrcy5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS44OC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyXCIpXG5jbGFzcyBQYWdlQ29udHJvbGxlciBleHRlbmRzIEJhc2VDb250cm9sbGVyIHtcblx0QHVzaW5nRXh0ZW5zaW9uKFJvdXRpbmcpXG5cdHJvdXRpbmchOiBSb3V0aW5nO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb2xsYWJvcmF0aXZlRHJhZnQpXG5cdGNvbGxhYm9yYXRpdmVEcmFmdCE6IENvbGxhYm9yYXRpdmVEcmFmdDtcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29sbGFib3JhdGlvbk1hbmFnZXIpXG5cdGNvbGxhYm9yYXRpb25NYW5hZ2VyITogQ29sbGFib3JhdGlvbk1hbmFnZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVybmFsUm91dGluZylcblx0X3JvdXRpbmchOiBJbnRlcm5hbFJvdXRpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEVkaXRGbG93KVxuXHRlZGl0RmxvdyE6IEVkaXRGbG93O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbnRlbnRCYXNlZE5hdmlnYXRpb24pXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24pXG5cdF9pbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGFnZVJlYWR5KVxuXHRwYWdlUmVhZHkhOiBQYWdlUmVhZHk7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKE1lc3NhZ2VIYW5kbGVyKVxuXHRtZXNzYWdlSGFuZGxlciE6IE1lc3NhZ2VIYW5kbGVyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihTaGFyZSlcblx0c2hhcmUhOiBTaGFyZTtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGFnaW5hdG9yKVxuXHRwYWdpbmF0b3IhOiBQYWdpbmF0b3I7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFZpZXdTdGF0ZSlcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQbGFjZWhvbGRlcilcblx0cGxhY2Vob2xkZXIhOiBQbGFjZWhvbGRlcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2lkZUVmZmVjdHMpXG5cdF9zaWRlRWZmZWN0cyE6IFNpZGVFZmZlY3RzO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihSZWNvbW1lbmRhdGlvbnMpXG5cdHJlY29tbWVuZGF0aW9ucyE6IFJlY29tbWVuZGF0aW9ucztcblxuXHRAdXNpbmdFeHRlbnNpb24oVGVsZW1ldHJ5KVxuXHR0ZWxlbWV0cnkhOiBUZWxlbWV0cnk7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbnRleHRTaGFyaW5nKVxuXHRjb250ZXh0U2hhcmluZyE6IENvbnRleHRTaGFyaW5nO1xuXG5cdGV4dGVuc2lvbiE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdHByb3RlY3RlZCBleHRlbnNpb25BUEk/OiBFeHRlbnNpb25BUEk7XG5cblx0Y29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0Y29uc3Qgb3duUHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLmNvbnN0cnVjdG9yLnByb3RvdHlwZSk7XG5cdFx0Zm9yIChjb25zdCBvd25Qcm9wIG9mIG93blByb3BzKSB7XG5cdFx0XHRpZiAob3duUHJvcCAhPT0gXCJjb25zdHJ1Y3RvclwiICYmIG93blByb3AgIT09IFwiZ2V0TWV0YWRhdGFcIiAmJiBvd25Qcm9wICE9PSBcImV4dGVuc2lvblwiKSB7XG5cdFx0XHRcdGNvbnN0IGZuUHJvcCA9ICh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXTtcblx0XHRcdFx0aWYgKGZuUHJvcCAmJiB0eXBlb2YgZm5Qcm9wID09PSBcImZ1bmN0aW9uXCIgJiYgIShmblByb3AgYXMgeyBnZXRNZXRhZGF0YT86IEZ1bmN0aW9uIH0pLmdldE1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW293blByb3BdID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3duZXJDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5nZXRWaWV3KCkpO1xuXHRcdFx0XHRcdFx0aWYgKG93bmVyQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvd25lckNvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZm5Qcm9wLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IG9VSU1vZGVsID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChcInVpXCIpLFxuXHRcdFx0b0ludGVybmFsTW9kZWwgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsLFxuXHRcdFx0c1BhdGggPSBgL3BhZ2VzLyR7dGhpcy5nZXRWaWV3KCkuZ2V0SWQoKX1gO1xuXG5cdFx0b1VJTW9kZWwuc2V0UHJvcGVydHkoc1BhdGgsIHtcblx0XHRcdGNvbnRyb2xzOiB7fVxuXHRcdH0pO1xuXHRcdG9JbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KHNQYXRoLCB7XG5cdFx0XHRjb250cm9sczoge30sXG5cdFx0XHRjb2xsYWJvcmF0aW9uOiB7fVxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwidWlcIlxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIlxuXHRcdH0pO1xuXG5cdFx0Ly8gZm9yIHRoZSB0aW1lIGJlaW5nIHByb3ZpZGUgaXQgYWxzbyBwYWdlSW50ZXJuYWwgYXMgc29tZSBtYWNyb3MgYWNjZXNzIGl0IC0gdG8gYmUgcmVtb3ZlZFxuXHRcdHRoaXMuZ2V0VmlldygpLmJpbmRFbGVtZW50KHtcblx0XHRcdHBhdGg6IHNQYXRoLFxuXHRcdFx0bW9kZWw6IFwicGFnZUludGVybmFsXCJcblx0XHR9KTtcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJwYWdlSW50ZXJuYWxcIik7XG5cblx0XHQvLyBhcyB0aGUgbW9kZWwgcHJvcGFnYXRpb24gaGFwcGVucyBhZnRlciBpbml0IGJ1dCB3ZSBhY3R1YWxseSB3YW50IHRvIGFjY2VzcyB0aGUgYmluZGluZyBjb250ZXh0IGluIHRoZVxuXHRcdC8vIGluaXQgcGhhc2UgYWxyZWFkeSBzZXR0aW5nIHRoZSBtb2RlbCBoZXJlXG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob1VJTW9kZWwsIFwidWlcIik7XG5cdFx0dGhpcy5nZXRWaWV3KCkuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucGxhY2Vob2xkZXIuYXR0YWNoSGlkZUNhbGxiYWNrKSB7XG5cdFx0XHR0aGlzLnBsYWNlaG9sZGVyLmF0dGFjaEhpZGVDYWxsYmFjaygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGV4dGVuc2lvbiBBUEkgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBpZCBQUklWQVRFXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGV4dGVuc2lvbiBBUEkuXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0Z2V0RXh0ZW5zaW9uQVBJKGlkPzogc3RyaW5nKTogRXh0ZW5zaW9uQVBJIHtcblx0XHRpZiAoIXRoaXMuZXh0ZW5zaW9uQVBJKSB7XG5cdFx0XHR0aGlzLmV4dGVuc2lvbkFQSSA9IG5ldyBFeHRlbnNpb25BUEkodGhpcywgaWQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5leHRlbnNpb25BUEk7XG5cdH1cblxuXHQvLyBXZSBzcGVjaWZ5IHRoZSBleHRlbnNpYmlsaXR5IGhlcmUgdGhlIHNhbWUgd2F5IGFzIGl0IGlzIGRvbmUgaW4gdGhlIG9iamVjdCBwYWdlIGNvbnRyb2xsZXJcblx0Ly8gc2luY2UgdGhlIHNwZWNpZmljYXRpb24gaGVyZSBvdmVycmlkZXMgaXQgYW5kIGlmIHdlIGRvIG5vdCBzcGVjaWZ5IGFueXRoaW5nIGhlcmUsIHRoZVxuXHQvLyBiZWhhdmlvciBkZWZhdWx0cyB0byBhbiBleGVjdXRlIGluc3RlYWQhXG5cdC8vIFRPRE8gVGhpcyBtYXkgbm90IGJlIGlkZWFsLCBzaW5jZSBpdCBhbHNvIGluZmx1ZW5jZXMgdGhlIGxpc3QgcmVwb3J0IGNvbnRyb2xsZXIgYnV0IGN1cnJlbnRseSBpdCdzIHRoZSBiZXN0IHNvbHV0aW9uLlxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uUGFnZVJlYWR5KF9tUGFyYW1ldGVyczogdW5rbm93bik6IHZvaWQge1xuXHRcdC8vIEFwcGx5IGFwcCBzdGF0ZSBvbmx5IGFmdGVyIHRoZSBwYWdlIGlzIHJlYWR5IHdpdGggdGhlIGZpcnN0IHNlY3Rpb24gc2VsZWN0ZWRcblx0XHR0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldEFwcFN0YXRlSGFuZGxlcigpLmFwcGx5QXBwU3RhdGUoKTtcblx0fVxuXG5cdF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpOiBUaXRsZUluZm9ybWF0aW9uIHtcblx0XHRyZXR1cm4ge307XG5cdH1cblxuXHRfZ2V0UGFnZU1vZGVsKCk6IEpTT05Nb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcGFnZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLmdldFZpZXcoKSk7XG5cdFx0cmV0dXJuIHBhZ2VDb21wb25lbnQ/LmdldE1vZGVsKFwiX3BhZ2VNb2RlbFwiKSBhcyBKU09OTW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbnMgb25lIG9yIG1vcmUgbmV3IHRhYnMgd2l0aCB0aGUgZ2l2ZW4gb3V0Ym91bmQgdGFyZ2V0IGZvciB0aGUgc2VsZWN0ZWQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEBwYXJhbSBvdXRib3VuZFRhcmdldCBUaGUgb3V0Ym91bmQgdGFyZ2V0XG5cdCAqIEBwYXJhbSBjb250ZXh0cyBUaGUgc2VsZWN0ZWQgY29udGV4dHNcblx0ICogQHBhcmFtIGNyZWF0ZVBhdGggVGhlIGNyZWF0ZSBwYXRoXG5cdCAqIEBwYXJhbSBtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXMgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zXG5cdCAqL1xuXHRvbk9wZW5Jbk5ld1RhYk5hdmlnYXRlT3V0Qm91bmQoXG5cdFx0b3V0Ym91bmRUYXJnZXQ6IHN0cmluZyxcblx0XHRjb250ZXh0czogQ29udGV4dFtdLFxuXHRcdGNyZWF0ZVBhdGg6IHN0cmluZyxcblx0XHRtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXM6IG51bWJlclxuXHQpOiB2b2lkIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRpZiAoY29udGV4dHMubGVuZ3RoIDw9IG1heE51bWJlck9mU2VsZWN0ZWRJdGVtcykge1xuXHRcdFx0Y29udGV4dHMuZm9yRWFjaChmdW5jdGlvbiAoY29udGV4dDogQ29udGV4dCkge1xuXHRcdFx0XHR0aGF0Ll9pbnRlbnRCYXNlZE5hdmlnYXRpb24ub25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kKHRoYXQsIG91dGJvdW5kVGFyZ2V0LCBjb250ZXh0LCBjcmVhdGVQYXRoLCBcImV4cGxhY2VcIik7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKFxuXHRcdFx0XHRMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSEuZ2V0VGV4dChcIlRfVEFCTEVfTkFWSUdBVElPTl9UT09fTUFOWV9JVEVNU19TRUxFQ1RFRFwiLCBbXG5cdFx0XHRcdFx0bWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBQYWdlQ29udHJvbGxlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0VBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVJBLElBVU1BLGNBQWMsV0FEbkJDLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxVQUUzQ0MsY0FBYyxDQUFDQyxPQUFPLENBQUMsVUFHdkJELGNBQWMsQ0FBQ0Usa0JBQWtCLENBQUMsVUFHbENGLGNBQWMsQ0FBQ0csb0JBQW9CLENBQUMsVUFHcENILGNBQWMsQ0FBQ0ksZUFBZSxDQUFDLFVBRy9CSixjQUFjLENBQUNLLFFBQVEsQ0FBQyxVQUd4QkwsY0FBYyxDQUFDTSxxQkFBcUIsQ0FBQyxVQUdyQ04sY0FBYyxDQUFDTyw2QkFBNkIsQ0FBQyxVQUc3Q1AsY0FBYyxDQUFDUSxTQUFTLENBQUMsV0FHekJSLGNBQWMsQ0FBQ1MsY0FBYyxDQUFDLFdBRzlCVCxjQUFjLENBQUNVLEtBQUssQ0FBQyxXQUdyQlYs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
261
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlQ29udHJvbGxlciIsImRlZmluZVVJNUNsYXNzIiwidXNpbmdFeHRlbnNpb24iLCJSb3V0aW5nIiwiQ29sbGFib3JhdGl2ZURyYWZ0IiwiQ29sbGFib3JhdGlvbk1hbmFnZXIiLCJJbnRlcm5hbFJvdXRpbmciLCJFZGl0RmxvdyIsIkludGVudEJhc2VkTmF2aWdhdGlvbiIsIkludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiUGFnZVJlYWR5IiwiTWVzc2FnZUhhbmRsZXIiLCJTaGFyZSIsIlBhZ2luYXRvciIsIlZpZXdTdGF0ZSIsIlBsYWNlaG9sZGVyIiwiU2lkZUVmZmVjdHMiLCJSZWNvbW1lbmRhdGlvbnMiLCJUZWxlbWV0cnkiLCJDb250ZXh0U2hhcmluZyIsInB1YmxpY0V4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkFmdGVyIiwibmFtZSIsIm93blByb3BzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duUHJvcCIsImZuUHJvcCIsImdldE1ldGFkYXRhIiwiYXJncyIsIm93bmVyQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRWaWV3IiwicnVuQXNPd25lciIsImFwcGx5IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJfb1ZpZXciLCJzZXQiLCJ2IiwiZ2V0T3duZXJDb21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsIm9uSW5pdCIsIm9VSU1vZGVsIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0TW9kZWwiLCJvSW50ZXJuYWxNb2RlbCIsInNQYXRoIiwiZ2V0SWQiLCJzZXRQcm9wZXJ0eSIsImNvbnRyb2xzIiwiY29sbGFib3JhdGlvbiIsImJpbmRFbGVtZW50IiwicGF0aCIsIm1vZGVsIiwic2V0TW9kZWwiLCJvbkJlZm9yZVJlbmRlcmluZyIsInBsYWNlaG9sZGVyIiwiYXR0YWNoSGlkZUNhbGxiYWNrIiwiZ2V0RXh0ZW5zaW9uQVBJIiwiaWQiLCJleHRlbnNpb25BUEkiLCJFeHRlbnNpb25BUEkiLCJvblBhZ2VSZWFkeSIsIl9tUGFyYW1ldGVycyIsImdldEFwcFN0YXRlSGFuZGxlciIsImFwcGx5QXBwU3RhdGUiLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJfZ2V0UGFnZU1vZGVsIiwicGFnZUNvbXBvbmVudCIsIm9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZCIsIm91dGJvdW5kVGFyZ2V0IiwiY29udGV4dHMiLCJjcmVhdGVQYXRoIiwibWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zIiwidGhhdCIsImxlbmd0aCIsImZvckVhY2giLCJjb250ZXh0IiwiX2ludGVudEJhc2VkTmF2aWdhdGlvbiIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZ2V0VGV4dCIsIkJhc2VDb250cm9sbGVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCBDb2xsYWJvcmF0aXZlRHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0NvbGxhYm9yYXRpdmVEcmFmdFwiO1xuaW1wb3J0IEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgSW50ZXJuYWxSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbFJvdXRpbmdcIjtcbmltcG9ydCBNZXNzYWdlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWVzc2FnZUhhbmRsZXJcIjtcbmltcG9ydCBQYWdlUmVhZHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BhZ2VSZWFkeVwiO1xuaW1wb3J0IFBhZ2luYXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGFnaW5hdG9yXCI7XG5pbXBvcnQgUGxhY2Vob2xkZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BsYWNlaG9sZGVyXCI7XG5pbXBvcnQgUmVjb21tZW5kYXRpb25zIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9SZWNvbW1lbmRhdGlvbnNcIjtcbmltcG9ydCBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgU2hhcmUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NoYXJlXCI7XG5pbXBvcnQgU2lkZUVmZmVjdHMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NpZGVFZmZlY3RzXCI7XG5pbXBvcnQgVGVsZW1ldHJ5IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9UZWxlbWV0cnlcIjtcbmltcG9ydCBWaWV3U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIHB1YmxpY0V4dGVuc2lvbiwgdXNpbmdFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgVGl0bGVJbmZvcm1hdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IENvbnRleHRTaGFyaW5nIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL0NvbnRleHRTaGFyaW5nXCI7XG5pbXBvcnQgQ29sbGFib3JhdGlvbk1hbmFnZXIgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvY2FyZHMvQ29sbGFib3JhdGlvbk1hbmFnZXJcIjtcblxuLyoqXG4gKiBCYXNlIGNvbnRyb2xsZXIgY2xhc3MgZm9yIHlvdXIgY3VzdG9tIHBhZ2UgdXNlZCBpbnNpZGUgYW4gU0FQIEZpb3JpIGVsZW1lbnRzIGFwcGxpY2F0aW9uLlxuICpcbiAqIFRoaXMgY29udHJvbGxlciBwcm92aWRlcyBwcmVjb25maWd1cmVkIGV4dGVuc2lvbnMgdGhhdCB3aWxsIGVuc3VyZSB5b3UgaGF2ZSB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0aWVzIHJlcXVpcmVkIHRvIHVzZSB0aGUgYnVpbGRpbmcgYmxvY2tzLlxuICpcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjg4LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXJcIilcbmNsYXNzIFBhZ2VDb250cm9sbGVyIGV4dGVuZHMgQmFzZUNvbnRyb2xsZXIge1xuXHRAdXNpbmdFeHRlbnNpb24oUm91dGluZylcblx0cm91dGluZyE6IFJvdXRpbmc7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKENvbGxhYm9yYXRpdmVEcmFmdClcblx0Y29sbGFib3JhdGl2ZURyYWZ0ITogQ29sbGFib3JhdGl2ZURyYWZ0O1xuXG5cdEB1c2luZ0V4dGVuc2lvbihDb2xsYWJvcmF0aW9uTWFuYWdlcilcblx0Y29sbGFib3JhdGlvbk1hbmFnZXIhOiBDb2xsYWJvcmF0aW9uTWFuYWdlcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oSW50ZXJuYWxSb3V0aW5nKVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oRWRpdEZsb3cpXG5cdGVkaXRGbG93ITogRWRpdEZsb3c7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0aW50ZW50QmFzZWROYXZpZ2F0aW9uITogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbilcblx0X2ludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdlUmVhZHkpXG5cdHBhZ2VSZWFkeSE6IFBhZ2VSZWFkeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oTWVzc2FnZUhhbmRsZXIpXG5cdG1lc3NhZ2VIYW5kbGVyITogTWVzc2FnZUhhbmRsZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFNoYXJlKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihQYWdpbmF0b3IpXG5cdHBhZ2luYXRvciE6IFBhZ2luYXRvcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oVmlld1N0YXRlKVxuXHR2aWV3U3RhdGUhOiBWaWV3U3RhdGU7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFBsYWNlaG9sZGVyKVxuXHRwbGFjZWhvbGRlciE6IFBsYWNlaG9sZGVyO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihTaWRlRWZmZWN0cylcblx0X3NpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKFJlY29tbWVuZGF0aW9ucylcblx0cmVjb21tZW5kYXRpb25zITogUmVjb21tZW5kYXRpb25zO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihUZWxlbWV0cnkpXG5cdHRlbGVtZXRyeSE6IFRlbGVtZXRyeTtcblxuXHRAdXNpbmdFeHRlbnNpb24oQ29udGV4dFNoYXJpbmcpXG5cdGNvbnRleHRTaGFyaW5nITogQ29udGV4dFNoYXJpbmc7XG5cblx0ZXh0ZW5zaW9uITogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0X29WaWV3PzogVmlldztcblxuXHRwcm90ZWN0ZWQgZXh0ZW5zaW9uQVBJPzogRXh0ZW5zaW9uQVBJO1xuXG5cdGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXG5cdFx0Y29uc3Qgb3duUHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLmNvbnN0cnVjdG9yLnByb3RvdHlwZSk7XG5cdFx0Zm9yIChjb25zdCBvd25Qcm9wIG9mIG93blByb3BzKSB7XG5cdFx0XHRpZiAob3duUHJvcCAhPT0gXCJjb25zdHJ1Y3RvclwiICYmIG93blByb3AgIT09IFwiZ2V0TWV0YWRhdGFcIiAmJiBvd25Qcm9wICE9PSBcImV4dGVuc2lvblwiKSB7XG5cdFx0XHRcdGNvbnN0IGZuUHJvcCA9ICh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvd25Qcm9wXTtcblx0XHRcdFx0aWYgKGZuUHJvcCAmJiB0eXBlb2YgZm5Qcm9wID09PSBcImZ1bmN0aW9uXCIgJiYgIShmblByb3AgYXMgeyBnZXRNZXRhZGF0YT86IEZ1bmN0aW9uIH0pLmdldE1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW293blByb3BdID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3duZXJDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5nZXRWaWV3KCkpO1xuXHRcdFx0XHRcdFx0aWYgKG93bmVyQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvd25lckNvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IGZuUHJvcC5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZm5Qcm9wLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJvVmlld1wiLCB7XG5cdFx0XHRnZXQoKTogVmlldyB8IHVuZGVmaW5lZCB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9vVmlldztcblx0XHRcdH0sXG5cdFx0XHRzZXQodjogVmlldykge1xuXHRcdFx0XHR0aGlzLl9vVmlldyA9IHY7XG5cdFx0XHRcdC8vIE9uIHRoZSBpbml0aWFsIHZpZXcgaW5zdGFudGlhdGlvbiBmcm9tIFhNTCB0aGUgdGVtcGxhdGluZyBwcm9jZXNzIG1heSBiZSBmaW5pc2hlZCBiZWZvcmUgdGhlIHZpZXcgaXMgY29tcGxldGVseSBjcmVhdGVkXG5cdFx0XHRcdC8vIFdoZW4gdGhhdCBoYXBwZW5zIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJvb3QgY29udHJvbGxlciBpcyBhdmFpbGFibGUgb24gdGhlIFRlbXBsYXRlQ29tcG9uZW50XG5cdFx0XHRcdHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKT8uc2V0Um9vdENvbnRyb2xsZXI/Lih0aGlzKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb1VJTW9kZWwgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwidWlcIiksXG5cdFx0XHRvSW50ZXJuYWxNb2RlbCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwsXG5cdFx0XHRzUGF0aCA9IGAvcGFnZXMvJHt0aGlzLmdldFZpZXcoKS5nZXRJZCgpfWA7XG5cblx0XHRvVUlNb2RlbC5zZXRQcm9wZXJ0eShzUGF0aCwge1xuXHRcdFx0Y29udHJvbHM6IHt9XG5cdFx0fSk7XG5cdFx0b0ludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoc1BhdGgsIHtcblx0XHRcdGNvbnRyb2xzOiB7fSxcblx0XHRcdGNvbGxhYm9yYXRpb246IHt9XG5cdFx0fSk7XG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogc1BhdGgsXG5cdFx0XHRtb2RlbDogXCJ1aVwiXG5cdFx0fSk7XG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogc1BhdGgsXG5cdFx0XHRtb2RlbDogXCJpbnRlcm5hbFwiXG5cdFx0fSk7XG5cblx0XHQvLyBmb3IgdGhlIHRpbWUgYmVpbmcgcHJvdmlkZSBpdCBhbHNvIHBhZ2VJbnRlcm5hbCBhcyBzb21lIG1hY3JvcyBhY2Nlc3MgaXQgLSB0byBiZSByZW1vdmVkXG5cdFx0dGhpcy5nZXRWaWV3KCkuYmluZEVsZW1lbnQoe1xuXHRcdFx0cGF0aDogc1BhdGgsXG5cdFx0XHRtb2RlbDogXCJwYWdlSW50ZXJuYWxcIlxuXHRcdH0pO1xuXHRcdHRoaXMuZ2V0VmlldygpLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcInBhZ2VJbnRlcm5hbFwiKTtcblxuXHRcdC8vIGFzIHRoZSBtb2RlbCBwcm9wYWdhdGlvbiBoYXBwZW5zIGFmdGVyIGluaXQgYnV0IHdlIGFjdHVhbGx5IHdhbnQgdG8gYWNjZXNzIHRoZSBiaW5kaW5nIGNvbnRleHQgaW4gdGhlXG5cdFx0Ly8gaW5pdCBwaGFzZSBhbHJlYWR5IHNldHRpbmcgdGhlIG1vZGVsIGhlcmVcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvVUlNb2RlbCwgXCJ1aVwiKTtcblx0XHR0aGlzLmdldFZpZXcoKS5zZXRNb2RlbChvSW50ZXJuYWxNb2RlbCwgXCJpbnRlcm5hbFwiKTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRvbkJlZm9yZVJlbmRlcmluZygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5wbGFjZWhvbGRlci5hdHRhY2hIaWRlQ2FsbGJhY2spIHtcblx0XHRcdHRoaXMucGxhY2Vob2xkZXIuYXR0YWNoSGlkZUNhbGxiYWNrKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZXh0ZW5zaW9uIEFQSSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cblx0ICpcblx0ICogQHBhcmFtIGlkIFBSSVZBVEVcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgZXh0ZW5zaW9uIEFQSS5cblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRnZXRFeHRlbnNpb25BUEkoaWQ/OiBzdHJpbmcpOiBFeHRlbnNpb25BUEkge1xuXHRcdGlmICghdGhpcy5leHRlbnNpb25BUEkpIHtcblx0XHRcdHRoaXMuZXh0ZW5zaW9uQVBJID0gbmV3IEV4dGVuc2lvbkFQSSh0aGlzLCBpZCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmV4dGVuc2lvbkFQSTtcblx0fVxuXG5cdC8vIFdlIHNwZWNpZnkgdGhlIGV4dGVuc2liaWxpdHkgaGVyZSB0aGUgc2FtZSB3YXkgYXMgaXQgaXMgZG9uZSBpbiB0aGUgb2JqZWN0IHBhZ2UgY29udHJvbGxlclxuXHQvLyBzaW5jZSB0aGUgc3BlY2lmaWNhdGlvbiBoZXJlIG92ZXJyaWRlcyBpdCBhbmQgaWYgd2UgZG8gbm90IHNwZWNpZnkgYW55dGhpbmcgaGVyZSwgdGhlXG5cdC8vIGJlaGF2aW9yIGRlZmF1bHRzIHRvIGFuIGV4ZWN1dGUgaW5zdGVhZCFcblx0Ly8gVE9ETyBUaGlzIG1heSBub3QgYmUgaWRlYWwsIHNpbmNlIGl0IGFsc28gaW5mbHVlbmNlcyB0aGUgbGlzdCByZXBvcnQgY29udHJvbGxlciBidXQgY3VycmVudGx5IGl0J3MgdGhlIGJlc3Qgc29sdXRpb24uXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0b25QYWdlUmVhZHkoX21QYXJhbWV0ZXJzOiB1bmtub3duKTogdm9pZCB7XG5cdFx0Ly8gQXBwbHkgYXBwIHN0YXRlIG9ubHkgYWZ0ZXIgdGhlIHBhZ2UgaXMgcmVhZHkgd2l0aCB0aGUgZmlyc3Qgc2VjdGlvbiBzZWxlY3RlZFxuXHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuYXBwbHlBcHBTdGF0ZSgpO1xuXHR9XG5cblx0X2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKCk6IFRpdGxlSW5mb3JtYXRpb24ge1xuXHRcdHJldHVybiB7fTtcblx0fVxuXG5cdF9nZXRQYWdlTW9kZWwoKTogSlNPTk1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBwYWdlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuZ2V0VmlldygpKTtcblx0XHRyZXR1cm4gcGFnZUNvbXBvbmVudD8uZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpIGFzIEpTT05Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVucyBvbmUgb3IgbW9yZSBuZXcgdGFicyB3aXRoIHRoZSBnaXZlbiBvdXRib3VuZCB0YXJnZXQgZm9yIHRoZSBzZWxlY3RlZCBjb250ZXh0cy5cblx0ICpcblx0ICogQHBhcmFtIG91dGJvdW5kVGFyZ2V0IFRoZSBvdXRib3VuZCB0YXJnZXRcblx0ICogQHBhcmFtIGNvbnRleHRzIFRoZSBzZWxlY3RlZCBjb250ZXh0c1xuXHQgKiBAcGFyYW0gY3JlYXRlUGF0aCBUaGUgY3JlYXRlIHBhdGhcblx0ICogQHBhcmFtIG1heE51bWJlck9mU2VsZWN0ZWRJdGVtcyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXNcblx0ICovXG5cdG9uT3BlbkluTmV3VGFiTmF2aWdhdGVPdXRCb3VuZChcblx0XHRvdXRib3VuZFRhcmdldDogc3RyaW5nLFxuXHRcdGNvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0Y3JlYXRlUGF0aDogc3RyaW5nLFxuXHRcdG1heE51bWJlck9mU2VsZWN0ZWRJdGVtczogbnVtYmVyXG5cdCk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdGlmIChjb250ZXh0cy5sZW5ndGggPD0gbWF4TnVtYmVyT2ZTZWxlY3RlZEl0ZW1zKSB7XG5cdFx0XHRjb250ZXh0cy5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZXh0OiBDb250ZXh0KSB7XG5cdFx0XHRcdHRoYXQuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQodGhhdCwgb3V0Ym91bmRUYXJnZXQsIGNvbnRleHQsIGNyZWF0ZVBhdGgsIFwiZXhwbGFjZVwiKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94Lndhcm5pbmcoXG5cdFx0XHRcdExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiVF9UQUJMRV9OQVZJR0FUSU9OX1RPT19NQU5ZX0lURU1TX1NFTEVDVEVEXCIsIFtcblx0XHRcdFx0XHRtYXhOdW1iZXJPZlNlbGVjdGVkSXRlbXNcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhZ2VDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7RUE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUkEsSUFVTUEsY0FBYyxXQURuQkMsY0FBYyxDQUFDLDRCQUE0QixDQUFDLFVBRTNDQyxjQUFjLENBQUNDLE9BQU8sQ0FBQyxVQUd2QkQsY0FBYyxDQUFDRSxrQkFBa0IsQ0FBQyxVQUdsQ0YsY0FBYyxDQUFDRyxvQkFBb0IsQ0FBQyxVQUdwQ0gsY0FBYyxDQUFDSSxlQUFlLENBQUMsVUFHL0JKLGNBQWMsQ0FBQ0ssUUFBUSxDQUFDLFVBR3hCTCxjQUFjLENBQUNNLHFCQUFxQixDQUFDLFVBR3JDTixjQUFjLENBQUNPLDZCQUE2QixDQUFDLFVBRzdDUCxjQUFjLENBQUNRLFNBQVMsQ0FBQyxXQUd6QlIsY0FBYyxDQUFDUyxjQUFjLENBQUMsV0FHOUJULGNBQWMsQ0FBQ1UsS0FBSyxDQUFDLFdBR3JCVixjQUFjLENBQUNXLFNBQVMsQ0FBQyxXQUd6QlgsY0FBYyxDQUFDWSxTQUFTLENBQUMsV0FHekJaLGNBQWMsQ0FBQ2EsV0FBVyxDQUFDLFdBRzNCYixjQUFjLENBQUNjLFdBQVcsQ0FBQyxXQUczQmQsY0FBYyxDQUFDZSxlQUFlLENBQUMsV0FHL0JmLGNBQWMsQ0FBQ2dCLFNBQVMsQ0FBQyxXQUd6QmhCLGNBQWMsQ0FBQ2lCLGNBQWMsQ0FBQyxXQTBDOUJDLGVBQWUsRUFBRSxXQW1DakJBLGVBQWUsRUFBRSxXQWNqQkEsZUFBZSxFQUFFLFdBWWpCQSxlQUFl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
@@ -21,6 +21,7 @@ import MessageBox from "sap/m/MessageBox";
21
21
  import Component from "sap/ui/core/Component";
22
22
  import Library from "sap/ui/core/Lib";
23
23
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
24
+ import type View from "sap/ui/core/mvc/View";
24
25
  import type JSONModel from "sap/ui/model/json/JSONModel";
25
26
  import type Context from "sap/ui/model/odata/v4/Context";
26
27
  import ContextSharing from "./controllerextensions/ContextSharing";
@@ -90,10 +91,13 @@ class PageController extends BaseController {
90
91
 
91
92
  extension!: Record<string, unknown>;
92
93
 
94
+ _oView?: View;
95
+
93
96
  protected extensionAPI?: ExtensionAPI;
94
97
 
95
98
  constructor(name: string) {
96
99
  super(name);
100
+
97
101
  const ownProps = Object.getOwnPropertyNames(this.constructor.prototype);
98
102
  for (const ownProp of ownProps) {
99
103
  if (ownProp !== "constructor" && ownProp !== "getMetadata" && ownProp !== "extension") {
@@ -110,6 +114,18 @@ class PageController extends BaseController {
110
114
  }
111
115
  }
112
116
  }
117
+
118
+ Object.defineProperty(this, "oView", {
119
+ get(): View | undefined {
120
+ return this._oView;
121
+ },
122
+ set(v: View) {
123
+ this._oView = v;
124
+ // On the initial view instantiation from XML the templating process may be finished before the view is completely created
125
+ // When that happens we need to ensure that the root controller is available on the TemplateComponent
126
+ this.getOwnerComponent()?.setRootController?.(this);
127
+ }
128
+ });
113
129
  }
114
130
 
115
131
  @publicExtension()
@@ -105,11 +105,16 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/ClassSupport", "s
105
105
  _proto.getAppComponent = function getAppComponent() {
106
106
  return this.oAppComponent;
107
107
  };
108
+ _proto.setRootController = function setRootController(controller) {
109
+ this._rootController = controller;
110
+ };
108
111
  _proto.getRootController = function getRootController() {
109
112
  const rootControl = this.getRootControl();
110
113
  let rootController;
111
114
  if (rootControl && rootControl.getController) {
112
115
  rootController = rootControl.getController();
116
+ } else {
117
+ rootController = this._rootController;
113
118
  }
114
119
  return rootController;
115
120
  };
@@ -244,4 +249,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/ClassSupport", "s
244
249
  })), _class2)) || _class);
245
250
  return TemplateComponent;
246
251
  }, false);
247
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZUNvbXBvbmVudCIsImRlZmluZVVJNUNsYXNzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiZXZlbnQiLCJzZXRDb250YWluZXIiLCJvQ29udGFpbmVyIiwiZmlyZUV2ZW50IiwiY29udGFpbmVyIiwiaW5pdCIsIm9BcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsIm9TdGF0ZUNoYW5nZUhhbmRsZXIiLCJvRXZlbnQiLCJvQ29udHJvbCIsImdldFBhcmFtZXRlciIsImlzQSIsIm9NYWNyb0FQSSIsImdldFBhcmVudCIsImZpcmVTdGF0ZUNoYW5nZSIsIlN0YXRlVXRpbCIsImRldGFjaFN0YXRlQ2hhbmdlIiwiYXR0YWNoU3RhdGVDaGFuZ2UiLCJnZXRFeHRlbnNpb25Db21wb25lbnQiLCJnZXRSb290Q29udHJvbGxlciIsInJvb3RDb250cm9sIiwiZ2V0Um9vdENvbnRyb2wiLCJyb290Q29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvblBhZ2VSZWFkeSIsIm1QYXJhbWV0ZXJzIiwiZ2V0TmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24iLCJzVGFyZ2V0UGF0aCIsIm1OYXZpZ2F0aW9uIiwibmF2aWdhdGlvbiIsImdldFZpZXdEYXRhIiwibVByb3BlcnRpZXMiLCJnZXRNZXRhZGF0YSIsImdldEFsbFByb3BlcnRpZXMiLCJvVmlld0RhdGEiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwibVZpZXdEYXRhIiwic1Byb3BlcnR5TmFtZSIsImdldCIsInByZXByb2Nlc3NvckNvbnRleHQiLCJmY2xFbmFibGVkIiwiX2lzRmNsRW5hYmxlZCIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsImdldEV4dGVuc2lvbkFQSSIsIlVJQ29tcG9uZW50Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUZW1wbGF0ZUNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25UYXJnZXRDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRpdGxlSW5mb3JtYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb21wb25lbnRDb250YWluZXIgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudENvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9VSUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBJQXN5bmNDb250ZW50Q3JlYXRpb24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgQmFzZUNvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25Db25maWd1cmF0aW9uID0ge1xuXHRkZXRhaWw6IHtcblx0XHRyb3V0ZTogc3RyaW5nO1xuXHRcdHBhcmFtZXRlcnM6IHVua25vd247XG5cdFx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdFx0b3V0Ym91bmREZXRhaWw/OiBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbltcIm91dGJvdW5kRGV0YWlsXCJdO1xuXHR9O1xuXHRjcmVhdGU6IHtcblx0XHRyb3V0ZTogc3RyaW5nO1xuXHRcdHBhcmFtZXRlcnM6IHVua25vd247XG5cdFx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdFx0b3V0Ym91bmREZXRhaWw/OiBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbltcIm91dGJvdW5kRGV0YWlsXCJdO1xuXHR9O1xufTtcblxuZXhwb3J0IHR5cGUgWE1MUHJlcHJvY2Vzc29yQ29udGV4dCA9IHtcblx0YmluZGluZ0NvbnRleHRzOiBSZWNvcmQ8c3RyaW5nLCBCYXNlQ29udGV4dCB8IG51bGw+O1xuXHRtb2RlbHM6IFJlY29yZDxzdHJpbmcsIE1vZGVsPjtcblx0ZnVsbENvbnRleHRQYXRoOiBzdHJpbmc7XG5cdGdldENvbnZlcnRlZE1ldGFkYXRhOiAoKSA9PiBDb252ZXJ0ZWRNZXRhZGF0YTtcblx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG59O1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKVxuY2xhc3MgVGVtcGxhdGVDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudCBpbXBsZW1lbnRzIElBc3luY0NvbnRlbnRDcmVhdGlvbiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JQXN5bmNDb250ZW50Q3JlYXRpb25cIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JQXN5bmNDb250ZW50Q3JlYXRpb24gPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBOYW1lIG9mIHRoZSBPRGF0YSBlbnRpdHkgc2V0XG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IG51bGwgfSlcblx0ZW50aXR5U2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuXHQvKipcblx0ICogQ29udGV4dCBQYXRoIGZvciByZW5kZXJpbmcgdGhlIHRlbXBsYXRlXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IG51bGwgfSlcblx0Y29udGV4dFBhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0cHJlcHJvY2Vzc29yQ29udGV4dD86IFhNTFByZXByb2Nlc3NvckNvbnRleHQ7XG5cblx0LyoqXG5cdCAqIFRoZSBwYXR0ZXJuIGZvciB0aGUgYmluZGluZyBjb250ZXh0IHRvIGJlIGNyZWF0ZSBiYXNlZCBvbiB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSBuYXZpZ2F0aW9uXG5cdCAqIElmIG5vdCBwcm92aWRlZCB3ZSdsbCBkZWZhdWx0IHRvIHdoYXQgd2FzIHBhc3NlZCBpbiB0aGUgVVJMXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGJpbmRpbmdDb250ZXh0UGF0dGVybiE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWFwIG9mIHVzZWQgT0RhdGEgbmF2aWdhdGlvbnMgYW5kIGl0cyByb3V0aW5nIHRhcmdldHNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0bmF2aWdhdGlvbiE6IFJlY29yZDxzdHJpbmcsIE5hdmlnYXRpb25Db25maWd1cmF0aW9uPjtcblxuXHQvKipcblx0ICogRW5oYW5jZSB0aGUgaTE4biBidW5kbGUgdXNlZCBmb3IgdGhpcyBwYWdlIHdpdGggb25lIG9yIG1vcmUgYXBwIHNwZWNpZmljIGkxOG4gcmVzb3VyY2UgYnVuZGxlcyBvciByZXNvdXJjZSBtb2RlbHNcblx0ICogb3IgYSBjb21iaW5hdGlvbiBvZiBib3RoLiBUaGUgbGFzdCByZXNvdXJjZSBidW5kbGUvbW9kZWwgaXMgZ2l2ZW4gaGlnaGVzdCBwcmlvcml0eVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdbXVwiIH0pXG5cdGVuaGFuY2VJMThuITogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIERlZmluZSBjb250cm9sIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBzZXR0aW5nc1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdC8qKlxuXHQgKiBBZGp1c3RzIHRoZSB0ZW1wbGF0ZSBjb250ZW50XG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdGNvbnRlbnQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHQvKipcblx0ICogV2hldGhlciBvciBub3QgeW91IGNhbiByZWFjaCB0aGlzIHBhZ2UgZGlyZWN0bHkgdGhyb3VnaCBzZW1hbnRpYyBib29rbWFya3Ncblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGFsbG93RGVlcExpbmtpbmchOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBjb250ZXh0IHBhdGggb24gdGhlIGNvbXBvbmVudCB0aGF0IGlzIHJlZnJlc2hlZCB3aGVuIHRoZSBhcHAgaXMgcmVzdG9yZWQgdXNpbmcga2VlcCBhbGl2ZSBtb2RlXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdHJlZnJlc2hTdHJhdGVneU9uQXBwUmVzdG9yZTogdW5rbm93bjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHZpZXdUeXBlID0gXCJYTUxcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHZpZXdOYW1lPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0X2pzeFZpZXdOYW1lID0gXCJcIjtcblxuXHRAZXZlbnQoKVxuXHRjb250YWluZXJEZWZpbmVkITogRnVuY3Rpb247XG5cblx0QGV2ZW50KClcblx0aGVyb2VzQmF0Y2hSZWNlaXZlZCE6IEZ1bmN0aW9uO1xuXG5cdEBldmVudCgpXG5cdHdvcmtlcnNCYXRjaFJlY2VpdmVkITogRnVuY3Rpb247XG5cblx0cHJvdGVjdGVkIG9BcHBDb21wb25lbnQhOiBBcHBDb21wb25lbnQ7XG5cblx0c2V0Q29udGFpbmVyKG9Db250YWluZXI6IENvbXBvbmVudENvbnRhaW5lcik6IHRoaXMge1xuXHRcdHN1cGVyLnNldENvbnRhaW5lcihvQ29udGFpbmVyKTtcblx0XHR0aGlzLmZpcmVFdmVudChcImNvbnRhaW5lckRlZmluZWRcIiwgeyBjb250YWluZXI6IG9Db250YWluZXIgfSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzKTtcblx0XHRzdXBlci5pbml0KCk7XG5cdFx0Y29uc3Qgb1N0YXRlQ2hhbmdlSGFuZGxlciA9IGZ1bmN0aW9uIChvRXZlbnQ6IEV2ZW50PHsgY29udHJvbDogQ29udHJvbCB9Pik6IHZvaWQge1xuXHRcdFx0Y29uc3Qgb0NvbnRyb2wgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29udHJvbFwiKTtcblx0XHRcdGlmIChcblx0XHRcdFx0b0NvbnRyb2wuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikgfHxcblx0XHRcdFx0b0NvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSB8fFxuXHRcdFx0XHRvQ29udHJvbC5pc0E8Q2hhcnQ+KFwic2FwLnVpLm1kYy5DaGFydFwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IG9NYWNyb0FQSSA9IG9Db250cm9sLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgeyBmaXJlU3RhdGVDaGFuZ2U6IEV2ZW50SGFuZGxlciB9O1xuXHRcdFx0XHRpZiAob01hY3JvQVBJPy5maXJlU3RhdGVDaGFuZ2UpIHtcblx0XHRcdFx0XHRvTWFjcm9BUEkuZmlyZVN0YXRlQ2hhbmdlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHRcdFN0YXRlVXRpbC5kZXRhY2hTdGF0ZUNoYW5nZShvU3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0XHRTdGF0ZVV0aWwuYXR0YWNoU3RhdGVDaGFuZ2Uob1N0YXRlQ2hhbmdlSGFuZGxlcik7XG5cdH1cblxuXHQvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgVUk1IGNvcmUgdG8gYWNjZXNzIHRvIHRoZSBjb21wb25lbnQgY29udGFpbmluZyB0aGUgY3VzdG9taXppbmcgY29uZmlndXJhdGlvbi5cblx0Ly8gYXMgY29udHJvbGxlciBleHRlbnNpb25zIGFyZSBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBmb3IgdGhlIGFwcCBjb21wb25lbnQgYW5kIG5vdCBmb3IgdGhlXG5cdC8vIHRlbXBsYXRlIGNvbXBvbmVudCB3ZSByZXR1cm4gdGhlIGFwcCBjb21wb25lbnQuXG5cdGdldEV4dGVuc2lvbkNvbXBvbmVudCgpOiBBcHBDb21wb25lbnQge1xuXHRcdHJldHVybiB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdH1cblxuXHRnZXRBcHBDb21wb25lbnQoKTogQXBwQ29tcG9uZW50IHtcblx0XHRyZXR1cm4gdGhpcy5vQXBwQ29tcG9uZW50O1xuXHR9XG5cblx0Z2V0Um9vdENvbnRyb2xsZXIoKTogUGFnZUNvbnRyb2xsZXIgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHJvb3RDb250cm9sOiBWaWV3ID0gdGhpcy5nZXRSb290Q29udHJvbCgpO1xuXHRcdGxldCByb290Q29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHJvb3RDb250cm9sICYmIHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIpIHtcblx0XHRcdHJvb3RDb250cm9sbGVyID0gcm9vdENvbnRyb2wuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdH1cblx0XHRyZXR1cm4gcm9vdENvbnRyb2xsZXI7XG5cdH1cblxuXHRvblBhZ2VSZWFkeShtUGFyYW1ldGVyczogdW5rbm93bik6IHZvaWQge1xuXHRcdGNvbnN0IHJvb3RDb250cm9sbGVyID0gdGhpcy5nZXRSb290Q29udHJvbGxlcigpO1xuXHRcdGlmIChyb290Q29udHJvbGxlciAmJiByb290Q29udHJvbGxlci5vblBhZ2VSZWFkeSkge1xuXHRcdFx0cm9vdENvbnRyb2xsZXIub25QYWdlUmVhZHkobVBhcmFtZXRlcnMpO1xuXHRcdH1cblx0fVxuXG5cdGdldE5hdmlnYXRpb25Db25maWd1cmF0aW9uKHNUYXJnZXRQYXRoOiBzdHJpbmcpOiBOYXZpZ2F0aW9uQ29uZmlndXJhdGlvbiB7XG5cdFx0Y29uc3QgbU5hdmlnYXRpb24gPSB0aGlzLm5hdmlnYXRpb247XG5cdFx0cmV0dXJuIG1OYXZpZ2F0aW9uW3NUYXJnZXRQYXRoXTtcblx0fVxuXG5cdGdldFZpZXdEYXRhKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0XHRjb25zdCBtUHJvcGVydGllcyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhID0gT2JqZWN0LmtleXMobVByb3BlcnRpZXMpLnJlZHVjZSgobVZpZXdEYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgc1Byb3BlcnR5TmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRtVmlld0RhdGFbc1Byb3BlcnR5TmFtZV0gPSBtUHJvcGVydGllc1tzUHJvcGVydHlOYW1lXS5nZXQhKHRoaXMpO1xuXHRcdFx0cmV0dXJuIG1WaWV3RGF0YTtcblx0XHR9LCB7fSk7XG5cdFx0ZGVsZXRlIG9WaWV3RGF0YS5wcmVwcm9jZXNzb3JDb250ZXh0O1xuXHRcdC8vIEFjY2VzcyB0aGUgaW50ZXJuYWwgX2lzRmNsRW5hYmxlZCB3aGljaCB3aWxsIGJlIHRoZXJlXG5cdFx0b1ZpZXdEYXRhLmZjbEVuYWJsZWQgPSB0aGlzLm9BcHBDb21wb25lbnQuX2lzRmNsRW5hYmxlZCgpO1xuXG5cdFx0cmV0dXJuIG9WaWV3RGF0YTtcblx0fVxuXG5cdF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpOiBUaXRsZUluZm9ybWF0aW9uIHtcblx0XHRjb25zdCByb290Q29udHJvbCA9IHRoaXMuZ2V0Um9vdENvbnRyb2woKTtcblx0XHRpZiAocm9vdENvbnRyb2wgJiYgcm9vdENvbnRyb2wuZ2V0Q29udHJvbGxlcigpICYmIHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKS5fZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24pIHtcblx0XHRcdHJldHVybiByb290Q29udHJvbC5nZXRDb250cm9sbGVyKCkuX2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7fSBhcyBUaXRsZUluZm9ybWF0aW9uO1xuXHRcdH1cblx0fVxuXG5cdGdldEV4dGVuc2lvbkFQSSgpOiBFeHRlbnNpb25BUEkge1xuXHRcdHJldHVybiB0aGlzLmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpLmdldEV4dGVuc2lvbkFQSSgpO1xuXHR9XG59XG5pbnRlcmZhY2UgVGVtcGxhdGVDb21wb25lbnQge1xuXHQvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBpZGVhbGx5IGJlIGhhbmRsZWQgYnkgdGhlIGVkaXRmbG93L3JvdXRpbmcgd2l0aG91dCB0aGUgbmVlZCB0byBoYXZlIHRoaXMgbWV0aG9kIGluIHRoZSBvYmplY3QgcGFnZSAtIGZvciBub3cga2VlcCBpdCBoZXJlXG5cdGNyZWF0ZURlZmVycmVkQ29udGV4dD8oXG5cdFx0c1BhdGg6IHN0cmluZyxcblx0XHRvTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcgfCB1bmRlZmluZWQsXG5cdFx0cGFyZW50Q29udGV4dDogQ29udGV4dCB8IHVuZGVmaW5lZCxcblx0XHRkYXRhOiBvYmplY3QgfCB1bmRlZmluZWQsXG5cdFx0YkFjdGlvbkNyZWF0ZTogYm9vbGVhblxuXHQpOiB2b2lkO1xuXHRpc09wZW5JbkVkaXRNb2RlKCk6IGJvb2xlYW47XG5cdGdldFJvb3RDb250cm9sKCk6IHsgZ2V0Q29udHJvbGxlcigpOiBQYWdlQ29udHJvbGxlciB9ICYgVmlldztcblx0ZXh0ZW5kUGFnZURlZmluaXRpb24/KHBhZ2VEZWZpbml0aW9uOiB7fSwgY29udmVydGVyQ29udGV4dD86IENvbnZlcnRlckNvbnRleHQpOiB7fTtcblx0Z2V0TW9kZWwoKTogT0RhdGFNb2RlbDtcblx0Z2V0TW9kZWwobW9kZWxOYW1lOiBcIl9wYWdlTW9kZWxcIik6IEpTT05Nb2RlbDtcblx0Z2V0TW9kZWwobW9kZWxOYW1lOiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBkZWZhdWx0IFRlbXBsYXRlQ29tcG9uZW50O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7TUFtRE1BLGlCQUFpQixXQUR0QkMsY0FBYyxDQUFDLCtCQUErQixDQUFDLFVBRTlDQyxrQkFBa0IsQ0FBQyxtQ0FBbUMsQ0FBQyxVQU12REMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVDLFlBQVksRUFBRTtFQUFLLENBQUMsQ0FBQyxVQU1oREYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVDLFlBQVksRUFBRTtFQUFLLENBQUMsQ0FBQyxVQUdoREYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxVQU81QkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxVQU01QkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxVQU81QkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFXLENBQUMsQ0FBQyxVQU05QkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxXQU01QkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMs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T0FFUSxJQUFJO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FNM0IsSUFBSTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtNQUFBLE9BTUYsSUFBSTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FrRHRCLEtBQUs7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FNRCxFQUFFO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtFQUFBLE9BaUhIdEQsaUJBQWlCO0FBQUEifQ==
252
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZUNvbXBvbmVudCIsImRlZmluZVVJNUNsYXNzIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiZXZlbnQiLCJzZXRDb250YWluZXIiLCJvQ29udGFpbmVyIiwiZmlyZUV2ZW50IiwiY29udGFpbmVyIiwiaW5pdCIsIm9BcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsIm9TdGF0ZUNoYW5nZUhhbmRsZXIiLCJvRXZlbnQiLCJvQ29udHJvbCIsImdldFBhcmFtZXRlciIsImlzQSIsIm9NYWNyb0FQSSIsImdldFBhcmVudCIsImZpcmVTdGF0ZUNoYW5nZSIsIlN0YXRlVXRpbCIsImRldGFjaFN0YXRlQ2hhbmdlIiwiYXR0YWNoU3RhdGVDaGFuZ2UiLCJnZXRFeHRlbnNpb25Db21wb25lbnQiLCJzZXRSb290Q29udHJvbGxlciIsImNvbnRyb2xsZXIiLCJfcm9vdENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsInJvb3RDb250cm9sIiwiZ2V0Um9vdENvbnRyb2wiLCJyb290Q29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJvblBhZ2VSZWFkeSIsIm1QYXJhbWV0ZXJzIiwiZ2V0TmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24iLCJzVGFyZ2V0UGF0aCIsIm1OYXZpZ2F0aW9uIiwibmF2aWdhdGlvbiIsImdldFZpZXdEYXRhIiwibVByb3BlcnRpZXMiLCJnZXRNZXRhZGF0YSIsImdldEFsbFByb3BlcnRpZXMiLCJvVmlld0RhdGEiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwibVZpZXdEYXRhIiwic1Byb3BlcnR5TmFtZSIsImdldCIsInByZXByb2Nlc3NvckNvbnRleHQiLCJmY2xFbmFibGVkIiwiX2lzRmNsRW5hYmxlZCIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsImdldEV4dGVuc2lvbkFQSSIsIlVJQ29tcG9uZW50Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUZW1wbGF0ZUNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25UYXJnZXRDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRpdGxlSW5mb3JtYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb21wb25lbnRDb250YWluZXIgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudENvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9VSUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBJQXN5bmNDb250ZW50Q3JlYXRpb24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgQmFzZUNvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25Db25maWd1cmF0aW9uID0ge1xuXHRkZXRhaWw6IHtcblx0XHRyb3V0ZTogc3RyaW5nO1xuXHRcdHBhcmFtZXRlcnM6IHVua25vd247XG5cdFx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdFx0b3V0Ym91bmREZXRhaWw/OiBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbltcIm91dGJvdW5kRGV0YWlsXCJdO1xuXHR9O1xuXHRjcmVhdGU6IHtcblx0XHRyb3V0ZTogc3RyaW5nO1xuXHRcdHBhcmFtZXRlcnM6IHVua25vd247XG5cdFx0b3V0Ym91bmQ/OiBzdHJpbmc7XG5cdFx0b3V0Ym91bmREZXRhaWw/OiBOYXZpZ2F0aW9uVGFyZ2V0Q29uZmlndXJhdGlvbltcIm91dGJvdW5kRGV0YWlsXCJdO1xuXHR9O1xufTtcblxuZXhwb3J0IHR5cGUgWE1MUHJlcHJvY2Vzc29yQ29udGV4dCA9IHtcblx0YmluZGluZ0NvbnRleHRzOiBSZWNvcmQ8c3RyaW5nLCBCYXNlQ29udGV4dCB8IG51bGw+O1xuXHRtb2RlbHM6IFJlY29yZDxzdHJpbmcsIE1vZGVsPjtcblx0ZnVsbENvbnRleHRQYXRoOiBzdHJpbmc7XG5cdGdldENvbnZlcnRlZE1ldGFkYXRhOiAoKSA9PiBDb252ZXJ0ZWRNZXRhZGF0YTtcblx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG59O1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKVxuY2xhc3MgVGVtcGxhdGVDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudCBpbXBsZW1lbnRzIElBc3luY0NvbnRlbnRDcmVhdGlvbiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JQXN5bmNDb250ZW50Q3JlYXRpb25cIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JQXN5bmNDb250ZW50Q3JlYXRpb24gPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBOYW1lIG9mIHRoZSBPRGF0YSBlbnRpdHkgc2V0XG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IG51bGwgfSlcblx0ZW50aXR5U2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuXHQvKipcblx0ICogQ29udGV4dCBQYXRoIGZvciByZW5kZXJpbmcgdGhlIHRlbXBsYXRlXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IG51bGwgfSlcblx0Y29udGV4dFBhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0cHJlcHJvY2Vzc29yQ29udGV4dD86IFhNTFByZXByb2Nlc3NvckNvbnRleHQ7XG5cblx0LyoqXG5cdCAqIFRoZSBwYXR0ZXJuIGZvciB0aGUgYmluZGluZyBjb250ZXh0IHRvIGJlIGNyZWF0ZSBiYXNlZCBvbiB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSBuYXZpZ2F0aW9uXG5cdCAqIElmIG5vdCBwcm92aWRlZCB3ZSdsbCBkZWZhdWx0IHRvIHdoYXQgd2FzIHBhc3NlZCBpbiB0aGUgVVJMXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGJpbmRpbmdDb250ZXh0UGF0dGVybiE6IHN0cmluZztcblxuXHQvKipcblx0ICogTWFwIG9mIHVzZWQgT0RhdGEgbmF2aWdhdGlvbnMgYW5kIGl0cyByb3V0aW5nIHRhcmdldHNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0bmF2aWdhdGlvbiE6IFJlY29yZDxzdHJpbmcsIE5hdmlnYXRpb25Db25maWd1cmF0aW9uPjtcblxuXHQvKipcblx0ICogRW5oYW5jZSB0aGUgaTE4biBidW5kbGUgdXNlZCBmb3IgdGhpcyBwYWdlIHdpdGggb25lIG9yIG1vcmUgYXBwIHNwZWNpZmljIGkxOG4gcmVzb3VyY2UgYnVuZGxlcyBvciByZXNvdXJjZSBtb2RlbHNcblx0ICogb3IgYSBjb21iaW5hdGlvbiBvZiBib3RoLiBUaGUgbGFzdCByZXNvdXJjZSBidW5kbGUvbW9kZWwgaXMgZ2l2ZW4gaGlnaGVzdCBwcmlvcml0eVxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdbXVwiIH0pXG5cdGVuaGFuY2VJMThuITogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIERlZmluZSBjb250cm9sIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBzZXR0aW5nc1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRjb250cm9sQ29uZmlndXJhdGlvbj86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdC8qKlxuXHQgKiBBZGp1c3RzIHRoZSB0ZW1wbGF0ZSBjb250ZW50XG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdGNvbnRlbnQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHQvKipcblx0ICogV2hldGhlciBvciBub3QgeW91IGNhbiByZWFjaCB0aGlzIHBhZ2UgZGlyZWN0bHkgdGhyb3VnaCBzZW1hbnRpYyBib29rbWFya3Ncblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGFsbG93RGVlcExpbmtpbmchOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBjb250ZXh0IHBhdGggb24gdGhlIGNvbXBvbmVudCB0aGF0IGlzIHJlZnJlc2hlZCB3aGVuIHRoZSBhcHAgaXMgcmVzdG9yZWQgdXNpbmcga2VlcCBhbGl2ZSBtb2RlXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdHJlZnJlc2hTdHJhdGVneU9uQXBwUmVzdG9yZTogdW5rbm93bjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHZpZXdUeXBlID0gXCJYTUxcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHZpZXdOYW1lPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0X2pzeFZpZXdOYW1lID0gXCJcIjtcblxuXHRAZXZlbnQoKVxuXHRjb250YWluZXJEZWZpbmVkITogRnVuY3Rpb247XG5cblx0QGV2ZW50KClcblx0aGVyb2VzQmF0Y2hSZWNlaXZlZCE6IEZ1bmN0aW9uO1xuXG5cdEBldmVudCgpXG5cdHdvcmtlcnNCYXRjaFJlY2VpdmVkITogRnVuY3Rpb247XG5cblx0cHJvdGVjdGVkIG9BcHBDb21wb25lbnQhOiBBcHBDb21wb25lbnQ7XG5cblx0cHJpdmF0ZSBfcm9vdENvbnRyb2xsZXI/OiBQYWdlQ29udHJvbGxlcjtcblxuXHRzZXRDb250YWluZXIob0NvbnRhaW5lcjogQ29tcG9uZW50Q29udGFpbmVyKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0Q29udGFpbmVyKG9Db250YWluZXIpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiY29udGFpbmVyRGVmaW5lZFwiLCB7IGNvbnRhaW5lcjogb0NvbnRhaW5lciB9KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMpO1xuXHRcdHN1cGVyLmluaXQoKTtcblx0XHRjb25zdCBvU3RhdGVDaGFuZ2VIYW5kbGVyID0gZnVuY3Rpb24gKG9FdmVudDogRXZlbnQ8eyBjb250cm9sOiBDb250cm9sIH0+KTogdm9pZCB7XG5cdFx0XHRjb25zdCBvQ29udHJvbCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250cm9sXCIpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRvQ29udHJvbC5pc0E8VGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSB8fFxuXHRcdFx0XHRvQ29udHJvbC5pc0E8RmlsdGVyQmFyPihcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpIHx8XG5cdFx0XHRcdG9Db250cm9sLmlzQTxDaGFydD4oXCJzYXAudWkubWRjLkNoYXJ0XCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3Qgb01hY3JvQVBJID0gb0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyB7IGZpcmVTdGF0ZUNoYW5nZTogRXZlbnRIYW5kbGVyIH07XG5cdFx0XHRcdGlmIChvTWFjcm9BUEk/LmZpcmVTdGF0ZUNoYW5nZSkge1xuXHRcdFx0XHRcdG9NYWNyb0FQSS5maXJlU3RhdGVDaGFuZ2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0U3RhdGVVdGlsLmRldGFjaFN0YXRlQ2hhbmdlKG9TdGF0ZUNoYW5nZUhhbmRsZXIpO1xuXHRcdFN0YXRlVXRpbC5hdHRhY2hTdGF0ZUNoYW5nZShvU3RhdGVDaGFuZ2VIYW5kbGVyKTtcblx0fVxuXG5cdC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBVSTUgY29yZSB0byBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBjdXN0b21pemluZyBjb25maWd1cmF0aW9uLlxuXHQvLyBhcyBjb250cm9sbGVyIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB0aGUgYXBwIGNvbXBvbmVudCBhbmQgbm90IGZvciB0aGVcblx0Ly8gdGVtcGxhdGUgY29tcG9uZW50IHdlIHJldHVybiB0aGUgYXBwIGNvbXBvbmVudC5cblx0Z2V0RXh0ZW5zaW9uQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB7XG5cdFx0cmV0dXJuIHRoaXMub0FwcENvbXBvbmVudDtcblx0fVxuXG5cdGdldEFwcENvbXBvbmVudCgpOiBBcHBDb21wb25lbnQge1xuXHRcdHJldHVybiB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdH1cblxuXHRzZXRSb290Q29udHJvbGxlcihjb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IHZvaWQge1xuXHRcdHRoaXMuX3Jvb3RDb250cm9sbGVyID0gY29udHJvbGxlcjtcblx0fVxuXG5cdGdldFJvb3RDb250cm9sbGVyKCk6IFBhZ2VDb250cm9sbGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCByb290Q29udHJvbDogVmlldyA9IHRoaXMuZ2V0Um9vdENvbnRyb2woKTtcblx0XHRsZXQgcm9vdENvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChyb290Q29udHJvbCAmJiByb290Q29udHJvbC5nZXRDb250cm9sbGVyKSB7XG5cdFx0XHRyb290Q29udHJvbGxlciA9IHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cm9vdENvbnRyb2xsZXIgPSB0aGlzLl9yb290Q29udHJvbGxlcjtcblx0XHR9XG5cdFx0cmV0dXJuIHJvb3RDb250cm9sbGVyO1xuXHR9XG5cblx0b25QYWdlUmVhZHkobVBhcmFtZXRlcnM6IHVua25vd24pOiB2b2lkIHtcblx0XHRjb25zdCByb290Q29udHJvbGxlciA9IHRoaXMuZ2V0Um9vdENvbnRyb2xsZXIoKTtcblx0XHRpZiAocm9vdENvbnRyb2xsZXIgJiYgcm9vdENvbnRyb2xsZXIub25QYWdlUmVhZHkpIHtcblx0XHRcdHJvb3RDb250cm9sbGVyLm9uUGFnZVJlYWR5KG1QYXJhbWV0ZXJzKTtcblx0XHR9XG5cdH1cblxuXHRnZXROYXZpZ2F0aW9uQ29uZmlndXJhdGlvbihzVGFyZ2V0UGF0aDogc3RyaW5nKTogTmF2aWdhdGlvbkNvbmZpZ3VyYXRpb24ge1xuXHRcdGNvbnN0IG1OYXZpZ2F0aW9uID0gdGhpcy5uYXZpZ2F0aW9uO1xuXHRcdHJldHVybiBtTmF2aWdhdGlvbltzVGFyZ2V0UGF0aF07XG5cdH1cblxuXHRnZXRWaWV3RGF0YSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgbVByb3BlcnRpZXMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IG9WaWV3RGF0YSA9IE9iamVjdC5rZXlzKG1Qcm9wZXJ0aWVzKS5yZWR1Y2UoKG1WaWV3RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHNQcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xuXHRcdFx0bVZpZXdEYXRhW3NQcm9wZXJ0eU5hbWVdID0gbVByb3BlcnRpZXNbc1Byb3BlcnR5TmFtZV0uZ2V0ISh0aGlzKTtcblx0XHRcdHJldHVybiBtVmlld0RhdGE7XG5cdFx0fSwge30pO1xuXHRcdGRlbGV0ZSBvVmlld0RhdGEucHJlcHJvY2Vzc29yQ29udGV4dDtcblx0XHQvLyBBY2Nlc3MgdGhlIGludGVybmFsIF9pc0ZjbEVuYWJsZWQgd2hpY2ggd2lsbCBiZSB0aGVyZVxuXHRcdG9WaWV3RGF0YS5mY2xFbmFibGVkID0gdGhpcy5vQXBwQ29tcG9uZW50Ll9pc0ZjbEVuYWJsZWQoKTtcblxuXHRcdHJldHVybiBvVmlld0RhdGE7XG5cdH1cblxuXHRfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKTogVGl0bGVJbmZvcm1hdGlvbiB7XG5cdFx0Y29uc3Qgcm9vdENvbnRyb2wgPSB0aGlzLmdldFJvb3RDb250cm9sKCk7XG5cdFx0aWYgKHJvb3RDb250cm9sICYmIHJvb3RDb250cm9sLmdldENvbnRyb2xsZXIoKSAmJiByb290Q29udHJvbC5nZXRDb250cm9sbGVyKCkuX2dldFBhZ2VUaXRsZUluZm9ybWF0aW9uKSB7XG5cdFx0XHRyZXR1cm4gcm9vdENvbnRyb2wuZ2V0Q29udHJvbGxlcigpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4ge30gYXMgVGl0bGVJbmZvcm1hdGlvbjtcblx0XHR9XG5cdH1cblxuXHRnZXRFeHRlbnNpb25BUEkoKTogRXh0ZW5zaW9uQVBJIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKS5nZXRFeHRlbnNpb25BUEkoKTtcblx0fVxufVxuaW50ZXJmYWNlIFRlbXBsYXRlQ29tcG9uZW50IHtcblx0Ly8gVE9ETzogdGhpcyBzaG91bGQgYmUgaWRlYWxseSBiZSBoYW5kbGVkIGJ5IHRoZSBlZGl0Zmxvdy9yb3V0aW5nIHdpdGhvdXQgdGhlIG5lZWQgdG8gaGF2ZSB0aGlzIG1ldGhvZCBpbiB0aGUgb2JqZWN0IHBhZ2UgLSBmb3Igbm93IGtlZXAgaXQgaGVyZVxuXHRjcmVhdGVEZWZlcnJlZENvbnRleHQ/KFxuXHRcdHNQYXRoOiBzdHJpbmcsXG5cdFx0b0xpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nIHwgdW5kZWZpbmVkLFxuXHRcdHBhcmVudENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQsXG5cdFx0ZGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkLFxuXHRcdGJBY3Rpb25DcmVhdGU6IGJvb2xlYW5cblx0KTogdm9pZDtcblx0aXNPcGVuSW5FZGl0TW9kZSgpOiBib29sZWFuO1xuXHRnZXRSb290Q29udHJvbCgpOiB7IGdldENvbnRyb2xsZXIoKTogUGFnZUNvbnRyb2xsZXIgfSAmIFZpZXc7XG5cdGV4dGVuZFBhZ2VEZWZpbml0aW9uPyhwYWdlRGVmaW5pdGlvbjoge30sIGNvbnZlcnRlckNvbnRleHQ/OiBDb252ZXJ0ZXJDb250ZXh0KToge307XG5cdGdldE1vZGVsKCk6IE9EYXRhTW9kZWw7XG5cdGdldE1vZGVsKG1vZGVsTmFtZTogXCJfcGFnZU1vZGVsXCIpOiBKU09OTW9kZWw7XG5cdGdldE1vZGVsKG1vZGVsTmFtZTogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQ7XG59XG5leHBvcnQgZGVmYXVsdCBUZW1wbGF0ZUNvbXBvbmVudDtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O01BbURNQSxpQkFBaUIsV0FEdEJDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxVQUU5Q0Msa0JBQWtCLENBQUMsbUNBQW1DLENBQUMsVUFNdkRDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsUUFBUTtJQUFFQyxZQUFZLEVBQUU7RUFBSyxDQUFDLENBQUMsVUFNaERGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsUUFBUTtJQUFFQyxZQUFZLEVBQUU7RUFBSyxDQUFDLENBQUMsVUFHaERGLFFBQVEsQ0FBQztJQUFF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
@@ -132,6 +132,8 @@ class TemplateComponent extends UIComponent implements IAsyncContentCreation {
132
132
 
133
133
  protected oAppComponent!: AppComponent;
134
134
 
135
+ private _rootController?: PageController;
136
+
135
137
  setContainer(oContainer: ComponentContainer): this {
136
138
  super.setContainer(oContainer);
137
139
  this.fireEvent("containerDefined", { container: oContainer });
@@ -169,11 +171,17 @@ class TemplateComponent extends UIComponent implements IAsyncContentCreation {
169
171
  return this.oAppComponent;
170
172
  }
171
173
 
174
+ setRootController(controller: PageController): void {
175
+ this._rootController = controller;
176
+ }
177
+
172
178
  getRootController(): PageController | undefined {
173
179
  const rootControl: View = this.getRootControl();
174
180
  let rootController: PageController | undefined;
175
181
  if (rootControl && rootControl.getController) {
176
182
  rootController = rootControl.getController() as PageController;
183
+ } else {
184
+ rootController = this._rootController;
177
185
  }
178
186
  return rootController;
179
187
  }
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2024 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define([], function () {
6
+ "use strict";
7
+
8
+ var _exports = {};
9
+ let currentFactory;
10
+ function getCoreUIFactory() {
11
+ if (currentFactory === undefined) {
12
+ throw new Error("sap.fe.core UI provider not defined");
13
+ }
14
+ return currentFactory;
15
+ }
16
+ _exports.getCoreUIFactory = getCoreUIFactory;
17
+ function setCoreUIFactory(provider) {
18
+ currentFactory = provider;
19
+ }
20
+ _exports.setCoreUIFactory = setCoreUIFactory;
21
+ return _exports;
22
+ }, false);
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjdXJyZW50RmFjdG9yeSIsImdldENvcmVVSUZhY3RvcnkiLCJ1bmRlZmluZWQiLCJFcnJvciIsInNldENvcmVVSUZhY3RvcnkiLCJwcm92aWRlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVUlQcm92aWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBPRGF0YVY0Q29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgRXhpdERpYWxvZ0V2ZW50ID0gRXZlbnQ8e1xuXHRhY2NlcHQ6IGJvb2xlYW47XG59PjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZERpYWxvZyB7XG5cdG9wZW5EaWFsb2coKTogdm9pZDtcblx0Y2xvc2VEaWFsb2coKTogdm9pZDtcblx0c2V0QnVzeShidXN5OiBib29sZWFuKTogdm9pZDtcblx0YXR0YWNoRXhpdERpYWxvZyhkYXRhOiBvYmplY3QsIGhhbmRsZXI6IChlOiBFeGl0RGlhbG9nRXZlbnQpID0+IHZvaWQsIGxpc3RlbmVyPzogb2JqZWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb3JlVUlGYWN0b3J5IHtcblx0bmV3Q3JlYXRlRGlhbG9nKFxuXHRcdGNvbnRleHRUb1VwZGF0ZTogT0RhdGFWNENvbnRleHQsXG5cdFx0ZmllbGROYW1lczogc3RyaW5nW10sXG5cdFx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQsXG5cdFx0cGFyZW50Q29udHJvbD86IENvbnRyb2xcblx0KTogU3RhbmRhcmREaWFsb2c7XG59XG5cbmxldCBjdXJyZW50RmFjdG9yeTogQ29yZVVJRmFjdG9yeSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvcmVVSUZhY3RvcnkoKTogQ29yZVVJRmFjdG9yeSB7XG5cdGlmIChjdXJyZW50RmFjdG9yeSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwic2FwLmZlLmNvcmUgVUkgcHJvdmlkZXIgbm90IGRlZmluZWRcIik7XG5cdH1cblxuXHRyZXR1cm4gY3VycmVudEZhY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb3JlVUlGYWN0b3J5KHByb3ZpZGVyPzogQ29yZVVJRmFjdG9yeSk6IHZvaWQge1xuXHRjdXJyZW50RmFjdG9yeSA9IHByb3ZpZGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7OztFQXlCQSxJQUFJQSxjQUF5QztFQUV0QyxTQUFTQyxnQkFBZ0IsR0FBa0I7SUFDakQsSUFBSUQsY0FBYyxLQUFLRSxTQUFTLEVBQUU7TUFDakMsTUFBTSxJQUFJQyxLQUFLLENBQUMscUNBQXFDLENBQUM7SUFDdkQ7SUFFQSxPQUFPSCxjQUFjO0VBQ3RCO0VBQUM7RUFFTSxTQUFTSSxnQkFBZ0IsQ0FBQ0MsUUFBd0IsRUFBUTtJQUNoRUwsY0FBYyxHQUFHSyxRQUFRO0VBQzFCO0VBQUM7RUFBQTtBQUFBIn0=
@@ -0,0 +1,38 @@
1
+ import type AppComponent from "sap/fe/core/AppComponent";
2
+ import type Event from "sap/ui/base/Event";
3
+ import type Control from "sap/ui/core/Control";
4
+ import type ODataV4Context from "sap/ui/model/odata/v4/Context";
5
+
6
+ export type ExitDialogEvent = Event<{
7
+ accept: boolean;
8
+ }>;
9
+
10
+ export interface StandardDialog {
11
+ openDialog(): void;
12
+ closeDialog(): void;
13
+ setBusy(busy: boolean): void;
14
+ attachExitDialog(data: object, handler: (e: ExitDialogEvent) => void, listener?: object): void;
15
+ }
16
+
17
+ export interface CoreUIFactory {
18
+ newCreateDialog(
19
+ contextToUpdate: ODataV4Context,
20
+ fieldNames: string[],
21
+ appComponent: AppComponent,
22
+ parentControl?: Control
23
+ ): StandardDialog;
24
+ }
25
+
26
+ let currentFactory: CoreUIFactory | undefined;
27
+
28
+ export function getCoreUIFactory(): CoreUIFactory {
29
+ if (currentFactory === undefined) {
30
+ throw new Error("sap.fe.core UI provider not defined");
31
+ }
32
+
33
+ return currentFactory;
34
+ }
35
+
36
+ export function setCoreUIFactory(provider?: CoreUIFactory): void {
37
+ currentFactory = provider;
38
+ }