@sapui5/sap.fe.core 1.119.0 → 1.120.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.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +39 -2
- package/src/sap/fe/core/ActionRuntime.js +1 -1
- package/src/sap/fe/core/ActionRuntime.js.map +1 -1
- package/src/sap/fe/core/ActionRuntime.ts +48 -6
- package/src/sap/fe/core/AppComponent-dbg.js +27 -2
- package/src/sap/fe/core/AppComponent.js +1 -1
- package/src/sap/fe/core/AppComponent.js.map +1 -1
- package/src/sap/fe/core/AppComponent.ts +33 -0
- package/src/sap/fe/core/AppStateHandler-dbg.js +0 -1
- package/src/sap/fe/core/AppStateHandler.ts +1 -1
- package/src/sap/fe/core/BaseController-dbg.js +0 -1
- package/src/sap/fe/core/CommonUtils-dbg.js +0 -1
- package/src/sap/fe/core/CommonUtils.ts +2 -2
- package/src/sap/fe/core/ExtensionAPI-dbg.js +29 -3
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +32 -2
- package/src/sap/fe/core/InsightsFormattersExtension-dbg.js +0 -1
- package/src/sap/fe/core/PageController-dbg.js +40 -29
- package/src/sap/fe/core/PageController.js +1 -1
- package/src/sap/fe/core/PageController.js.map +1 -1
- package/src/sap/fe/core/PageController.ts +9 -1
- package/src/sap/fe/core/ResourceModel-dbg.js +0 -1
- package/src/sap/fe/core/TemplateComponent-dbg.js +0 -1
- package/src/sap/fe/core/TemplateComponent.ts +7 -1
- package/src/sap/fe/core/TemplateModel-dbg.js +0 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter-dbg.js +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +2 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +5 -3
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.ts +7 -4
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +0 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +5 -5
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +1 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +12 -7
- package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/BusyLocker-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +103 -47
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +140 -53
- package/src/sap/fe/core/controllerextensions/Feedback-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/HookSupport-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/HookSupport.ts +5 -2
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +49 -53
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +46 -65
- package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +18 -16
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
- package/src/sap/fe/core/controllerextensions/KPIManagement.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +48 -26
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +15 -24
- package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +23 -34
- package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +5 -6
- package/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.ts +8 -7
- package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js +1 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -0
- package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +2 -3
- package/src/sap/fe/core/controllerextensions/Placeholder.js +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +1 -2
- package/src/sap/fe/core/controllerextensions/Recommendations-dbg.js +291 -0
- package/src/sap/fe/core/controllerextensions/Recommendations.js +6 -0
- package/src/sap/fe/core/controllerextensions/Recommendations.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +319 -0
- package/src/sap/fe/core/controllerextensions/Routing-dbg.js +4 -6
- package/src/sap/fe/core/controllerextensions/Routing.js +1 -1
- package/src/sap/fe/core/controllerextensions/Routing.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Routing.ts +0 -2
- package/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +88 -38
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +116 -44
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +10 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +11 -0
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager-dbg.js +72 -0
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +6 -0
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +75 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +1 -4
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +34 -25
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +60 -41
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +3 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +4 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +23 -39
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +28 -42
- package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +2 -3
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -5
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +4 -1
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason-dbg.js +0 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +0 -1
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -3
- package/src/sap/fe/core/controls/Any-dbg.js +2 -2
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/Any.js.map +1 -1
- package/src/sap/fe/core/controls/Any.ts +2 -1
- package/src/sap/fe/core/controls/AnyElement-dbg.js +0 -1
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +0 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block-dbg.js +0 -1
- package/src/sap/fe/core/controls/EventDelegateHook-dbg.js +0 -1
- package/src/sap/fe/core/controls/FilterBar-dbg.js +0 -1
- package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +0 -1
- package/src/sap/fe/core/controls/MassEditSelect-dbg.js +0 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +0 -1
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block-dbg.js +279 -0
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +6 -0
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js.map +1 -0
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +329 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +0 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +0 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +0 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +0 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +1 -2
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
- package/src/sap/fe/core/converters/ConverterContext-dbg.js +0 -1
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +4 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +26 -7
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +0 -1
- package/src/sap/fe/core/converters/ManifestWrapper.ts +4 -1
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +1 -2
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +1 -1
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +0 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +1 -1
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +25 -14
- package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.ts +34 -22
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js.map +1 -0
- package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +0 -1
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +6 -7
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/Criticality-dbg.js +0 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +2 -2
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +3 -1
- package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +0 -1
- package/src/sap/fe/core/converters/controls/Common/Form.ts +2 -2
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +16 -2
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +41 -8
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +248 -80
- package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.ts +310 -87
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +85 -25
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +114 -26
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +9 -8
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +10 -8
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +0 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +2 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +0 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +0 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +0 -1
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +0 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +0 -7
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +0 -5
- package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +36 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +34 -1
- package/src/sap/fe/core/converters/helpers/ID-dbg.js +0 -1
- package/src/sap/fe/core/converters/helpers/InsightsHelpers-dbg.js +0 -1
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +0 -1
- package/src/sap/fe/core/converters/helpers/Key-dbg.js +0 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper-dbg.js +0 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions-dbg.js +0 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +0 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +30 -6
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +38 -11
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +2 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +4 -6
- package/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +13 -24
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/designtime/AppComponent.designtime.js.map +1 -1
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +13 -23
- package/src/sap/fe/core/designtime/library-preload.designtime.js +1 -1
- package/src/sap/fe/core/designtime/library-preload.designtime.js.map +1 -1
- package/src/sap/fe/core/filter/DraftEditState.fragment.xml +40 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +0 -1
- package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +0 -1
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +0 -1
- package/src/sap/fe/core/formatters/KPIFormatter-dbg.js +0 -1
- package/src/sap/fe/core/formatters/StandardFormatter-dbg.js +0 -1
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +0 -1
- package/src/sap/fe/core/formatters/TableFormatterTypes-dbg.js +0 -1
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +0 -1
- package/src/sap/fe/core/fpm/Component-dbg.js +0 -1
- package/src/sap/fe/core/fpm/manifest.json +2 -3
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler-dbg.js +146 -18
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +1 -1
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js.map +1 -1
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.ts +154 -14
- package/src/sap/fe/core/helpers/AnnotationEnum-dbg.js +0 -1
- package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/BindingHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +0 -1
- package/src/sap/fe/core/helpers/ClassSupport-dbg.js +0 -1
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +25 -8
- package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.ts +33 -8
- package/src/sap/fe/core/helpers/DraftEditState-dbg.js +238 -0
- package/src/sap/fe/core/helpers/DraftEditState.js +6 -0
- package/src/sap/fe/core/helpers/DraftEditState.js.map +1 -0
- package/src/sap/fe/core/helpers/DraftEditState.ts +238 -0
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/EditState-dbg.js +0 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/FPMHelper-dbg.js +34 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +36 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +0 -1
- package/src/sap/fe/core/helpers/LoaderUtils-dbg.js +0 -1
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +83 -110
- package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.ts +188 -138
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +0 -1
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +0 -1
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +3 -3
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/PasteHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/RecommendationHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/RecommendationHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/RecommendationHelper.ts +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +17 -3
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +17 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +0 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/SizeHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +0 -1
- package/src/sap/fe/core/helpers/StandardRecommendationHelper-dbg.js +69 -87
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -1
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +78 -119
- package/src/sap/fe/core/helpers/Synchronization-dbg.js +0 -1
- package/src/sap/fe/core/helpers/TitleHelper-dbg.js +8 -11
- package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
- package/src/sap/fe/core/helpers/TitleHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/TitleHelper.ts +17 -20
- package/src/sap/fe/core/helpers/ToES6Promise-dbg.js +0 -1
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +12 -2
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.ts +11 -0
- package/src/sap/fe/core/jsx-runtime/Fragment-dbg.js +0 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +0 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +0 -1
- package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +0 -1
- package/src/sap/fe/core/jsx-runtime/jsx-xml-dbg.js +0 -1
- package/src/sap/fe/core/jsx-runtime/jsxs-dbg.js +0 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +0 -1
- package/src/sap/fe/core/library-dbg.js +4 -3
- package/src/sap/fe/core/library-preload.js +91 -60
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/library.js.map +1 -1
- package/src/sap/fe/core/library.ts +4 -0
- package/src/sap/fe/core/manifest.json +7 -2
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +0 -1
- package/src/sap/fe/core/messagebundle.properties +97 -3
- package/src/sap/fe/core/messagebundle_en.properties +44 -1
- package/src/sap/fe/core/messagebundle_mk.properties +408 -0
- package/src/sap/fe/core/operationsHelper-dbg.js +0 -1
- package/src/sap/fe/core/operationsHelper.ts +2 -2
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +9 -5
- package/src/sap/fe/core/rootView/Fcl.controller.js +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.ts +15 -6
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +0 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +1 -2
- package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +0 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +0 -1
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory-dbg.js +159 -0
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +6 -0
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/CollaborationManagerServiceFactory.ts +143 -0
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory-dbg.js +85 -0
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +6 -0
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.ts +88 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +0 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +0 -1
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +84 -81
- package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +104 -106
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +0 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +1 -3
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +47 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +68 -0
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +1 -2
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +10 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +0 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +7 -6
- package/src/sap/fe/core/support/CommonHelper-dbg.js +0 -1
- package/src/sap/fe/core/support/Diagnostics-dbg.js +0 -1
- package/src/sap/fe/core/templating/ActionHelper-dbg.js +30 -4
- package/src/sap/fe/core/templating/ActionHelper.js +1 -1
- package/src/sap/fe/core/templating/ActionHelper.js.map +1 -1
- package/src/sap/fe/core/templating/ActionHelper.ts +39 -4
- package/src/sap/fe/core/templating/CommonFormatters-dbg.js +0 -1
- package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +27 -8
- package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +33 -10
- package/src/sap/fe/core/templating/DataFieldFormatters-dbg.js +0 -1
- package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +0 -1
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +0 -1
- package/src/sap/fe/core/templating/EntityTypeHelper-dbg.js +0 -1
- package/src/sap/fe/core/templating/FieldControlHelper-dbg.js +23 -3
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FieldControlHelper.js.map +1 -1
- package/src/sap/fe/core/templating/FieldControlHelper.ts +32 -8
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +0 -1
- package/src/sap/fe/core/templating/FilterTemplating-dbg.js +0 -1
- package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +0 -1
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +16 -16
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +14 -15
- package/src/sap/fe/core/templating/SemanticObjectHelper-dbg.js +0 -1
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +1 -12
- package/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +0 -9
- package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +0 -1
- package/src/sap/fe/core/type/EDM-dbg.js +0 -1
- package/src/sap/fe/core/type/Email-dbg.js +0 -1
- package/src/sap/fe/core/type/FiscalDate-dbg.js +0 -1
- package/ui5.yaml +5 -1
package/package.json
CHANGED
package/src/sap/fe/core/.library
CHANGED
|
@@ -2,16 +2,20 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/TypeGuards", "sap/ui/core/message/Message", "./controls/AnyElement", "./converters/ConverterContext", "./converters/objectPage/HeaderAndFooterAction"], function (merge, CommonUtils, BindingToolkit, ModelHelper, TypeGuards, Message, AnyElement, ConverterContext, HeaderAndFooterAction) {
|
|
5
|
+
sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/controls/Any", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/ActionHelper", "sap/ui/core/message/Message", "./controls/AnyElement", "./converters/ConverterContext", "./converters/MetaModelConverter", "./converters/objectPage/HeaderAndFooterAction"], function (merge, CommonUtils, Any, BindingToolkit, ModelHelper, TypeGuards, ActionHelper, Message, AnyElement, ConverterContext, MetaModelConverter, HeaderAndFooterAction) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var getHiddenExpression = HeaderAndFooterAction.getHiddenExpression;
|
|
9
9
|
var getEditButtonEnabled = HeaderAndFooterAction.getEditButtonEnabled;
|
|
10
|
+
var convertTypes = MetaModelConverter.convertTypes;
|
|
11
|
+
var getIsActionCriticalExpression = ActionHelper.getIsActionCriticalExpression;
|
|
10
12
|
var isEntitySet = TypeGuards.isEntitySet;
|
|
11
13
|
var transformRecursively = BindingToolkit.transformRecursively;
|
|
14
|
+
var isConstant = BindingToolkit.isConstant;
|
|
12
15
|
var equal = BindingToolkit.equal;
|
|
13
16
|
var constant = BindingToolkit.constant;
|
|
14
17
|
var compileExpression = BindingToolkit.compileExpression;
|
|
18
|
+
var compileConstant = BindingToolkit.compileConstant;
|
|
15
19
|
const ActionRuntime = {
|
|
16
20
|
/**
|
|
17
21
|
* Adds error messages for an action parameter field to the message manager.
|
|
@@ -237,8 +241,41 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/he
|
|
|
237
241
|
}
|
|
238
242
|
}
|
|
239
243
|
return aRequestPromises;
|
|
244
|
+
},
|
|
245
|
+
/**
|
|
246
|
+
* Check if action is critical.
|
|
247
|
+
*
|
|
248
|
+
* @param metaModel MetaModel
|
|
249
|
+
* @param path Path to the action
|
|
250
|
+
* @param contexts Contexts in case of bound actions.
|
|
251
|
+
* @returns Boolean indicating action is critical
|
|
252
|
+
*/
|
|
253
|
+
getIsActionCritical: function (metaModel, path) {
|
|
254
|
+
let contexts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
255
|
+
// default is true.
|
|
256
|
+
let isActionCriticalValue = true;
|
|
257
|
+
const convertedTypes = convertTypes(metaModel);
|
|
258
|
+
const actionTargetResolution = convertedTypes.resolvePath(path);
|
|
259
|
+
const actionTarget = actionTargetResolution.target;
|
|
260
|
+
if (!actionTarget) {
|
|
261
|
+
return isActionCriticalValue;
|
|
262
|
+
}
|
|
263
|
+
const isActionCriticalBindingExp = getIsActionCriticalExpression(actionTarget, convertedTypes);
|
|
264
|
+
if (isConstant(isActionCriticalBindingExp)) {
|
|
265
|
+
// Constant expression resolves to "true" or "false". But, we need boolean.
|
|
266
|
+
isActionCriticalValue = compileConstant(isActionCriticalBindingExp, false, undefined, true);
|
|
267
|
+
} else if (contexts.length > 0) {
|
|
268
|
+
// We evaluate the value of the expression via a UI5 managed object instance.
|
|
269
|
+
const anyObject = new Any({
|
|
270
|
+
anyBoolean: compileExpression(isActionCriticalBindingExp)
|
|
271
|
+
});
|
|
272
|
+
anyObject.setModel(contexts[0].getModel());
|
|
273
|
+
anyObject.setBindingContext(contexts[0]);
|
|
274
|
+
isActionCriticalValue = anyObject.getBinding("anyBoolean").getExternalValue();
|
|
275
|
+
anyObject.destroy();
|
|
276
|
+
}
|
|
277
|
+
return isActionCriticalValue;
|
|
240
278
|
}
|
|
241
279
|
};
|
|
242
280
|
return ActionRuntime;
|
|
243
281
|
}, false);
|
|
244
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25SdW50aW1lIiwiX2FkZE1lc3NhZ2VGb3JBY3Rpb25QYXJhbWV0ZXIiLCJtZXNzYWdlTWFuYWdlciIsIm1lc3NhZ2VQYXJhbWV0ZXJzIiwiYWRkTWVzc2FnZXMiLCJtYXAiLCJtZXNzYWdlUGFyYW1ldGVyIiwiYmluZGluZyIsImFjdGlvblBhcmFtZXRlckluZm8iLCJmaWVsZCIsImdldEJpbmRpbmciLCJpc011bHRpVmFsdWUiLCJNZXNzYWdlIiwibWVzc2FnZSIsInR5cGUiLCJwcm9jZXNzb3IiLCJnZXRNb2RlbCIsInBlcnNpc3RlbnQiLCJ0YXJnZXQiLCJnZXRSZXNvbHZlZFBhdGgiLCJ2YWxpZGF0ZVByb3BlcnRpZXMiLCJhY3Rpb25QYXJhbWV0ZXJJbmZvcyIsInJlc291cmNlTW9kZWwiLCJQcm9taXNlIiwiYWxsU2V0dGxlZCIsInZhbGlkYXRpb25Qcm9taXNlIiwicmVxdWlyZWRQYXJhbWV0ZXJJbmZvcyIsImZpbHRlciIsInBhcmFtZXRlckluZm8iLCJnZXRSZXF1aXJlZCIsImFsbE1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsImVtcHR5UmVxdWlyZWRGaWVsZHMiLCJyZXF1aXJlZFBhcmFtZXRlckluZm8iLCJmaWVsZElkIiwiZ2V0SWQiLCJyZWxldmFudE1lc3NhZ2VzIiwibXNnIiwiZ2V0Q29udHJvbElkcyIsInNvbWUiLCJjb250cm9sSWQiLCJpbmNsdWRlcyIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiZmllbGRWYWx1ZSIsImdldFZhbHVlIiwiZ2V0VGV4dCIsImdldFBhcmVudCIsImdldEFnZ3JlZ2F0aW9uIiwiZmlyc3RJbnZhbGlkUGFyYW1ldGVyIiwiZmluZCIsImhhc0Vycm9yIiwiZ2V0VmFsdWVTdGF0ZSIsImZvY3VzIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJhU2VsZWN0ZWRDb250ZXh0cyIsInNDb250cm9sIiwiYVByb21pc2VzIiwic0FjdGlvbiIsImFSZXF1ZXN0UHJvbWlzZXMiLCJzZXRQcm9wZXJ0eSIsInNQcm9wZXJ0eSIsImVsZW1lbnQiLCJvU2VsZWN0ZWRDb250ZXh0Iiwib0NvbnRleHREYXRhIiwiZ2V0T2JqZWN0IiwiX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZSIsImJFbmFibGVkIiwiYUFwcGxpY2FibGUiLCJhTm90QXBwbGljYWJsZSIsInB1c2giLCJDb21tb25VdGlscyIsInNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZSIsImFsbCIsInNldEFjdGlvbkVuYWJsZW1lbnRBZnRlclBhdGNoIiwib1ZpZXciLCJvTGlzdEJpbmRpbmciLCJvSW50ZXJuYWxNb2RlbENvbnRleHREYXRhIiwib0NvbnRyb2xzIiwiY29udHJvbHMiLCJzS2V5Iiwib1RhYmxlIiwiYnlJZCIsImlzQSIsIm9Sb3dCaW5kaW5nIiwiZ2V0Um93QmluZGluZyIsImdldEJpbmRpbmdDb250ZXh0IiwiSlNPTiIsInBhcnNlIiwiZGF0YSIsImN1c3RvbURhdGEiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwidXBkYXRlRWRpdEJ1dHRvblZpc2liaWxpdHlBbmRFbmFibGVtZW50IiwiaVZpZXdMZXZlbCIsImdldFZpZXdEYXRhIiwidmlld0xldmVsIiwiaXNFZGl0YWJsZSIsImdldFByb3BlcnR5Iiwib0NvbnRleHQiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50Iiwic01ldGFQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRNZXRhUGF0aEZvckNvbnRleHQiLCJzRW50aXR5U2V0IiwiZ2V0Um9vdEVudGl0eVNldFBhdGgiLCJtZXRhQ29udGV4dCIsImdldE1ldGFNb2RlbCIsImdldENvbnRleHQiLCJnZXRQYXRoIiwiY29udmVydGVyQ29udGV4dCIsIkNvbnZlcnRlckNvbnRleHQiLCJjcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8iLCJnZXREaWFnbm9zdGljcyIsIm1lcmdlIiwiZW50aXR5U2V0IiwiZ2V0RW50aXR5U2V0IiwiZW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJ1cGRhdGVIaWRkZW4iLCJiVXBkYXRlSGlkZGVuIiwiaXNFbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIlVJIiwiVXBkYXRlSGlkZGVuIiwidmFsdWVPZiIsImlzVXBkYXRlSGlkZGVuIiwic0VkaXRFbmFibGVCaW5kaW5nIiwiZ2V0RWRpdEJ1dHRvbkVuYWJsZWQiLCJkcmFmdFJvb3RQYXRoIiwiZ2V0RHJhZnRSb290UGF0aCIsInNTdGlja3lSb290UGF0aCIsImdldFN0aWNreVJvb3RQYXRoIiwic1BhdGgiLCJvUm9vdENvbnRleHQiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNIaWRkZW5FeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJlcXVhbCIsImdldEhpZGRlbkV4cHJlc3Npb24iLCJ1cGRhdGVFZGl0TW9kZWxDb250ZXh0Iiwic0JpbmRpbmdFeHByZXNzaW9uIiwib0hpZGRlbkVsZW1lbnQiLCJBbnlFbGVtZW50IiwiYW55VGV4dCIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRGVwZW5kZW50IiwiJCRncm91cElkIiwiYXR0YWNoQ2hhbmdlIiwib0V2ZW50Iiwib05ld1ZhbHVlIiwiZ2V0U291cmNlIiwiZ2V0RXh0ZXJuYWxWYWx1ZSIsInNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgiLCJvVHJhbnNmb3JtZWRCaW5kaW5nIiwidHJhbnNmb3JtUmVjdXJzaXZlbHkiLCJvQmluZGluZ0V4cHJlc3Npb24iLCJjb25zdGFudCIsInBhdGgiLCJzUmVzdWx0Iiwic2V0RHluYW1pY0FjdGlvbkNvbnRleHRzIiwicmVxdWVzdFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb25SdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgeyBfUmVxdWVzdGVkUHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgUGF0aEluTW9kZWxFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgZXF1YWwsIHRyYW5zZm9ybVJlY3Vyc2l2ZWx5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBpc0VudGl0eVNldCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgdHlwZSBNdWx0aVZhbHVlRmllbGRJdGVtIGZyb20gXCJzYXAvdWkvbWRjL2ZpZWxkL011bHRpVmFsdWVGaWVsZEl0ZW1cIjtcbmltcG9ydCB0eXBlIE11bHRpVmFsdWVGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9NdWx0aVZhbHVlRmllbGRcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIFByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL1Byb3BlcnR5QmluZGluZ1wiO1xuaW1wb3J0IEFueUVsZW1lbnQgZnJvbSBcIi4vY29udHJvbHMvQW55RWxlbWVudFwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4vY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEJhc2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcIi4vY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRFZGl0QnV0dG9uRW5hYmxlZCwgZ2V0SGlkZGVuRXhwcmVzc2lvbiB9IGZyb20gXCIuL2NvbnZlcnRlcnMvb2JqZWN0UGFnZS9IZWFkZXJBbmRGb290ZXJBY3Rpb25cIjtcblxudHlwZSBBY3Rpb25QYXJhbWV0ZXIgPSB7XG5cdCROYW1lOiBzdHJpbmc7XG5cdCRpc0NvbGxlY3Rpb246IGJvb2xlYW47XG5cdC8vIGN1cnJlbnRseSBydW50aW1lIGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gaW50byB0aGUgbWV0YW1vZGVsOlxuXHQvLyAtIGluIHRoZSBwcmVzcyBoYW5kbGVyIG9mIHRoZSBhY3Rpb24gYnV0dG9uIG9uIHRoZSBwYXJhbWV0ZXIgZGlhbG9nLCB0aGUgdmFsdWUgb2YgZWFjaCBwYXJhbWV0ZXIgaXMgYWRkZWRcblx0Ly8gLSBpbiBzZXRBY3Rpb25QYXJhbWV0ZXJEZWZhdWx0VmFsdWUsIHRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBhbmQgdHJhbnNmZXJyZWQgdG8gdGhlIGNvbnRleHQgKGluIE9EYXRhTW9kZWwpIGNyZWF0ZWQgZm9yIHRoZSBhY3Rpb24gZXhlY3V0aW9uXG5cdC8vIHRoaXMgaXMgcXVpdGUgb2RkLCBhbmQgaXQgd291bGQgbWFrZSBtdWNoIG1vcmUgc2Vuc2UgdG8gdGFrZSB0aGUgdmFsdWUgZnJvbSBhY3Rpb25QYXJhbWV0ZXJJbmZvc1xuXHQvLyAtIGhvd2V2ZXIsIHNldEFjdGlvblBhcmFtZXRlckRlZmF1bHRWYWx1ZSAob3IgcmF0aGVyIHRoZSBzdXJyb3VuZGluZyBfZXhlY3V0ZUFjdGlvbikgaXMgYWxzbyBjYWxsZWQgZnJvbSBvdGhlciBwbGFjZXNcblx0Ly8gPT4gZm9yIHRoZSB0aW1lIGJlaW5nLCBhZGRpbmcgdmFsdWUgaGVyZSB0byBhdm9pZCB0cyBlcnJvcnMsIHN1YmplY3QgdG8gcmVmYWN0b3Jpbmdcblx0Ly8gaW4gY2FzZSBvZiBGaWVsZCwgdGhlIHZhbHVlIGlzIHN0cmluZywgaW4gY2FzZSBvZiBNdWx0aVZhbHVlRmllbGQsIGl0J3MgTXVsdGlWYWx1ZUZpZWxkSXRlbVtdXG5cdHZhbHVlOiBzdHJpbmcgfCBNdWx0aVZhbHVlRmllbGRJdGVtW107XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25QYXJhbWV0ZXJJbmZvID0ge1xuXHRwYXJhbWV0ZXI6IEFjdGlvblBhcmFtZXRlcjtcblx0ZmllbGQ6IEZpZWxkIHwgTXVsdGlWYWx1ZUZpZWxkO1xuXHRpc011bHRpVmFsdWU6IGJvb2xlYW47XG5cdHZhbHVlPzogc3RyaW5nIHwgTXVsdGlWYWx1ZUZpZWxkSXRlbVtdO1xuXHR2YWxpZGF0aW9uUHJvbWlzZT86IFByb21pc2U8c3RyaW5nIHwgTXVsdGlWYWx1ZUZpZWxkSXRlbVtdPjtcblx0aGFzRXJyb3I6IGJvb2xlYW47XG59O1xuXG5jb25zdCBBY3Rpb25SdW50aW1lID0ge1xuXHQvKipcblx0ICogQWRkcyBlcnJvciBtZXNzYWdlcyBmb3IgYW4gYWN0aW9uIHBhcmFtZXRlciBmaWVsZCB0byB0aGUgbWVzc2FnZSBtYW5hZ2VyLlxuXHQgKlxuXHQgKiBAcGFyYW0gbWVzc2FnZU1hbmFnZXIgVGhlIGFjdGl2ZSBNZXNzYWdlTWFuYWdlciBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gbWVzc2FnZVBhcmFtZXRlcnMgSW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgYW4gYWN0aW9uIHBhcmFtZXRlciBhbmQgbWVzc2FnZXMgcmVmZXJyaW5nIHRvIHRoaXMgcGFyYW1ldGVyXG5cdCAqL1xuXHRfYWRkTWVzc2FnZUZvckFjdGlvblBhcmFtZXRlcjogZnVuY3Rpb24gKFxuXHRcdG1lc3NhZ2VNYW5hZ2VyOiBNZXNzYWdlTWFuYWdlcixcblx0XHRtZXNzYWdlUGFyYW1ldGVyczogeyBhY3Rpb25QYXJhbWV0ZXJJbmZvOiBBY3Rpb25QYXJhbWV0ZXJJbmZvOyBtZXNzYWdlOiBzdHJpbmcgfVtdXG5cdCkge1xuXHRcdG1lc3NhZ2VNYW5hZ2VyLmFkZE1lc3NhZ2VzKFxuXHRcdFx0bWVzc2FnZVBhcmFtZXRlcnMubWFwKChtZXNzYWdlUGFyYW1ldGVyKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGJpbmRpbmcgPSBtZXNzYWdlUGFyYW1ldGVyLmFjdGlvblBhcmFtZXRlckluZm8uZmllbGQuZ2V0QmluZGluZyhcblx0XHRcdFx0XHRtZXNzYWdlUGFyYW1ldGVyLmFjdGlvblBhcmFtZXRlckluZm8uaXNNdWx0aVZhbHVlID8gXCJpdGVtc1wiIDogXCJ2YWx1ZVwiXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBuZXcgTWVzc2FnZSh7XG5cdFx0XHRcdFx0bWVzc2FnZTogbWVzc2FnZVBhcmFtZXRlci5tZXNzYWdlLFxuXHRcdFx0XHRcdHR5cGU6IFwiRXJyb3JcIixcblx0XHRcdFx0XHRwcm9jZXNzb3I6IGJpbmRpbmc/LmdldE1vZGVsKCksXG5cdFx0XHRcdFx0cGVyc2lzdGVudDogdHJ1ZSxcblx0XHRcdFx0XHR0YXJnZXQ6IGJpbmRpbmc/LmdldFJlc29sdmVkUGF0aCgpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgYWxsIHJlcXVpcmVkIGFjdGlvbiBwYXJhbWV0ZXJzIGNvbnRhaW4gZGF0YSBhbmQgY2hlY2tzIGZvciBhbGwgYWN0aW9uIHBhcmFtZXRlcnMgaWYgdGhlXG5cdCAqIGNvbnRhaW5lZCBkYXRhIGlzIHZhbGlkLlxuXHQgKlxuXHQgKlxuXHQgKiBAcGFyYW0gbWVzc2FnZU1hbmFnZXIgVGhlIGFjdGl2ZSBNZXNzYWdlTWFuYWdlciBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gYWN0aW9uUGFyYW1ldGVySW5mb3MgSW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgYW4gYWN0aW9uIHBhcmFtZXRlclxuXHQgKiBAcGFyYW0gcmVzb3VyY2VNb2RlbCBUaGUgbW9kZWwgdG8gbG9hZCB0ZXh0IHJlc291cmNlc1xuXHQgKiBAcmV0dXJucyBUaGUgdmFsaWRhdGlvbiByZXN1bHQgY2FuIGJlIHRydWUgb3IgZmFsc2Vcblx0ICovXG5cdHZhbGlkYXRlUHJvcGVydGllczogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdG1lc3NhZ2VNYW5hZ2VyOiBNZXNzYWdlTWFuYWdlcixcblx0XHRhY3Rpb25QYXJhbWV0ZXJJbmZvczogQWN0aW9uUGFyYW1ldGVySW5mb1tdLFxuXHRcdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWxcblx0KTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGFjdGlvblBhcmFtZXRlckluZm9zLm1hcCgoYWN0aW9uUGFyYW1ldGVySW5mbykgPT4gYWN0aW9uUGFyYW1ldGVySW5mby52YWxpZGF0aW9uUHJvbWlzZSkpO1xuXG5cdFx0Y29uc3QgcmVxdWlyZWRQYXJhbWV0ZXJJbmZvcyA9IGFjdGlvblBhcmFtZXRlckluZm9zLmZpbHRlcigocGFyYW1ldGVySW5mbykgPT4gcGFyYW1ldGVySW5mby5maWVsZC5nZXRSZXF1aXJlZCgpKTtcblx0XHRjb25zdCBhbGxNZXNzYWdlcyA9IG1lc3NhZ2VNYW5hZ2VyLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKTtcblx0XHRjb25zdCBlbXB0eVJlcXVpcmVkRmllbGRzID0gcmVxdWlyZWRQYXJhbWV0ZXJJbmZvcy5maWx0ZXIoKHJlcXVpcmVkUGFyYW1ldGVySW5mbykgPT4ge1xuXHRcdFx0Y29uc3QgZmllbGRJZCA9IHJlcXVpcmVkUGFyYW1ldGVySW5mby5maWVsZC5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgcmVsZXZhbnRNZXNzYWdlcyA9IGFsbE1lc3NhZ2VzLmZpbHRlcigobXNnOiBNZXNzYWdlKSA9PlxuXHRcdFx0XHRtc2cuZ2V0Q29udHJvbElkcygpLnNvbWUoKGNvbnRyb2xJZDogc3RyaW5nKSA9PiBjb250cm9sSWQuaW5jbHVkZXMoZmllbGRJZCkpXG5cdFx0XHQpO1xuXHRcdFx0aWYgKHJlbGV2YW50TWVzc2FnZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKHJlcXVpcmVkUGFyYW1ldGVySW5mby5pc011bHRpVmFsdWUpIHtcblx0XHRcdFx0cmV0dXJuIHJlcXVpcmVkUGFyYW1ldGVySW5mby52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICFyZXF1aXJlZFBhcmFtZXRlckluZm8udmFsdWUubGVuZ3RoO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZmllbGRWYWx1ZSA9IChyZXF1aXJlZFBhcmFtZXRlckluZm8uZmllbGQgYXMgRmllbGQpLmdldFZhbHVlKCk7XG5cdFx0XHRcdHJldHVybiBmaWVsZFZhbHVlID09PSB1bmRlZmluZWQgfHwgZmllbGRWYWx1ZSA9PT0gbnVsbCB8fCBmaWVsZFZhbHVlID09PSBcIlwiO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdC8qIE1lc3NhZ2UgZm9yIG1pc3NpbmcgbWFuZGF0b3J5IHZhbHVlIG9mIHRoZSBhY3Rpb24gcGFyYW1ldGVyICovXG5cdFx0aWYgKGVtcHR5UmVxdWlyZWRGaWVsZHMubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLl9hZGRNZXNzYWdlRm9yQWN0aW9uUGFyYW1ldGVyKFxuXHRcdFx0XHRtZXNzYWdlTWFuYWdlcixcblx0XHRcdFx0ZW1wdHlSZXF1aXJlZEZpZWxkcy5tYXAoKGFjdGlvblBhcmFtZXRlckluZm8pID0+ICh7XG5cdFx0XHRcdFx0YWN0aW9uUGFyYW1ldGVySW5mbzogYWN0aW9uUGFyYW1ldGVySW5mbyxcblx0XHRcdFx0XHRtZXNzYWdlOiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX09QRVJBVElPTlNfQUNUSU9OX1BBUkFNRVRFUl9ESUFMT0dfTUlTU0lOR19NQU5EQVRPUllfTVNHXCIsIFtcblx0XHRcdFx0XHRcdChhY3Rpb25QYXJhbWV0ZXJJbmZvLmZpZWxkLmdldFBhcmVudCgpPy5nZXRBZ2dyZWdhdGlvbihcImxhYmVsXCIpIGFzIExhYmVsKS5nZXRUZXh0KClcblx0XHRcdFx0XHRdKVxuXHRcdFx0XHR9KSlcblx0XHRcdCk7XG5cdFx0fVxuXHRcdC8qIENoZWNrIHZhbHVlIHN0YXRlIG9mIGFsbCBwYXJhbWV0ZXJzICovXG5cdFx0Y29uc3QgZmlyc3RJbnZhbGlkUGFyYW1ldGVyID0gYWN0aW9uUGFyYW1ldGVySW5mb3MuZmluZChcblx0XHRcdChwYXJhbWV0ZXJJbmZvKSA9PlxuXHRcdFx0XHRwYXJhbWV0ZXJJbmZvLmhhc0Vycm9yIHx8IHBhcmFtZXRlckluZm8uZmllbGQuZ2V0VmFsdWVTdGF0ZSgpID09PSBcIkVycm9yXCIgfHwgZW1wdHlSZXF1aXJlZEZpZWxkcy5pbmNsdWRlcyhwYXJhbWV0ZXJJbmZvKVxuXHRcdCk7XG5cdFx0aWYgKGZpcnN0SW52YWxpZFBhcmFtZXRlcikge1xuXHRcdFx0Zmlyc3RJbnZhbGlkUGFyYW1ldGVyLmZpZWxkLmZvY3VzKCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2V0cyB0aGUgYWN0aW9uIGVuYWJsZW1lbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSBvSW50ZXJuYWxNb2RlbENvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgbW9kZWxcblx0ICogQHBhcmFtIG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAgTWFwIGNvbnRhaW5pbmcgdGhlIG9wZXJhdGlvbiBhdmFpbGFiaWxpdHkgb2YgYWN0aW9uc1xuXHQgKiBAcGFyYW0gYVNlbGVjdGVkQ29udGV4dHMgQXJyYXkgY29udGFpbmluZyBzZWxlY3RlZCBjb250ZXh0cyBvZiB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHNDb250cm9sIENvbnRyb2wgbmFtZVxuXHQgKiBAcmV0dXJucyBUaGUgYWN0aW9uIGVuYWJsZW1lbnQgcHJvbWlzZXNcblx0ICovXG5cdHNldEFjdGlvbkVuYWJsZW1lbnQ6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG5cdFx0YVNlbGVjdGVkQ29udGV4dHM6IENvbnRleHRbXSxcblx0XHRzQ29udHJvbDogc3RyaW5nXG5cdCkge1xuXHRcdGNvbnN0IGFQcm9taXNlcyA9IFtdO1xuXHRcdGZvciAoY29uc3Qgc0FjdGlvbiBpbiBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwKSB7XG5cdFx0XHRsZXQgYVJlcXVlc3RQcm9taXNlczogUHJvbWlzZTxfUmVxdWVzdGVkUHJvcGVydHk+W10gPSBbXTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzQWN0aW9uLCBmYWxzZSk7XG5cdFx0XHRjb25zdCBzUHJvcGVydHkgPSBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwW3NBY3Rpb25dO1xuXHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIGFTZWxlY3RlZENvbnRleHRzKSB7XG5cdFx0XHRcdGNvbnN0IG9TZWxlY3RlZENvbnRleHQgPSBlbGVtZW50O1xuXHRcdFx0XHRpZiAob1NlbGVjdGVkQ29udGV4dCkge1xuXHRcdFx0XHRcdGNvbnN0IG9Db250ZXh0RGF0YSA9IG9TZWxlY3RlZENvbnRleHQuZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0XHRcdFx0aWYgKHNDb250cm9sID09PSBcImNoYXJ0XCIpIHtcblx0XHRcdFx0XHRcdGlmICgoc1Byb3BlcnR5ID09PSBudWxsICYmICEhb0NvbnRleHREYXRhW2AjJHtzQWN0aW9ufWBdKSB8fCBvU2VsZWN0ZWRDb250ZXh0LmdldE9iamVjdChzUHJvcGVydHkpKSB7XG5cdFx0XHRcdFx0XHRcdC8vbG9vayBmb3IgYWN0aW9uIGFkdmVydGlzZW1lbnQgaWYgcHJlc2VudCBhbmQgaXRzIHZhbHVlIGlzIG5vdCBudWxsXG5cdFx0XHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzQWN0aW9uLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChzQ29udHJvbCA9PT0gXCJ0YWJsZVwiKSB7XG5cdFx0XHRcdFx0XHRhUmVxdWVzdFByb21pc2VzID0gdGhpcy5fc2V0QWN0aW9uRW5hYmxlbWVudEZvclRhYmxlKFxuXHRcdFx0XHRcdFx0XHRvU2VsZWN0ZWRDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdFx0XHRcdHNBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0YVJlcXVlc3RQcm9taXNlc1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChzQ29udHJvbCA9PT0gXCJ0YWJsZVwiKSB7XG5cdFx0XHRcdGlmICghYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBkeW5hbWljQWN0aW9ucy8ke3NBY3Rpb259YCwge1xuXHRcdFx0XHRcdFx0YkVuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0YUFwcGxpY2FibGU6IFtdLFxuXHRcdFx0XHRcdFx0YU5vdEFwcGxpY2FibGU6IFtdXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YVByb21pc2VzLnB1c2goQ29tbW9uVXRpbHMuc2V0Q29udGV4dHNCYXNlZE9uT3BlcmF0aW9uQXZhaWxhYmxlKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgW10pKTtcblx0XHRcdFx0fSBlbHNlIGlmIChhU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggJiYgdHlwZW9mIHNQcm9wZXJ0eSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdC8vIFdoZW4gYWxsIHByb3BlcnR5IHZhbHVlcyBoYXZlIGJlZW4gcmV0cmlldmVkLCBzZXRcblx0XHRcdFx0XHQvLyBUaGUgYXBwbGljYWJsZSBhbmQgbm90LWFwcGxpY2FibGUgc2VsZWN0ZWQgY29udGV4dHMgZm9yIGVhY2ggYWN0aW9uIGFuZFxuXHRcdFx0XHRcdC8vIFRoZSBlbmFibGVkIHByb3BlcnR5IG9mIHRoZSBkeW5hbWljIGFjdGlvbiBpbiBpbnRlcm5hbCBtb2RlbCBjb250ZXh0LlxuXHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZShvSW50ZXJuYWxNb2RlbENvbnRleHQsIGFSZXF1ZXN0UHJvbWlzZXMpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblx0c2V0QWN0aW9uRW5hYmxlbWVudEFmdGVyUGF0Y2g6IGZ1bmN0aW9uIChvVmlldzogVmlldywgb0xpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0KSB7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0RGF0YSA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0Y29uc3Qgb0NvbnRyb2xzID0gKG9JbnRlcm5hbE1vZGVsQ29udGV4dERhdGE/LmNvbnRyb2xzIHx8IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB7IGNvbnRyb2xJZD86IHN0cmluZyB9Pjtcblx0XHRmb3IgKGNvbnN0IHNLZXkgaW4gb0NvbnRyb2xzKSB7XG5cdFx0XHRpZiAob0NvbnRyb2xzW3NLZXldICYmIG9Db250cm9sc1tzS2V5XS5jb250cm9sSWQpIHtcblx0XHRcdFx0Y29uc3Qgb1RhYmxlID0gb1ZpZXcuYnlJZChzS2V5KTtcblx0XHRcdFx0aWYgKG9UYWJsZSAmJiBvVGFibGUuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdFx0XHRjb25zdCBvUm93QmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0XHRcdFx0aWYgKG9Sb3dCaW5kaW5nID09IG9MaXN0QmluZGluZykge1xuXHRcdFx0XHRcdFx0QWN0aW9uUnVudGltZS5zZXRBY3Rpb25FbmFibGVtZW50KFxuXHRcdFx0XHRcdFx0XHRvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0SlNPTi5wYXJzZShvVGFibGUuZGF0YShcIm9wZXJhdGlvbkF2YWlsYWJsZU1hcFwiKS5jdXN0b21EYXRhKSxcblx0XHRcdFx0XHRcdFx0b1RhYmxlLmdldFNlbGVjdGVkQ29udGV4dHMoKSBhcyBDb250ZXh0W10sXG5cdFx0XHRcdFx0XHRcdFwidGFibGVcIlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0dXBkYXRlRWRpdEJ1dHRvblZpc2liaWxpdHlBbmRFbmFibGVtZW50KG9WaWV3OiBGRVZpZXcpIHtcblx0XHRjb25zdCBpVmlld0xldmVsID0gKG9WaWV3LmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3MpPy52aWV3TGV2ZWwsXG5cdFx0XHRpc0VkaXRhYmxlID0gb1ZpZXcuZ2V0TW9kZWwoXCJ1aVwiKT8uZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVwiKTtcblx0XHRpZiAoKGlWaWV3TGV2ZWwgYXMgbnVtYmVyKSA+IDEgJiYgaXNFZGl0YWJsZSAhPT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRcdGNvbnN0IHNNZXRhUGF0aCA9IE1vZGVsSGVscGVyLmdldE1ldGFQYXRoRm9yQ29udGV4dChvQ29udGV4dCk7XG5cdFx0XHRjb25zdCBzRW50aXR5U2V0ID0gTW9kZWxIZWxwZXIuZ2V0Um9vdEVudGl0eVNldFBhdGgoc01ldGFQYXRoKTtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb0NvbnRleHQ/LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk/LmdldENvbnRleHQob0NvbnRleHQ/LmdldFBhdGgoKSk7XG5cdFx0XHRjb25zdCBjb252ZXJ0ZXJDb250ZXh0ID0gQ29udmVydGVyQ29udGV4dD8uY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvKFxuXHRcdFx0XHRzRW50aXR5U2V0LFxuXHRcdFx0XHRtZXRhQ29udGV4dCxcblx0XHRcdFx0b0FwcENvbXBvbmVudC5nZXREaWFnbm9zdGljcygpLFxuXHRcdFx0XHRtZXJnZSxcblx0XHRcdFx0dW5kZWZpbmVkXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKTtcblx0XHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRcdGxldCB1cGRhdGVIaWRkZW47XG5cdFx0XHQvL0ZpbmQgdGhlIFVwZGF0ZSBIaWRkZW4gb2YgdGhlIHJvb3QgZW50aXR5IHNldCBhbmQgYmluZCB0aGUgcHJvcGVydHkgdG8gQW55RWxlbWVudCwgYW55IGNoYW5nZXMgaW4gdGhlIHBhdGggb2YgdGhlIHJvb3QgVXBkYXRlSGlkZGVuIHdpbGwgYmUgdXBkYXRlZCB2aWEgdGhlIHByb3BlcnR5LCBpbnRlcm5hbCBtb2RlbCBjb250ZXh0IGlzIHVwZGF0ZWQgYmFzZWQgb24gdGhlIHByb3BlcnR5XG5cdFx0XHRjb25zdCBiVXBkYXRlSGlkZGVuID0gaXNFbnRpdHlTZXQoZW50aXR5U2V0KSAmJiBlbnRpdHlTZXQuYW5ub3RhdGlvbnMuVUk/LlVwZGF0ZUhpZGRlbj8udmFsdWVPZigpO1xuXHRcdFx0aWYgKGJVcGRhdGVIaWRkZW4gIT09IHRydWUpIHtcblx0XHRcdFx0dXBkYXRlSGlkZGVuID0gTW9kZWxIZWxwZXIuaXNVcGRhdGVIaWRkZW4oZW50aXR5U2V0LCBlbnRpdHlUeXBlKTtcblx0XHRcdH1cblx0XHRcdC8vRmluZCB0aGUgb3BlcmF0aW9uIGF2YWlsYWJsZSBwcm9wZXJ0eSBvZiB0aGUgcm9vdCBlZGl0IGNvbmZpZ3VyYXRpb24gYW5kIGZldGNoIHRoZSBwcm9wZXJ0eSB1c2luZyBBbnlFbGVtZW50XG5cdFx0XHRjb25zdCBzRWRpdEVuYWJsZUJpbmRpbmcgPSBnZXRFZGl0QnV0dG9uRW5hYmxlZChjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdGNvbnN0IGRyYWZ0Um9vdFBhdGggPSBNb2RlbEhlbHBlci5nZXREcmFmdFJvb3RQYXRoKG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IHNTdGlja3lSb290UGF0aCA9IE1vZGVsSGVscGVyLmdldFN0aWNreVJvb3RQYXRoKG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IHNQYXRoID0gZHJhZnRSb290UGF0aCB8fCBzU3RpY2t5Um9vdFBhdGg7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0aWYgKHNQYXRoKSB7XG5cdFx0XHRcdGNvbnN0IG9Sb290Q29udGV4dCA9IG9WaWV3LmdldE1vZGVsKCkuYmluZENvbnRleHQoc1BhdGgpLmdldEJvdW5kQ29udGV4dCgpO1xuXHRcdFx0XHRpZiAodXBkYXRlSGlkZGVuICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRjb25zdCBzSGlkZGVuRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGVxdWFsKGdldEhpZGRlbkV4cHJlc3Npb24oY29udmVydGVyQ29udGV4dCwgdXBkYXRlSGlkZGVuKSwgZmFsc2UpKTtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUVkaXRNb2RlbENvbnRleHQoc0hpZGRlbkV4cHJlc3Npb24sIG9WaWV3LCBvUm9vdENvbnRleHQsIFwicm9vdEVkaXRWaXNpYmxlXCIsIG9JbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNFZGl0RW5hYmxlQmluZGluZykge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlRWRpdE1vZGVsQ29udGV4dChzRWRpdEVuYWJsZUJpbmRpbmcsIG9WaWV3LCBvUm9vdENvbnRleHQsIFwicm9vdEVkaXRFbmFibGVkXCIsIG9JbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0dXBkYXRlRWRpdE1vZGVsQ29udGV4dDogZnVuY3Rpb24gKFxuXHRcdHNCaW5kaW5nRXhwcmVzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdG9WaWV3OiBWaWV3LFxuXHRcdG9Sb290Q29udGV4dDogQ29udGV4dCxcblx0XHRzUHJvcGVydHk6IHN0cmluZyxcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0XG5cdCkge1xuXHRcdGlmIChzQmluZGluZ0V4cHJlc3Npb24pIHtcblx0XHRcdGNvbnN0IG9IaWRkZW5FbGVtZW50ID0gbmV3IEFueUVsZW1lbnQoeyBhbnlUZXh0OiBzQmluZGluZ0V4cHJlc3Npb24gfSk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5zZXRCaW5kaW5nQ29udGV4dChudWxsKTtcblx0XHRcdG9WaWV3LmFkZERlcGVuZGVudChvSGlkZGVuRWxlbWVudCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5nZXRCaW5kaW5nKFwiYW55VGV4dFwiKTtcblx0XHRcdGNvbnN0IG9Db250ZXh0ID0gb0hpZGRlbkVsZW1lbnRcblx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0Py5iaW5kQ29udGV4dChvUm9vdENvbnRleHQuZ2V0UGF0aCgpLCBvUm9vdENvbnRleHQsIHsgJCRncm91cElkOiBcIiRhdXRvLkhlcm9lc1wiIH0pXG5cdFx0XHRcdD8uZ2V0Qm91bmRDb250ZXh0KCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5zZXRCaW5kaW5nQ29udGV4dChvQ29udGV4dCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudD8uZ2V0QmluZGluZyhcImFueVRleHRcIik/LmF0dGFjaENoYW5nZSgob0V2ZW50OiBFdmVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvTmV3VmFsdWUgPSAob0V2ZW50LmdldFNvdXJjZSgpIGFzIFByb3BlcnR5QmluZGluZykuZ2V0RXh0ZXJuYWxWYWx1ZSgpO1xuXHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc1Byb3BlcnR5LCBvTmV3VmFsdWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9zZXRBY3Rpb25FbmFibGVtZW50Rm9yVGFibGU6IGZ1bmN0aW9uIChcblx0XHRvU2VsZWN0ZWRDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkLFxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0c0FjdGlvbjogc3RyaW5nLFxuXHRcdHNQcm9wZXJ0eTogc3RyaW5nLFxuXHRcdGFSZXF1ZXN0UHJvbWlzZXM6IFByb21pc2U8X1JlcXVlc3RlZFByb3BlcnR5PltdXG5cdCkge1xuXHRcdC8vIFJlc2V0IGFsbCBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wdXRhdGlvblxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufWAsIHtcblx0XHRcdGJFbmFibGVkOiBmYWxzZSxcblx0XHRcdGFBcHBsaWNhYmxlOiBbXSxcblx0XHRcdGFOb3RBcHBsaWNhYmxlOiBbXVxuXHRcdH0pO1xuXHRcdC8vIE5vdGUgdGhhdCBub24gZHluYW1pYyBhY3Rpb25zIGFyZSBub3QgcHJvY2Vzc2VkIGhlcmUuIFRoZXkgYXJlIGVuYWJsZWQgYmVjYXVzZVxuXHRcdC8vIG9uZSBvciBtb3JlIGFyZSBzZWxlY3RlZCBhbmQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBjb25kaXRpb24gaW4gdGhlIHRlbXBsYXRpbmdcblx0XHQvLyBpcyB0aGVuIHVuZGVmaW5lZCBhbmQgdGh1cyB0aGUgYnV0dG9uIHRha2VzIHRoZSBkZWZhdWx0IGVuYWJsaW5nLCB3aGljaCBpcyB0cnVlIVxuXHRcdGNvbnN0IGFBcHBsaWNhYmxlID0gW10sXG5cdFx0XHRhTm90QXBwbGljYWJsZSA9IFtdLFxuXHRcdFx0c0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCA9IGAke29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2R5bmFtaWNBY3Rpb25zLyR7c0FjdGlvbn0vYkVuYWJsZWRgO1xuXHRcdGlmICh0eXBlb2Ygc1Byb3BlcnR5ID09PSBcIm9iamVjdFwiICYmIHNQcm9wZXJ0eSAhPT0gbnVsbCAmJiBzUHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKG9TZWxlY3RlZENvbnRleHQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3QoKSBhcyBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPjtcblx0XHRcdFx0Y29uc3Qgb1RyYW5zZm9ybWVkQmluZGluZyA9IHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KFxuXHRcdFx0XHRcdHNQcm9wZXJ0eSxcblx0XHRcdFx0XHRcIlBhdGhJbk1vZGVsXCIsXG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuXHRcdFx0XHRcdGZ1bmN0aW9uIChvQmluZGluZ0V4cHJlc3Npb246IFBhdGhJbk1vZGVsRXhwcmVzc2lvbjxQcmltaXRpdmVUeXBlPikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250ZXh0RGF0YSA/IGNvbnN0YW50KG9Db250ZXh0RGF0YVtvQmluZGluZ0V4cHJlc3Npb24ucGF0aF0pIDogY29uc3RhbnQoZmFsc2UpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBzUmVzdWx0ID0gY29tcGlsZUV4cHJlc3Npb24ob1RyYW5zZm9ybWVkQmluZGluZyk7XG5cdFx0XHRcdGlmIChzUmVzdWx0ID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgsIHRydWUpO1xuXHRcdFx0XHRcdGFBcHBsaWNhYmxlLnB1c2gob1NlbGVjdGVkQ29udGV4dCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YU5vdEFwcGxpY2FibGUucHVzaChvU2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Q29tbW9uVXRpbHMuc2V0RHluYW1pY0FjdGlvbkNvbnRleHRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgc0FjdGlvbiwgYUFwcGxpY2FibGUsIGFOb3RBcHBsaWNhYmxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dD8uZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlVHlwZT47XG5cdFx0XHRpZiAoc1Byb3BlcnR5ID09PSBudWxsICYmICEhb0NvbnRleHREYXRhW2AjJHtzQWN0aW9ufWBdKSB7XG5cdFx0XHRcdC8vbG9vayBmb3IgYWN0aW9uIGFkdmVydGlzZW1lbnQgaWYgcHJlc2VudCBhbmQgaXRzIHZhbHVlIGlzIG5vdCBudWxsXG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgsIHRydWUpO1xuXHRcdFx0fSBlbHNlIGlmIChvU2VsZWN0ZWRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Ly8gQ29sbGVjdCBwcm9taXNlcyB0byByZXRyaWV2ZSBzaW5nbGV0b24gb3Igbm9ybWFsIHByb3BlcnR5IHZhbHVlIGFzeW5jaHJvbm91c2x5XG5cdFx0XHRcdGFSZXF1ZXN0UHJvbWlzZXMucHVzaChDb21tb25VdGlscy5yZXF1ZXN0UHJvcGVydHkob1NlbGVjdGVkQ29udGV4dCwgc0FjdGlvbiwgc1Byb3BlcnR5LCBzRHluYW1pY0FjdGlvbkVuYWJsZWRQYXRoKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhUmVxdWVzdFByb21pc2VzO1xuXHR9XG59O1xuZXhwb3J0IGRlZmF1bHQgQWN0aW9uUnVudGltZTtcbiJdLCJtYXBw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
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/util/merge","sap/fe/core/CommonUtils","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/helpers/TypeGuards","sap/ui/core/message/Message","./controls/AnyElement","./converters/ConverterContext","./converters/objectPage/HeaderAndFooterAction"],function(e,t,n,o,i,a,
|
|
5
|
+
sap.ui.define(["sap/base/util/merge","sap/fe/core/CommonUtils","sap/fe/core/controls/Any","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/helpers/TypeGuards","sap/fe/core/templating/ActionHelper","sap/ui/core/message/Message","./controls/AnyElement","./converters/ConverterContext","./converters/MetaModelConverter","./converters/objectPage/HeaderAndFooterAction"],function(e,t,n,o,i,s,a,l,r,d,c,u){"use strict";var g=u.getHiddenExpression;var f=u.getEditButtonEnabled;var p=c.convertTypes;var v=a.getIsActionCriticalExpression;var b=s.isEntitySet;var m=o.transformRecursively;var y=o.isConstant;var A=o.equal;var h=o.constant;var E=o.compileExpression;var C=o.compileConstant;const M={_addMessageForActionParameter:function(e,t){e.addMessages(t.map(e=>{const t=e.actionParameterInfo.field.getBinding(e.actionParameterInfo.isMultiValue?"items":"value");return new l({message:e.message,type:"Error",processor:t===null||t===void 0?void 0:t.getModel(),persistent:true,target:t===null||t===void 0?void 0:t.getResolvedPath()})}))},validateProperties:async function(e,t,n){await Promise.allSettled(t.map(e=>e.validationPromise));const o=t.filter(e=>e.field.getRequired());const i=e.getMessageModel().getData();const s=o.filter(e=>{const t=e.field.getId();const n=i.filter(e=>e.getControlIds().some(e=>e.includes(t)));if(n.length>0){return false}else if(e.isMultiValue){return e.value===undefined||!e.value.length}else{const t=e.field.getValue();return t===undefined||t===null||t===""}});if(s.length){this._addMessageForActionParameter(e,s.map(e=>{var t;return{actionParameterInfo:e,message:n.getText("C_OPERATIONS_ACTION_PARAMETER_DIALOG_MISSING_MANDATORY_MSG",[((t=e.field.getParent())===null||t===void 0?void 0:t.getAggregation("label")).getText()])}}))}const a=t.find(e=>e.hasError||e.field.getValueState()==="Error"||s.includes(e));if(a){a.field.focus();return false}else{return true}},setActionEnablement:async function(e,n,o,i){const s=[];for(const a in n){let l=[];e.setProperty(a,false);const r=n[a];for(const t of o){const n=t;if(n){const t=n.getObject();if(i==="chart"){if(r===null&&!!t[`#${a}`]||n.getObject(r)){e.setProperty(a,true);break}}else if(i==="table"){l=this._setActionEnablementForTable(n,e,a,r,l)}}}if(i==="table"){if(!o.length){e.setProperty(`dynamicActions/${a}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});s.push(t.setContextsBasedOnOperationAvailable(e,[]))}else if(o.length&&typeof r==="string"){s.push(t.setContextsBasedOnOperationAvailable(e,l))}}}return Promise.all(s)},setActionEnablementAfterPatch:function(e,t,n){const o=n===null||n===void 0?void 0:n.getObject();const i=(o===null||o===void 0?void 0:o.controls)||{};for(const n in i){if(i[n]&&i[n].controlId){const o=e.byId(n);if(o&&o.isA("sap.ui.mdc.Table")){const e=o.getRowBinding();if(e==t){M.setActionEnablement(o.getBindingContext("internal"),JSON.parse(o.data("operationAvailableMap").customData),o.getSelectedContexts(),"table")}}}}},updateEditButtonVisibilityAndEnablement(n){var o,s;const a=(o=n.getViewData())===null||o===void 0?void 0:o.viewLevel,l=(s=n.getModel("ui"))===null||s===void 0?void 0:s.getProperty("/isEditable");if(a>1&&l!==true){var r,c,u;const o=n.getBindingContext();const s=t.getAppComponent(n);const a=i.getMetaPathForContext(o);const l=i.getRootEntitySetPath(a);const p=o===null||o===void 0?void 0:(r=o.getModel().getMetaModel())===null||r===void 0?void 0:r.getContext(o===null||o===void 0?void 0:o.getPath());const v=d===null||d===void 0?void 0:d.createConverterContextForMacro(l,p,s.getDiagnostics(),e,undefined);const m=v.getEntitySet();const y=v.getEntityType();let h;const C=b(m)&&((c=m.annotations.UI)===null||c===void 0?void 0:(u=c.UpdateHidden)===null||u===void 0?void 0:u.valueOf());if(C!==true){h=i.isUpdateHidden(m,y)}const M=f(v);const P=i.getDraftRootPath(o);const x=i.getStickyRootPath(o);const B=P||x;const I=n.getBindingContext("internal");if(B){const e=n.getModel().bindContext(B).getBoundContext();if(h!==undefined){const t=E(A(g(v,h),false));this.updateEditModelContext(t,n,e,"rootEditVisible",I)}if(M){this.updateEditModelContext(M,n,e,"rootEditEnabled",I)}}}},updateEditModelContext:function(e,t,n,o,i){if(e){var s,a,l;const d=new r({anyText:e});d.setBindingContext(null);t.addDependent(d);d.getBinding("anyText");const c=(s=d.getModel())===null||s===void 0?void 0:(a=s.bindContext(n.getPath(),n,{$$groupId:"$auto.Heroes"}))===null||a===void 0?void 0:a.getBoundContext();d.setBindingContext(c);d===null||d===void 0?void 0:(l=d.getBinding("anyText"))===null||l===void 0?void 0:l.attachChange(e=>{const t=e.getSource().getExternalValue();i.setProperty(o,t)})}},_setActionEnablementForTable:function(e,n,o,i,s){n.setProperty(`dynamicActions/${o}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});const a=[],l=[],r=`${n.getPath()}/dynamicActions/${o}/bEnabled`;if(typeof i==="object"&&i!==null&&i!==undefined){if(e){const t=e.getObject();const o=m(i,"PathInModel",function(e){return t?h(t[e.path]):h(false)},true);const s=E(o);if(s==="true"){n.getModel().setProperty(r,true);a.push(e)}else{l.push(e)}}t.setDynamicActionContexts(n,o,a,l)}else{const a=e===null||e===void 0?void 0:e.getObject();if(i===null&&!!a[`#${o}`]){n.getModel().setProperty(r,true)}else if(e!==undefined){s.push(t.requestProperty(e,o,i,r))}}return s},getIsActionCritical:function(e,t){let o=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];let i=true;const s=p(e);const a=s.resolvePath(t);const l=a.target;if(!l){return i}const r=v(l,s);if(y(r)){i=C(r,false,undefined,true)}else if(o.length>0){const e=new n({anyBoolean:E(r)});e.setModel(o[0].getModel());e.setBindingContext(o[0]);i=e.getBinding("anyBoolean").getExternalValue();e.destroy()}return i}};return M},false);
|
|
6
6
|
//# sourceMappingURL=ActionRuntime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionRuntime.js","names":["sap","ui","define","merge","CommonUtils","BindingToolkit","ModelHelper","TypeGuards","Message","AnyElement","ConverterContext","HeaderAndFooterAction","getHiddenExpression","getEditButtonEnabled","isEntitySet","transformRecursively","equal","constant","compileExpression","ActionRuntime","_addMessageForActionParameter","messageManager","messageParameters","addMessages","map","messageParameter","binding","actionParameterInfo","field","getBinding","isMultiValue","message","type","processor","getModel","persistent","target","getResolvedPath","validateProperties","async","actionParameterInfos","resourceModel","Promise","allSettled","validationPromise","requiredParameterInfos","filter","parameterInfo","getRequired","allMessages","getMessageModel","getData","emptyRequiredFields","requiredParameterInfo","fieldId","getId","relevantMessages","msg","getControlIds","some","controlId","includes","length","value","undefined","fieldValue","getValue","this","_actionParameterInfo$","getText","getParent","getAggregation","firstInvalidParameter","find","hasError","getValueState","focus","setActionEnablement","oInternalModelContext","oActionOperationAvailableMap","aSelectedContexts","sControl","aPromises","sAction","aRequestPromises","setProperty","sProperty","element","oSelectedContext","oContextData","getObject","_setActionEnablementForTable","bEnabled","aApplicable","aNotApplicable","push","setContextsBasedOnOperationAvailable","all","setActionEnablementAfterPatch","oView","oListBinding","oInternalModelContextData","oControls","controls","sKey","oTable","byId","isA","oRowBinding","getRowBinding","getBindingContext","JSON","parse","data","customData","getSelectedContexts","updateEditButtonVisibilityAndEnablement","_oView$getViewData","_oView$getModel","iViewLevel","getViewData","viewLevel","isEditable","getProperty","_oContext$getModel$ge","_entitySet$annotation","_entitySet$annotation2","oContext","oAppComponent","getAppComponent","sMetaPath","getMetaPathForContext","sEntitySet","getRootEntitySetPath","metaContext","getMetaModel","getContext","getPath","converterContext","createConverterContextForMacro","getDiagnostics","entitySet","getEntitySet","entityType","getEntityType","updateHidden","bUpdateHidden","annotations","UI","UpdateHidden","valueOf","isUpdateHidden","sEditEnableBinding","draftRootPath","getDraftRootPath","sStickyRootPath","getStickyRootPath","sPath","oRootContext","bindContext","getBoundContext","sHiddenExpression","updateEditModelContext","sBindingExpression","_oHiddenElement$getMo","_oHiddenElement$getMo2","_oHiddenElement$getBi","oHiddenElement","anyText","setBindingContext","addDependent","$$groupId","attachChange","oEvent","oNewValue","getSource","getExternalValue","sDynamicActionEnabledPath","oTransformedBinding","oBindingExpression","path","sResult","setDynamicActionContexts","requestProperty"],"sources":["ActionRuntime-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,CAAC,sBAAuB,0BAA2B,qCAAsC,kCAAmC,iCAAkC,8BAA+B,wBAAyB,gCAAiC,iDAAkD,SAAUC,EAAOC,EAAaC,EAAgBC,EAAaC,EAAYC,EAASC,EAAYC,EAAkBC,
|
|
1
|
+
{"version":3,"file":"ActionRuntime.js","names":["sap","ui","define","merge","CommonUtils","Any","BindingToolkit","ModelHelper","TypeGuards","ActionHelper","Message","AnyElement","ConverterContext","MetaModelConverter","HeaderAndFooterAction","getHiddenExpression","getEditButtonEnabled","convertTypes","getIsActionCriticalExpression","isEntitySet","transformRecursively","isConstant","equal","constant","compileExpression","compileConstant","ActionRuntime","_addMessageForActionParameter","messageManager","messageParameters","addMessages","map","messageParameter","binding","actionParameterInfo","field","getBinding","isMultiValue","message","type","processor","getModel","persistent","target","getResolvedPath","validateProperties","async","actionParameterInfos","resourceModel","Promise","allSettled","validationPromise","requiredParameterInfos","filter","parameterInfo","getRequired","allMessages","getMessageModel","getData","emptyRequiredFields","requiredParameterInfo","fieldId","getId","relevantMessages","msg","getControlIds","some","controlId","includes","length","value","undefined","fieldValue","getValue","this","_actionParameterInfo$","getText","getParent","getAggregation","firstInvalidParameter","find","hasError","getValueState","focus","setActionEnablement","oInternalModelContext","oActionOperationAvailableMap","aSelectedContexts","sControl","aPromises","sAction","aRequestPromises","setProperty","sProperty","element","oSelectedContext","oContextData","getObject","_setActionEnablementForTable","bEnabled","aApplicable","aNotApplicable","push","setContextsBasedOnOperationAvailable","all","setActionEnablementAfterPatch","oView","oListBinding","oInternalModelContextData","oControls","controls","sKey","oTable","byId","isA","oRowBinding","getRowBinding","getBindingContext","JSON","parse","data","customData","getSelectedContexts","updateEditButtonVisibilityAndEnablement","_oView$getViewData","_oView$getModel","iViewLevel","getViewData","viewLevel","isEditable","getProperty","_oContext$getModel$ge","_entitySet$annotation","_entitySet$annotation2","oContext","oAppComponent","getAppComponent","sMetaPath","getMetaPathForContext","sEntitySet","getRootEntitySetPath","metaContext","getMetaModel","getContext","getPath","converterContext","createConverterContextForMacro","getDiagnostics","entitySet","getEntitySet","entityType","getEntityType","updateHidden","bUpdateHidden","annotations","UI","UpdateHidden","valueOf","isUpdateHidden","sEditEnableBinding","draftRootPath","getDraftRootPath","sStickyRootPath","getStickyRootPath","sPath","oRootContext","bindContext","getBoundContext","sHiddenExpression","updateEditModelContext","sBindingExpression","_oHiddenElement$getMo","_oHiddenElement$getMo2","_oHiddenElement$getBi","oHiddenElement","anyText","setBindingContext","addDependent","$$groupId","attachChange","oEvent","oNewValue","getSource","getExternalValue","sDynamicActionEnabledPath","oTransformedBinding","oBindingExpression","path","sResult","setDynamicActionContexts","requestProperty","getIsActionCritical","metaModel","contexts","arguments","isActionCriticalValue","convertedTypes","actionTargetResolution","resolvePath","actionTarget","isActionCriticalBindingExp","anyObject","anyBoolean","setModel","destroy"],"sources":["ActionRuntime-dbg.js"],"mappings":"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"}
|
|
@@ -1,29 +1,33 @@
|
|
|
1
|
-
import type { PrimitiveType } from "@sap-ux/vocabularies-types";
|
|
1
|
+
import type { Action as EdmAction, PrimitiveType } from "@sap-ux/vocabularies-types";
|
|
2
2
|
import merge from "sap/base/util/merge";
|
|
3
3
|
import type { FEView } from "sap/fe/core/BaseController";
|
|
4
4
|
import type { _RequestedProperty } from "sap/fe/core/CommonUtils";
|
|
5
5
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
6
|
+
import type ResourceModel from "sap/fe/core/ResourceModel";
|
|
7
|
+
import Any from "sap/fe/core/controls/Any";
|
|
6
8
|
import type { PathInModelExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
7
|
-
import { compileExpression, constant, equal, transformRecursively } from "sap/fe/core/helpers/BindingToolkit";
|
|
9
|
+
import { compileConstant, compileExpression, constant, equal, isConstant, transformRecursively } from "sap/fe/core/helpers/BindingToolkit";
|
|
8
10
|
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
9
11
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
10
12
|
import { isEntitySet } from "sap/fe/core/helpers/TypeGuards";
|
|
11
|
-
import
|
|
13
|
+
import { getIsActionCriticalExpression } from "sap/fe/core/templating/ActionHelper";
|
|
12
14
|
import type Label from "sap/m/Label";
|
|
13
15
|
import type Event from "sap/ui/base/Event";
|
|
14
16
|
import Message from "sap/ui/core/message/Message";
|
|
15
17
|
import type MessageManager from "sap/ui/core/message/MessageManager";
|
|
16
18
|
import type View from "sap/ui/core/mvc/View";
|
|
17
19
|
import type Field from "sap/ui/mdc/Field";
|
|
18
|
-
import type MultiValueFieldItem from "sap/ui/mdc/field/MultiValueFieldItem";
|
|
19
20
|
import type MultiValueField from "sap/ui/mdc/MultiValueField";
|
|
20
21
|
import type Table from "sap/ui/mdc/Table";
|
|
22
|
+
import type MultiValueFieldItem from "sap/ui/mdc/field/MultiValueFieldItem";
|
|
23
|
+
import type PropertyBinding from "sap/ui/model/PropertyBinding";
|
|
21
24
|
import type Context from "sap/ui/model/odata/v4/Context";
|
|
22
25
|
import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
23
|
-
import type
|
|
26
|
+
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
24
27
|
import AnyElement from "./controls/AnyElement";
|
|
25
28
|
import ConverterContext from "./converters/ConverterContext";
|
|
26
29
|
import type { BaseManifestSettings } from "./converters/ManifestSettings";
|
|
30
|
+
import { convertTypes } from "./converters/MetaModelConverter";
|
|
27
31
|
import { getEditButtonEnabled, getHiddenExpression } from "./converters/objectPage/HeaderAndFooterAction";
|
|
28
32
|
|
|
29
33
|
type ActionParameter = {
|
|
@@ -221,7 +225,10 @@ const ActionRuntime = {
|
|
|
221
225
|
const oAppComponent = CommonUtils.getAppComponent(oView);
|
|
222
226
|
const sMetaPath = ModelHelper.getMetaPathForContext(oContext);
|
|
223
227
|
const sEntitySet = ModelHelper.getRootEntitySetPath(sMetaPath);
|
|
224
|
-
const metaContext = oContext
|
|
228
|
+
const metaContext = oContext
|
|
229
|
+
?.getModel()
|
|
230
|
+
.getMetaModel()
|
|
231
|
+
?.getContext(oContext?.getPath());
|
|
225
232
|
const converterContext = ConverterContext?.createConverterContextForMacro(
|
|
226
233
|
sEntitySet,
|
|
227
234
|
metaContext,
|
|
@@ -331,6 +338,41 @@ const ActionRuntime = {
|
|
|
331
338
|
}
|
|
332
339
|
}
|
|
333
340
|
return aRequestPromises;
|
|
341
|
+
},
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Check if action is critical.
|
|
345
|
+
*
|
|
346
|
+
* @param metaModel MetaModel
|
|
347
|
+
* @param path Path to the action
|
|
348
|
+
* @param contexts Contexts in case of bound actions.
|
|
349
|
+
* @returns Boolean indicating action is critical
|
|
350
|
+
*/
|
|
351
|
+
getIsActionCritical: function (metaModel: ODataMetaModel, path: string, contexts: Context[] = []): Boolean {
|
|
352
|
+
// default is true.
|
|
353
|
+
let isActionCriticalValue = true;
|
|
354
|
+
const convertedTypes = convertTypes(metaModel);
|
|
355
|
+
const actionTargetResolution = convertedTypes.resolvePath<EdmAction>(path);
|
|
356
|
+
const actionTarget = actionTargetResolution.target;
|
|
357
|
+
if (!actionTarget) {
|
|
358
|
+
return isActionCriticalValue;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
const isActionCriticalBindingExp = getIsActionCriticalExpression(actionTarget, convertedTypes);
|
|
362
|
+
|
|
363
|
+
if (isConstant(isActionCriticalBindingExp)) {
|
|
364
|
+
// Constant expression resolves to "true" or "false". But, we need boolean.
|
|
365
|
+
isActionCriticalValue = compileConstant(isActionCriticalBindingExp, false, undefined, true);
|
|
366
|
+
} else if (contexts.length > 0) {
|
|
367
|
+
// We evaluate the value of the expression via a UI5 managed object instance.
|
|
368
|
+
const anyObject = new Any({ anyBoolean: compileExpression(isActionCriticalBindingExp) });
|
|
369
|
+
anyObject.setModel(contexts[0].getModel());
|
|
370
|
+
anyObject.setBindingContext(contexts[0]);
|
|
371
|
+
isActionCriticalValue = anyObject.getBinding("anyBoolean").getExternalValue();
|
|
372
|
+
anyObject.destroy();
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
return isActionCriticalValue;
|
|
334
376
|
}
|
|
335
377
|
};
|
|
336
378
|
export default ActionRuntime;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/controllerextensions/routing/RouterProxy", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/library", "sap/fe/core/manifestMerger/ChangePageConfiguration", "sap/fe/core/support/Diagnostics", "sap/ui/core/Core", "sap/ui/core/Element", "sap/ui/core/UIComponent", "sap/ui/mdc/table/TableTypeBase", "sap/ui/model/json/JSONModel", "./controllerextensions/BusyLocker", "./converters/MetaModelConverter", "./helpers/SemanticDateOperators"], function (Log, AppStateHandler, RouterProxy, ClassSupport, ModelHelper, library, ChangePageConfiguration, Diagnostics, Core, UI5Element, UIComponent, TableTypeBase, JSONModel, BusyLocker, MetaModelConverter, SemanticDateOperators) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/controllerextensions/routing/RouterProxy", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/DraftEditState", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/library", "sap/fe/core/manifestMerger/ChangePageConfiguration", "sap/fe/core/support/Diagnostics", "sap/m/routing/Router", "sap/ui/core/Core", "sap/ui/core/Element", "sap/ui/core/UIComponent", "sap/ui/mdc/table/TableTypeBase", "sap/ui/model/json/JSONModel", "./controllerextensions/BusyLocker", "./converters/MetaModelConverter", "./helpers/SemanticDateOperators"], function (Log, AppStateHandler, RouterProxy, ClassSupport, DraftEditState, ModelHelper, library, ChangePageConfiguration, Diagnostics, Router, Core, UI5Element, UIComponent, TableTypeBase, JSONModel, BusyLocker, MetaModelConverter, SemanticDateOperators) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _class, _class2;
|
|
@@ -31,6 +31,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/contr
|
|
|
31
31
|
ROUTERCLASS: "sap.m.routing.Router"
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
|
+
// Keep a reference so as to keep the import despite it not being directly used
|
|
35
|
+
const _mRouter = Router;
|
|
34
36
|
/**
|
|
35
37
|
* Main class for components used for an application in SAP Fiori elements.
|
|
36
38
|
*
|
|
@@ -86,6 +88,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/contr
|
|
|
86
88
|
asyncComponentService: {
|
|
87
89
|
factoryName: "sap.fe.core.services.AsyncComponentService",
|
|
88
90
|
startup: "waitFor"
|
|
91
|
+
},
|
|
92
|
+
collaborationManagerService: {
|
|
93
|
+
factoryName: "sap.fe.core.services.CollaborationManagerService",
|
|
94
|
+
startup: "waitFor"
|
|
95
|
+
},
|
|
96
|
+
collaborativeToolsService: {
|
|
97
|
+
factoryName: "sap.fe.core.services.CollaborativeToolsService",
|
|
98
|
+
startup: "waitFor"
|
|
89
99
|
}
|
|
90
100
|
},
|
|
91
101
|
rootView: {
|
|
@@ -272,6 +282,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/contr
|
|
|
272
282
|
// Adding Semantic Date Operators
|
|
273
283
|
// Commenting since it is not needed for SingleRange
|
|
274
284
|
SemanticDateOperators.addSemanticDateOperators();
|
|
285
|
+
DraftEditState.addDraftEditStateOperator();
|
|
275
286
|
|
|
276
287
|
// the init function configures the routing according to the settings above
|
|
277
288
|
// it will call the createContent function to instantiate the RootView and add it to the UIComponent aggregations
|
|
@@ -403,6 +414,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/contr
|
|
|
403
414
|
_proto.getEnvironmentCapabilities = function getEnvironmentCapabilities() {
|
|
404
415
|
return {};
|
|
405
416
|
};
|
|
417
|
+
_proto.getCollaborationManagerService = function getCollaborationManagerService() {
|
|
418
|
+
return {};
|
|
419
|
+
};
|
|
420
|
+
_proto.getCollaborativeToolsService = function getCollaborativeToolsService() {
|
|
421
|
+
return {};
|
|
422
|
+
};
|
|
406
423
|
_proto.getStartupParameters = async function getStartupParameters() {
|
|
407
424
|
const oComponentData = this.getComponentData();
|
|
408
425
|
return Promise.resolve(oComponentData && oComponentData.startupParameters || {});
|
|
@@ -434,9 +451,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/contr
|
|
|
434
451
|
Log.error(exception);
|
|
435
452
|
BusyLocker.unlock(this.getModel("ui"));
|
|
436
453
|
}
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Used to allow disabling the Collaboration Manager integration for the OVP use case.
|
|
458
|
+
*
|
|
459
|
+
* @returns Whether the collaboration manager service is active.
|
|
460
|
+
*/;
|
|
461
|
+
_proto.isCollaborationManagerServiceEnabled = function isCollaborationManagerServiceEnabled() {
|
|
462
|
+
return true;
|
|
437
463
|
};
|
|
438
464
|
return AppComponent;
|
|
439
465
|
}(UIComponent), _class2.instanceMap = {}, _class2)) || _class);
|
|
440
466
|
return AppComponent;
|
|
441
467
|
}, false);
|
|
442
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJUYWJsZVR5cGVCYXNlIiwicHJvdG90eXBlIiwiZXhpdCIsIl9vTWFuYWdlZE9iamVjdE1vZGVsIiwiZGVzdHJveSIsIlVJNUVsZW1lbnQiLCJhcHBseSIsIk5BVkNPTkYiLCJGQ0wiLCJWSUVXTkFNRSIsIlZJRVdOQU1FX0NPTVBBVElCSUxJVFkiLCJST1VURVJDTEFTUyIsIk5BVkNPTlRBSU5FUiIsIkFwcENvbXBvbmVudCIsImRlZmluZVVJNUNsYXNzIiwiaW50ZXJmYWNlcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0Iiwic2VydmljZXMiLCJyZXNvdXJjZU1vZGVsIiwiZmFjdG9yeU5hbWUiLCJzdGFydHVwIiwic2V0dGluZ3MiLCJidW5kbGVzIiwibW9kZWxOYW1lIiwicm91dGluZ1NlcnZpY2UiLCJzaGVsbFNlcnZpY2VzIiwiU2hlbGxVSVNlcnZpY2UiLCJuYXZpZ2F0aW9uU2VydmljZSIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiYXN5bmNDb21wb25lbnRTZXJ2aWNlIiwicm9vdFZpZXciLCJ2aWV3TmFtZSIsInR5cGUiLCJhc3luYyIsImlkIiwicm91dGluZyIsImNvbnRyb2xJZCIsInJvdXRlckNsYXNzIiwidmlld1R5cGUiLCJjb250cm9sQWdncmVnYXRpb24iLCJjb250YWluZXJPcHRpb25zIiwicHJvcGFnYXRlTW9kZWwiLCJkZXNpZ250aW1lIiwic3RhcnR1cE1vZGUiLCJOb3JtYWwiLCJfaXNGY2xFbmFibGVkIiwib01hbmlmZXN0VUk1IiwiZ2V0TWFuaWZlc3RFbnRyeSIsImluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24iLCJwYWdlSWQiLCJwYXRoIiwidmFsdWUiLCJjaGFuZ2VDb25maWd1cmF0aW9uIiwiZ2V0TWFuaWZlc3QiLCJnZXRSb3V0ZXJQcm94eSIsIl9vUm91dGVyUHJveHkiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJfb0FwcFN0YXRlSGFuZGxlciIsImdldFJvb3RWaWV3Q29udHJvbGxlciIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsImdldFJvb3RDb250YWluZXIiLCJnZXRDb250ZW50IiwiZ2V0U3RhcnR1cE1vZGUiLCJzZXRTdGFydHVwTW9kZUNyZWF0ZSIsIkNyZWF0ZSIsInNldFN0YXJ0dXBNb2RlQXV0b0NyZWF0ZSIsIkF1dG9DcmVhdGUiLCJzZXRTdGFydHVwTW9kZURlZXBsaW5rIiwiRGVlcGxpbmsiLCJpbml0IiwidWlNb2RlbCIsIkpTT05Nb2RlbCIsImVkaXRNb2RlIiwiRWRpdE1vZGUiLCJEaXNwbGF5IiwiaXNFZGl0YWJsZSIsImRyYWZ0U3RhdHVzIiwiRHJhZnRTdGF0dXMiLCJDbGVhciIsImJ1c3kiLCJidXN5TG9jYWwiLCJwYWdlcyIsIm9JbnRlcm5hbE1vZGVsIiwic2V0RGVmYXVsdEJpbmRpbmdNb2RlIiwiTW9kZWxIZWxwZXIiLCJlbmhhbmNlVWlKU09OTW9kZWwiLCJlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwiLCJzZXRNb2RlbCIsImJJbml0aWFsaXplUm91dGluZyIsInVuZGVmaW5lZCIsIlJvdXRlclByb3h5IiwiQXBwU3RhdGVIYW5kbGVyIiwiX29EaWFnbm9zdGljcyIsIkRpYWdub3N0aWNzIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJpc0EiLCJlbmhhbmNlT0RhdGFNb2RlbCIsImVudGl0eUNvbnRhaW5lciIsImdldE1ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJhcHAiLCJkaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0IiwiY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbiIsIlNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImFkZFNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImluc3RhbmNlTWFwIiwiZ2V0SWQiLCJMb2ciLCJpbmZvIiwiaW5jbHVkZXMiLCJFcnJvciIsIm9uU2VydmljZXNTdGFydGVkIiwiZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uIiwidGhlbiIsImF0dGFjaFJvdXRlTWF0Y2hlcnMiLCJnZXRSb3V0ZXIiLCJpbml0aWFsaXplIiwiY2F0Y2giLCJlcnJvciIsIm9SZXNvdXJjZUJ1bmRsZSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJkaXNwbGF5RXJyb3JQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiRkNMTGV2ZWwiLCJnZXRSb3V0aW5nU2VydmljZSIsImluaXRpYWxpemVSb3V0aW5nIiwiYXR0YWNoQWZ0ZXJJbml0IiwiZXJyIiwidG9TdHJpbmciLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzIiwiZ2V0RGlhZ25vc3RpY3MiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwid2luZG93IiwiX3JvdXRpbmciLCJlIiwib01haW5Nb2RlbCIsIm9Nb2RlbHMiLCJvSGVhZGVycyIsIm9SZXF1ZXN0b3IiLCJPYmplY3QiLCJhc3NpZ24iLCJtSGVhZGVycyIsImJlZm9yZUV4aXQiLCJnZXRTaGVsbFNlcnZpY2VzIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldFN0YXJ0dXBQYXJhbWV0ZXJzIiwib0NvbXBvbmVudERhdGEiLCJnZXRDb21wb25lbnREYXRhIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJyZXN0b3JlIiwidmlld1N0YXRlIiwib25SZXN0b3JlIiwic3VzcGVuZCIsIm9uU3VzcGVuZCIsIm5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIiLCJCdXN5TG9ja2VyIiwiaXNMb2NrZWQiLCJfbWFuYWdlRGVlcExpbmtTdGFydHVwIiwiZXhjZXB0aW9uIiwidW5sb2NrIiwiVUlDb21wb25lbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFwcENvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIEZsZXhpYmxlQ29sdW1uTGF5b3V0IGZyb20gXCJzYXAvZi9GbGV4aWJsZUNvbHVtbkxheW91dFwiO1xuaW1wb3J0IEFwcFN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgUm91dGVyUHJveHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3JvdXRpbmcvUm91dGVyUHJveHlcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBjaGFuZ2VDb25maWd1cmF0aW9uLCBjbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyB9IGZyb20gXCJzYXAvZmUvY29yZS9tYW5pZmVzdE1lcmdlci9DaGFuZ2VQYWdlQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgUm9vdFZpZXdCYXNlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvRW52aXJvbm1lbnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvUm91dGluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFNpZGVFZmZlY3RzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgRGlhZ25vc3RpY3MgZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RDb250ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5pbXBvcnQgVUlDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL1VJQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IFRhYmxlVHlwZUJhc2UgZnJvbSBcInNhcC91aS9tZGMvdGFibGUvVGFibGVUeXBlQmFzZVwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvYmFzZS9NYW5hZ2VkT2JqZWN0TW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCB7IGRlbGV0ZU1vZGVsQ2FjaGVEYXRhIH0gZnJvbSBcIi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcIi4vaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcblxuY29uc3QgU3RhcnR1cE1vZGUgPSBsaWJyYXJ5LlN0YXJ0dXBNb2RlO1xuVGFibGVUeXBlQmFzZS5wcm90b3R5cGUuZXhpdCA9IGZ1bmN0aW9uICh0aGlzOiB7IF9vTWFuYWdlZE9iamVjdE1vZGVsPzogTWFuYWdlZE9iamVjdE1vZGVsIH0pIHtcblx0dGhpcy5fb01hbmFnZWRPYmplY3RNb2RlbD8uZGVzdHJveSgpO1xuXHRkZWxldGUgdGhpcy5fb01hbmFnZWRPYmplY3RNb2RlbDtcblx0VUk1RWxlbWVudC5wcm90b3R5cGUuZXhpdC5hcHBseSh0aGlzLCBbXSk7XG59O1xuY29uc3QgTkFWQ09ORiA9IHtcblx0RkNMOiB7XG5cdFx0VklFV05BTUU6IFwic2FwLmZlLmNvcmUucm9vdFZpZXcuRmNsXCIsXG5cdFx0VklFV05BTUVfQ09NUEFUSUJJTElUWTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5GY2xcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAuZi5yb3V0aW5nLlJvdXRlclwiXG5cdH0sXG5cdE5BVkNPTlRBSU5FUjoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS5jb3JlLnJvb3RWaWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFZJRVdOQU1FX0NPTVBBVElCSUxJVFk6IFwic2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuTmF2Q29udGFpbmVyXCIsXG5cdFx0Uk9VVEVSQ0xBU1M6IFwic2FwLm0ucm91dGluZy5Sb3V0ZXJcIlxuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb21wb25lbnREYXRhID0ge1xuXHRzdGFydHVwUGFyYW1ldGVycz86IHtcblx0XHRwcmVmZXJyZWRNb2RlPzogc3RyaW5nW107XG5cdH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duW10+O1xuXHQvL2ZlRW52aXJvbm1lbnQgaXMgb2JqZWN0IHdoaWNoIGlzIHJlY2VpdmVkIGFzIGEgcGFydCBvZiB0aGUgY29tcG9uZW50IGRhdGEgZm9yIE15IEluYm94IGFwcGxpY2F0aW9ucy5cblx0ZmVFbnZpcm9ubWVudD86IHtcblx0XHQvL1dpdGhpbiB0aGlzIG9iamVjdCB0aGV5IHBhc3MgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0SW50ZW50KCkgd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VtYW50aWNPYmplY3QgYW5kIGFjdGlvbiBhcyBzZXBhcmF0ZSBwcm9wZXJ0eS12YWx1ZSBlbnRyaWVzIHRoYXQgYXJlIHRoZW4gdXNlZCB0byB1cGRhdGUgdGhlIHJlbGF0ZWQgYXBwcyBidXR0b24uXG5cdFx0Z2V0SW50ZW50OiBGdW5jdGlvbjtcblx0XHQvL1dpdGhpbiB0aGlzIG9iamVjdCB0aGV5IHBhc3MgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0U2hhcmVDb250cm9sVmlzaWJpbGl0eSgpIHRoYXQgcmV0dXJucyBib29sZWFuIHZhbHVlcyh0cnVlIG9yIGZhbHNlKSB3aGljaCBkZXRlcm1pbmVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzaGFyZSBidXR0b24uXG5cdFx0Z2V0U2hhcmVDb250cm9sVmlzaWJpbGl0eTogRnVuY3Rpb247XG5cdH07XG59O1xuXG5leHBvcnQgdHlwZSBTdGFydHVwUGFyYW1ldGVycyA9IHtcblx0cHJlZmVycmVkTW9kZT86IHN0cmluZ1tdO1xufSAmIFJlY29yZDxzdHJpbmcsIHVua25vd25bXT47XG4vKipcbiAqIE1haW4gY2xhc3MgZm9yIGNvbXBvbmVudHMgdXNlZCBmb3IgYW4gYXBwbGljYXRpb24gaW4gU0FQIEZpb3JpIGVsZW1lbnRzLlxuICpcbiAqIEFwcGxpY2F0aW9uIGRldmVsb3BlcnMgdXNpbmcgdGhlIHRlbXBsYXRlcyBhbmQgYnVpbGRpbmcgYmxvY2tzIHByb3ZpZGVkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cyBzaG91bGQgY3JlYXRlIHRoZWlyIGFwcHMgYnkgZXh0ZW5kaW5nIHRoaXMgY29tcG9uZW50LlxuICogVGhpcyBlbnN1cmVzIHRoYXQgYWxsIHRoZSBuZWNlc3Nhcnkgc2VydmljZXMgdGhhdCB5b3UgbmVlZCBmb3IgdGhlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgdGVtcGxhdGVzIHRvIHdvcmsgcHJvcGVybHkgYXJlIHN0YXJ0ZWQuXG4gKlxuICogV2hlbiB5b3UgdXNlIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCBhcyB0aGUgYmFzZSBjb21wb25lbnQsIHlvdSBhbHNvIG5lZWQgdG8gdXNlIGEgcm9vdFZpZXcuIFNBUCBGaW9yaSBlbGVtZW50cyBwcm92aWRlcyB0d28gb3B0aW9uczogPGJyLz5cbiAqICAtIHNhcC5mZS5jb3JlLnJvb3RWaWV3Lk5hdkNvbnRhaW5lciB3aGVuIHVzaW5nIHNhcC5tLnJvdXRpbmcuUm91dGVyIDxici8+XG4gKiAgLSBzYXAuZmUuY29yZS5yb290Vmlldy5GY2wgd2hlbiB1c2luZyBzYXAuZi5yb3V0aW5nLlJvdXRlciAoRkNMIHVzZSBjYXNlKSA8YnIvPlxuICpcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIsIHtcblx0aW50ZXJmYWNlczogW1wic2FwLnVpLmNvcmUuSUFzeW5jQ29udGVudENyZWF0aW9uXCJdLFxuXHRjb25maWc6IHtcblx0XHRmdWxsV2lkdGg6IHRydWVcblx0fSxcblx0bWFuaWZlc3Q6IHtcblx0XHRcInNhcC51aTVcIjoge1xuXHRcdFx0c2VydmljZXM6IHtcblx0XHRcdFx0cmVzb3VyY2VNb2RlbDoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJlc291cmNlTW9kZWxTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCIsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRtb2RlbE5hbWU6IFwic2FwLmZlLmkxOG5cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0cm91dGluZ1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Sb3V0aW5nU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNoZWxsU2VydmljZXM6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaGVsbFNlcnZpY2VzXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0U2hlbGxVSVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAudXNoZWxsLnVpNXNlcnZpY2UuU2hlbGxVSVNlcnZpY2VcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuYXZpZ2F0aW9uU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW52aXJvbm1lbnRDYXBhYmlsaXRpZXM6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5FbnZpcm9ubWVudFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaWRlRWZmZWN0c1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaWRlRWZmZWN0c1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhc3luY0NvbXBvbmVudFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Bc3luY0NvbXBvbmVudFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0cm9vdFZpZXc6IHtcblx0XHRcdFx0dmlld05hbWU6IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FLFxuXHRcdFx0XHR0eXBlOiBcIlhNTFwiLFxuXHRcdFx0XHRhc3luYzogdHJ1ZSxcblx0XHRcdFx0aWQ6IFwiYXBwUm9vdFZpZXdcIlxuXHRcdFx0fSxcblx0XHRcdHJvdXRpbmc6IHtcblx0XHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdFx0Y29udHJvbElkOiBcImFwcENvbnRlbnRcIixcblx0XHRcdFx0XHRyb3V0ZXJDbGFzczogTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1MsXG5cdFx0XHRcdFx0dmlld1R5cGU6IFwiWE1MXCIsXG5cdFx0XHRcdFx0Y29udHJvbEFnZ3JlZ2F0aW9uOiBcInBhZ2VzXCIsXG5cdFx0XHRcdFx0YXN5bmM6IHRydWUsXG5cdFx0XHRcdFx0Y29udGFpbmVyT3B0aW9uczoge1xuXHRcdFx0XHRcdFx0cHJvcGFnYXRlTW9kZWw6IHRydWVcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGRlc2lnbnRpbWU6IFwic2FwL2ZlL2NvcmUvZGVzaWdudGltZS9BcHBDb21wb25lbnQuZGVzaWdudGltZVwiLFxuXG5cdGxpYnJhcnk6IFwic2FwLmZlLmNvcmVcIlxufSlcbmNsYXNzIEFwcENvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50IHtcblx0c3RhdGljIGluc3RhbmNlTWFwOiBSZWNvcmQ8c3RyaW5nLCBBcHBDb21wb25lbnQ+ID0ge307XG5cblx0cHJpdmF0ZSBfb1JvdXRlclByb3h5ITogUm91dGVyUHJveHk7XG5cblx0cHJpdmF0ZSBfb0FwcFN0YXRlSGFuZGxlciE6IEFwcFN0YXRlSGFuZGxlcjtcblxuXHRwcml2YXRlIGJJbml0aWFsaXplUm91dGluZz86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBfb0RpYWdub3N0aWNzITogRGlhZ25vc3RpY3M7XG5cblx0cHJpdmF0ZSBlbnRpdHlDb250YWluZXIhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgc3RhcnR1cE1vZGU6IHN0cmluZyA9IFN0YXJ0dXBNb2RlLk5vcm1hbDtcblxuXHRfaXNGY2xFbmFibGVkKCkge1xuXHRcdGNvbnN0IG9NYW5pZmVzdFVJNSA9IHRoaXMuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aTVcIik7XG5cdFx0cmV0dXJuIG9NYW5pZmVzdFVJNT8ucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1M7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgYSBob29rIHRvIGluaXRpYWxpemUgZmVhdHVyZSB0b2dnbGVzLlxuXHQgKlxuXHQgKiBUaGlzIGhvb2sgaXMgYmVpbmcgY2FsbGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgQXBwQ29tcG9uZW50IGF0IHRoZSB0aW1lIGZlYXR1cmUgdG9nZ2xlcyBjYW4gYmUgaW5pdGlhbGl6ZWQuXG5cdCAqIFRvIGNoYW5nZSBwYWdlIGNvbmZpZ3VyYXRpb24gdXNlIHRoZSB7QGxpbmsgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2NoYW5nZVBhZ2VDb25maWd1cmF0aW9ufSBtZXRob2QuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHdpdGhvdXQgYW55IHZhbHVlIHRvIGFsbG93IGFzeW5jaHJvbm91cyBwcm9jZXNzZXNcblx0ICovXG5cdGFzeW5jIGluaXRpYWxpemVGZWF0dXJlVG9nZ2xlcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyB0aGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhcHBsaWNhdGlvbnNcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgcGFnZSBjb25maWd1cmF0aW9uIG9mIFNBUCBGaW9yaSBlbGVtZW50cy5cblx0ICpcblx0ICogVGhpcyBtZXRob2QgZW5hYmxlcyB5b3UgdG8gY2hhbmdlIHRoZSBwYWdlIGNvbmZpZ3VyYXRpb24gb2YgU0FQIEZpb3JpIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBAcGFyYW0gcGFnZUlkIFRoZSBJRCBvZiB0aGUgcGFnZSBmb3Igd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXMgdG8gYmUgY2hhbmdlZC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggaW4gdGhlIHBhZ2Ugc2V0dGluZ3MgZm9yIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGlzIHRvIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IHZhbHVlIG9mIHRoZSBjb25maWd1cmF0aW9uLiBUaGlzIGNvdWxkIGJlIGEgcGxhaW4gdmFsdWUgbGlrZSBhIHN0cmluZywgb3IgYSBCb29sZWFuLCBvciBhIHN0cnVjdHVyZWQgb2JqZWN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbihwYWdlSWQ6IHN0cmluZywgcGF0aDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuXHRcdGNoYW5nZUNvbmZpZ3VyYXRpb24odGhpcy5nZXRNYW5pZmVzdCgpLCBwYWdlSWQsIHBhdGgsIHZhbHVlLCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIFJlZmVyZW5jZSB0byB0aGUgUm91dGVyUHJveHlcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb3V0ZXJQcm94eSgpOiBSb3V0ZXJQcm94eSB7XG5cdFx0cmV0dXJuIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlci5cblx0ICpcblx0ICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlclxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldEFwcFN0YXRlSGFuZGxlcigpIHtcblx0XHRyZXR1cm4gdGhpcy5fb0FwcFN0YXRlSGFuZGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIG5hdi9GQ0wgQ29udHJvbGxlci5cblx0ICpcblx0ICogQHJldHVybnMgIEEgcmVmZXJlbmNlIHRvIHRoZSBGQ0wgQ29udHJvbGxlclxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvb3RWaWV3Q29udHJvbGxlcigpOiBSb290Vmlld0Jhc2VDb250cm9sbGVyIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbC5cblx0ICpcblx0ICogQHJldHVybnMgIEEgcmVmZXJlbmNlIHRvIE5hdkNvbnRhaW5lciBjb250cm9sIG9yIHRoZSBGQ0wgY29udHJvbFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvb3RDb250YWluZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250ZW50KClbMF0gYXMgTmF2Q29udGFpbmVyIHwgRmxleGlibGVDb2x1bW5MYXlvdXQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzdGFydHVwIG1vZGUgb2YgdGhlIGFwcC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIHN0YXJ0dXAgbW9kZVxuXHQgKi9cblx0Z2V0U3RhcnR1cE1vZGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zdGFydHVwTW9kZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQ3JlYXRlJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlQ3JlYXRlKCkge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0F1dG9DcmVhdGUnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVBdXRvQ3JlYXRlKCkge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5BdXRvQ3JlYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdEZWVwbGluaycuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZURlZXBsaW5rKCkge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5EZWVwbGluaztcblx0fVxuXG5cdGluaXQoKSB7XG5cdFx0Y29uc3QgdWlNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0ZWRpdE1vZGU6IGxpYnJhcnkuRWRpdE1vZGUuRGlzcGxheSxcblx0XHRcdGlzRWRpdGFibGU6IGZhbHNlLFxuXHRcdFx0ZHJhZnRTdGF0dXM6IGxpYnJhcnkuRHJhZnRTdGF0dXMuQ2xlYXIsXG5cdFx0XHRidXN5OiBmYWxzZSxcblx0XHRcdGJ1c3lMb2NhbDoge30sXG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0cGFnZXM6IHt9XG5cdFx0fSk7XG5cdFx0Ly8gc2V0IHRoZSBiaW5kaW5nIE9uZVdheSBmb3IgdWlNb2RlbCB0byBwcmV2ZW50IGNoYW5nZXMgaWYgY29udHJvbGxlciBleHRlbnNpb25zIG1vZGlmeSBhIGJvdW5kIHByb3BlcnR5IG9mIGEgY29udHJvbFxuXHRcdHVpTW9kZWwuc2V0RGVmYXVsdEJpbmRpbmdNb2RlKFwiT25lV2F5XCIpO1xuXHRcdC8vIGZvciBpbnRlcm5hbCBtb2RlbCBiaW5kaW5nIG5lZWRzIHRvIGJlIHR3byB3YXlcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlVWlKU09OTW9kZWwodWlNb2RlbCwgbGlicmFyeSk7XG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZUludGVybmFsSlNPTk1vZGVsKG9JbnRlcm5hbE1vZGVsKTtcblxuXHRcdHRoaXMuc2V0TW9kZWwodWlNb2RlbCwgXCJ1aVwiKTtcblx0XHR0aGlzLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcImludGVybmFsXCIpO1xuXG5cdFx0dGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgPSB0aGlzLmJJbml0aWFsaXplUm91dGluZyAhPT0gdW5kZWZpbmVkID8gdGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgOiB0cnVlO1xuXHRcdHRoaXMuX29Sb3V0ZXJQcm94eSA9IG5ldyBSb3V0ZXJQcm94eSgpO1xuXHRcdHRoaXMuX29BcHBTdGF0ZUhhbmRsZXIgPSBuZXcgQXBwU3RhdGVIYW5kbGVyKHRoaXMpO1xuXHRcdHRoaXMuX29EaWFnbm9zdGljcyA9IG5ldyBEaWFnbm9zdGljcygpO1xuXG5cdFx0Y29uc3Qgb01vZGVsID0gdGhpcy5nZXRNb2RlbCgpO1xuXHRcdGlmIChvTW9kZWw/LmlzQT8uPE9EYXRhTW9kZWw+KFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTW9kZWxcIikpIHtcblx0XHRcdE1vZGVsSGVscGVyLmVuaGFuY2VPRGF0YU1vZGVsKG9Nb2RlbCk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lciA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKS5yZXF1ZXN0T2JqZWN0KFwiLyRFbnRpdHlDb250YWluZXIvXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBub3QgYW4gT0RhdGEgdjQgc2VydmljZVxuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5hcHA/LmRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQpIHtcblx0XHRcdC8vIGRpc2FibGUgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgZ2xvYmFsbHkgaW4gY2FzZSBwcml2YXRlIG1hbmlmZXN0IGZsYWcgaXMgc2V0XG5cdFx0XHQvLyB0aGlzIGFsbG93cyBjdXN0b21lcnMgdG8gZGlzYWJsZSB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpbiBjYXNlIHdlIHJ1biBpbnRvIGlzc3VlcyB3aXRoIHRoZSBmaXJzdCBkZWxpdmVyeVxuXHRcdFx0Ly8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2l0aCB0aGUgbmV4dCBTLzQgcmVsZWFzZVxuXHRcdFx0TW9kZWxIZWxwZXIuZGlzYWJsZUNvbGxhYm9yYXRpb25EcmFmdCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNYW5pZmVzdCgpW1wic2FwLnVpNVwiXTtcblx0XHR0aGlzLmNoZWNrUm91dGluZ0NvbmZpZ3VyYXRpb24ob01hbmlmZXN0VUk1KTtcblxuXHRcdC8vIEFkZGluZyBTZW1hbnRpYyBEYXRlIE9wZXJhdG9yc1xuXHRcdC8vIENvbW1lbnRpbmcgc2luY2UgaXQgaXMgbm90IG5lZWRlZCBmb3IgU2luZ2xlUmFuZ2Vcblx0XHRTZW1hbnRpY0RhdGVPcGVyYXRvcnMuYWRkU2VtYW50aWNEYXRlT3BlcmF0b3JzKCk7XG5cblx0XHQvLyB0aGUgaW5pdCBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSByb3V0aW5nIGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MgYWJvdmVcblx0XHQvLyBpdCB3aWxsIGNhbGwgdGhlIGNyZWF0ZUNvbnRlbnQgZnVuY3Rpb24gdG8gaW5zdGFudGlhdGUgdGhlIFJvb3RWaWV3IGFuZCBhZGQgaXQgdG8gdGhlIFVJQ29tcG9uZW50IGFnZ3JlZ2F0aW9uc1xuXG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldID0gdGhpcztcblx0fVxuXG5cdHByaXZhdGUgY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbihvTWFuaWZlc3RVSTU6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0pOiB2b2lkIHtcblx0XHRpZiAob01hbmlmZXN0VUk1Py5yb290Vmlldz8udmlld05hbWUpIHtcblx0XHRcdC8vIFRoZSBhcHBsaWNhdGlvbiBzcGVjaWZpZWQgYW4gb3duIHJvb3QgdmlldyBpbiB0aGUgbWFuaWZlc3RcblxuXHRcdFx0Ly8gUm9vdCBWaWV3IHdhcyBtb3ZlZCBmcm9tIHNhcC5mZS50ZW1wbGF0ZXMgdG8gc2FwLmZlLmNvcmUgLSBrZWVwIGl0IGNvbXBhdGlibGVcblx0XHRcdGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FX0NPTVBBVElCSUxJVFkpIHtcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID0gTkFWQ09ORi5GQ0wuVklFV05BTUU7XG5cdFx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUVfQ09NUEFUSUJJTElUWSkge1xuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FICYmXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLkZDTC5ST1VURVJDTEFTU1xuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5GQ0wuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICYmXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU1xuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldz8udmlld05hbWU/LmluY2x1ZGVzKFwic2FwLmZlLmNvcmUucm9vdFZpZXdcIikpIHtcblx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0YFxcbldyb25nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb3VwbGUgKHJvb3RWaWV3L3JvdXRlckNsYXNzKSBpbiBtYW5pZmVzdCBmaWxlLlxcbmAgK1xuXHRcdFx0XHRcdFx0YEN1cnJlbnQgdmFsdWVzIGFyZSA6KCR7b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lfS8ke1xuXHRcdFx0XHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyB8fCBcIjxtaXNzaW5nIHJvdXRlciBjbGFzcz5cIlxuXHRcdFx0XHRcdFx0fSlcXG5gICtcblx0XHRcdFx0XHRcdGBFeHBlY3RlZCB2YWx1ZXMgYXJlIFxcbmAgK1xuXHRcdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FfS8ke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfSlcXG5gICtcblx0XHRcdFx0XHRcdGBcXHQgLSAoJHtOQVZDT05GLkZDTC5WSUVXTkFNRX0vJHtOQVZDT05GLkZDTC5ST1VURVJDTEFTU30pYFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgb25TZXJ2aWNlc1N0YXJ0ZWQoKSB7XG5cdFx0YXdhaXQgdGhpcy5pbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMoKTtcblxuXHRcdC8vcm91dGVyIG11c3QgYmUgc3RhcnRlZCBvbmNlIHRoZSByb290Y29udGFpbmVyIGlzIGluaXRpYWxpemVkXG5cdFx0Ly9zdGFydGluZyBvZiB0aGUgcm91dGVyXG5cdFx0Y29uc3QgZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uID0gKCkgPT4ge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXJcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmF0dGFjaFJvdXRlTWF0Y2hlcnMpIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlcigpLmluaXRpYWxpemUoKTtcblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlclByb3h5KCkuaW5pdCh0aGlzLCB0aGlzLl9pc0ZjbEVuYWJsZWQoKSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblxuXHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuZGlzcGxheUVycm9yUGFnZShcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19BUFBfQ09NUE9ORU5UX1NBUEZFX0FQUFNUQVJUX1RFQ0hOSUNBTF9JU1NVRVNcIiksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0RkNMTGV2ZWw6IDBcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KTtcblx0XHR9O1xuXG5cdFx0aWYgKHRoaXMuYkluaXRpYWxpemVSb3V0aW5nKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpXG5cdFx0XHRcdC5pbml0aWFsaXplUm91dGluZygpXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRcdFx0ZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Um9vdENvbnRyb2woKS5hdHRhY2hBZnRlckluaXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnI6IEVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBjYW5ub3QgY2Fubm90IGluaXRpYWxpemUgcm91dGluZzogJHtlcnIudG9TdHJpbmcoKX1gKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0ZXhpdCgpIHtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyLmRlc3Ryb3koKTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkuZGVzdHJveSgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb1JvdXRlclByb3h5O1xuXHRcdGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKHRoaXMuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKS5kZXN0cm95KCk7XG5cdFx0Y2xlYW5QYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMoKTtcblx0fVxuXG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0fVxuXG5cdGdldERpYWdub3N0aWNzKCkge1xuXHRcdHJldHVybiB0aGlzLl9vRGlhZ25vc3RpY3M7XG5cdH1cblxuXHRkZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKSB7XG5cdFx0Ly8gTEVBS1MsIHdpdGggd29ya2Fyb3VuZCBmb3Igc29tZSBGbGV4IC8gTURDIGlzc3VlXG5cdFx0dHJ5IHtcblx0XHRcdGRlbGV0ZSBBcHBDb21wb25lbnQuaW5zdGFuY2VNYXBbdGhpcy5nZXRJZCgpXTtcblxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0ZGVsZXRlICh3aW5kb3cgYXMgdW5rbm93bikuX3JvdXRpbmc7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdH1cblxuXHRcdC8vV09SS0FST1VORCBmb3Igc3RpY2t5IGRpc2NhcmQgcmVxdWVzdCA6IGR1ZSB0byBhc3luYyBjYWxsYmFjaywgcmVxdWVzdCB0cmlnZ2VyZWQgYnkgdGhlIGV4aXRBcHBsaWNhdGlvbiB3aWxsIGJlIHNlbmQgYWZ0ZXIgdGhlIFVJQ29tcG9uZW50LnByb3RvdHlwZS5kZXN0cm95XG5cdFx0Ly9zbyB3ZSBuZWVkIHRvIGNvcHkgdGhlIFJlcXVlc3RvciBoZWFkZXJzIGFzIGl0IHdpbGwgYmUgZGVzdHJveVxuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCBvTWFpbk1vZGVsID0gdGhpcy5vTW9kZWxzW3VuZGVmaW5lZF07XG5cdFx0bGV0IG9IZWFkZXJzO1xuXHRcdGlmIChvTWFpbk1vZGVsPy5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyk7XG5cdFx0fVxuXG5cdFx0Ly8gQXMgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSBhcHBsaWNhdGlvbiAvIGhhbmRsZSB0aGUgZGlydHkgb2JqZWN0IHdlIG5lZWQgdG8gY2FsbCBvdXIgY2xlYW51cCBiZWZvcmUgdGhlIG1vZGVscyBhcmUgZGVzdHJveWVkXG5cdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpPy5iZWZvcmVFeGl0Py4oKTtcblx0XHRzdXBlci5kZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdGlmIChvSGVhZGVycyAmJiBvTWFpbk1vZGVsLm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyA9IG9IZWFkZXJzO1xuXHRcdH1cblx0fVxuXG5cdGdldFJvdXRpbmdTZXJ2aWNlKCk6IFJvdXRpbmdTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgUm91dGluZ1NlcnZpY2U7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXRTaGVsbFNlcnZpY2VzKCk6IElTaGVsbFNlcnZpY2VzIHtcblx0XHRyZXR1cm4ge30gYXMgSVNoZWxsU2VydmljZXM7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXROYXZpZ2F0aW9uU2VydmljZSgpOiBOYXZpZ2F0aW9uU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIE5hdmlnYXRpb25TZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk6IFNpZGVFZmZlY3RzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFNpZGVFZmZlY3RzU2VydmljZTtcblx0fVxuXG5cdGdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCk6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZTtcblx0fVxuXG5cdGFzeW5jIGdldFN0YXJ0dXBQYXJhbWV0ZXJzKCkge1xuXHRcdGNvbnN0IG9Db21wb25lbnREYXRhID0gdGhpcy5nZXRDb21wb25lbnREYXRhKCk7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9KTtcblx0fVxuXG5cdHJlc3RvcmUoKSB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgcmVzdG9yZWRcblx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLnZpZXdTdGF0ZS5vblJlc3RvcmUoKTtcblx0fVxuXG5cdHN1c3BlbmQoKSB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgc3VzcGVuZGVkXG5cdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS52aWV3U3RhdGUub25TdXNwZW5kKCk7XG5cdH1cblxuXHQvKipcblx0ICogbmF2aWdhdGVCYXNlZE9uU3RhcnR1cFBhcmFtZXRlciBmdW5jdGlvbiBpcyBhIHB1YmxpYyBhcGkgdGhhdCBhY3RzIGFzIGEgd3JhcHBlciB0byBfbWFuYWdlRGVlcExpbmtTdGFydHVwIGZ1bmN0aW9uLiBJdCBwYXNzZXMgdGhlIHN0YXJ0dXAgcGFyYW1ldGVycyBmdXJ0aGVyIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb25cblx0ICpcblx0ICogQHBhcmFtIHN0YXJ0dXBQYXJhbWV0ZXJzIERlZmluZXMgdGhlIHN0YXJ0dXAgcGFyYW1ldGVycyB3aGljaCBpcyBmdXJ0aGVyIHBhc3NlZCB0byBfbWFuYWdlRGVlcExpbmtTdGFydHVwIGZ1bmN0aW9uLlxuXHQgKi9cblxuXHRhc3luYyBuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyKHN0YXJ0dXBQYXJhbWV0ZXJzOiBTdGFydHVwUGFyYW1ldGVycyB8IG51bGwgfCB1bmRlZmluZWQpIHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKCFCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKSkpIHtcblx0XHRcdFx0aWYgKCFzdGFydHVwUGFyYW1ldGVycykge1xuXHRcdFx0XHRcdHN0YXJ0dXBQYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByb3V0aW5nU2VydmljZSA9IHRoaXMuZ2V0Um91dGluZ1NlcnZpY2UoKTtcblx0XHRcdFx0YXdhaXQgcm91dGluZ1NlcnZpY2UuX21hbmFnZURlZXBMaW5rU3RhcnR1cChzdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXhjZXB0aW9uOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZXhjZXB0aW9uIGFzIHN0cmluZyk7XG5cdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLmdldE1vZGVsKFwidWlcIikpO1xuXHRcdH1cblx0fVxufVxuXG5pbnRlcmZhY2UgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQge1xuXHRnZXRNYW5pZmVzdCgpOiBNYW5pZmVzdENvbnRlbnQ7XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmFwcFwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWk1XCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aVwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpXCJdO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC5mZVwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmZlXCJdO1xuXHRnZXRDb21wb25lbnREYXRhKCk6IENvbXBvbmVudERhdGE7XG5cdGdldFJvb3RDb250cm9sKCk6IHtcblx0XHRnZXRDb250cm9sbGVyKCk6IFJvb3RWaWV3QmFzZUNvbnRyb2xsZXI7XG5cdH0gJiBWaWV3O1xuXHRnZXRNb2RlbCgpOiBPRGF0YU1vZGVsO1xuXHRnZXRNb2RlbChuYW1lOiBcInVpXCIpOiBKU09OTW9kZWw7XG5cdGdldE1vZGVsKG5hbWU6IHN0cmluZyk6IE1vZGVsIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBBcHBDb21wb25lbnQ7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7O0VBK0JBLE1BQU1BLFdBQVcsR0FBR0MsT0FBTyxDQUFDRCxXQUFXO0VBQ3ZDRSxhQUFhLENBQUNDLFNBQVMsQ0FBQ0MsSUFBSSxHQUFHLFlBQStEO0lBQUE7SUFDN0YsNkJBQUksQ0FBQ0Msb0JBQW9CLDBEQUF6QixzQkFBMkJDLE9BQU8sRUFBRTtJQUNwQyxPQUFPLElBQUksQ0FBQ0Qsb0JBQW9CO0lBQ2hDRSxVQUFVLENBQUNKLFNBQVMsQ0FBQ0MsSUFBSSxDQUFDSSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztFQUMxQyxDQUFDO0VBQ0QsTUFBTUMsT0FBTyxHQUFHO0lBQ2ZDLEdBQUcsRUFBRTtNQUNKQyxRQUFRLEVBQUUsMEJBQTBCO01BQ3BDQyxzQkFBc0IsRUFBRSx5Q0FBeUM7TUFDakVDLFdBQVcsRUFBRTtJQUNkLENBQUM7SUFDREMsWUFBWSxFQUFFO01BQ2JILFFBQVEsRUFBRSxtQ0FBbUM7TUFDN0NDLHNCQUFzQixFQUFFLGtEQUFrRDtNQUMxRUMsV0FBVyxFQUFFO0lBQ2Q7RUFDRCxDQUFDO0VBa0JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBWkEsSUFpRk1FLFlBQVksV0FwRWpCQyxjQUFjLENBQUMsMEJBQTBCLEVBQUU7SUFDM0NDLFVBQVUsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO0lBQ2pEQyxNQUFNLEVBQUU7TUFDUEMsU0FBUyxFQUFFO0lBQ1osQ0FBQztJQUNEQyxRQUFRLEVBQUU7TUFDVCxTQUFTLEVBQUU7UUFDVkMsUUFBUSxFQUFFO1VBQ1RDLGFBQWEsRUFBRTtZQUNkQyxXQUFXLEVBQUUsMkNBQTJDO1lBQ3hEQyxPQUFPLEVBQUUsU0FBUztZQUNsQkMsUUFBUSxFQUFFO2NBQ1RDLE9BQU8sRUFBRSxDQUFDLDJC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
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log","sap/fe/core/AppStateHandler","sap/fe/core/controllerextensions/routing/RouterProxy","sap/fe/core/helpers/ClassSupport","sap/fe/core/helpers/ModelHelper","sap/fe/core/library","sap/fe/core/manifestMerger/ChangePageConfiguration","sap/fe/core/support/Diagnostics","sap/ui/core/Core","sap/ui/core/Element","sap/ui/core/UIComponent","sap/ui/mdc/table/TableTypeBase","sap/ui/model/json/JSONModel","./controllerextensions/BusyLocker","./converters/MetaModelConverter","./helpers/SemanticDateOperators"],function(e,t,o,i,r,n,a,s,l,c,u,p,d,
|
|
5
|
+
sap.ui.define(["sap/base/Log","sap/fe/core/AppStateHandler","sap/fe/core/controllerextensions/routing/RouterProxy","sap/fe/core/helpers/ClassSupport","sap/fe/core/helpers/DraftEditState","sap/fe/core/helpers/ModelHelper","sap/fe/core/library","sap/fe/core/manifestMerger/ChangePageConfiguration","sap/fe/core/support/Diagnostics","sap/m/routing/Router","sap/ui/core/Core","sap/ui/core/Element","sap/ui/core/UIComponent","sap/ui/mdc/table/TableTypeBase","sap/ui/model/json/JSONModel","./controllerextensions/BusyLocker","./converters/MetaModelConverter","./helpers/SemanticDateOperators"],function(e,t,o,i,r,n,a,s,l,c,u,p,f,d,g,v,C,h){"use strict";var S,R,N;var M=C.deleteModelCacheData;var E=s.cleanPageConfigurationChanges;var A=s.changeConfiguration;var y=i.defineUI5Class;function m(e,t){e.prototype=Object.create(t.prototype);e.prototype.constructor=e;w(e,t)}function w(e,t){w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function e(t,o){t.__proto__=o;return t};return w(e,t)}const I=a.StartupMode;d.prototype.exit=function(){var e;(e=this._oManagedObjectModel)===null||e===void 0?void 0:e.destroy();delete this._oManagedObjectModel;p.prototype.exit.apply(this,[])};const O={FCL:{VIEWNAME:"sap.fe.core.rootView.Fcl",VIEWNAME_COMPATIBILITY:"sap.fe.templates.RootContainer.view.Fcl",ROUTERCLASS:"sap.f.routing.Router"},NAVCONTAINER:{VIEWNAME:"sap.fe.core.rootView.NavContainer",VIEWNAME_COMPATIBILITY:"sap.fe.templates.RootContainer.view.NavContainer",ROUTERCLASS:"sap.m.routing.Router"}};const V=c;let T=(S=y("sap.fe.core.AppComponent",{interfaces:["sap.ui.core.IAsyncContentCreation"],config:{fullWidth:true},manifest:{"sap.ui5":{services:{resourceModel:{factoryName:"sap.fe.core.services.ResourceModelService",startup:"waitFor",settings:{bundles:["sap.fe.core.messagebundle"],modelName:"sap.fe.i18n"}},routingService:{factoryName:"sap.fe.core.services.RoutingService",startup:"waitFor"},shellServices:{factoryName:"sap.fe.core.services.ShellServices",startup:"waitFor"},ShellUIService:{factoryName:"sap.ushell.ui5service.ShellUIService"},navigationService:{factoryName:"sap.fe.core.services.NavigationService",startup:"waitFor"},environmentCapabilities:{factoryName:"sap.fe.core.services.EnvironmentService",startup:"waitFor"},sideEffectsService:{factoryName:"sap.fe.core.services.SideEffectsService",startup:"waitFor"},asyncComponentService:{factoryName:"sap.fe.core.services.AsyncComponentService",startup:"waitFor"},collaborationManagerService:{factoryName:"sap.fe.core.services.CollaborationManagerService",startup:"waitFor"},collaborativeToolsService:{factoryName:"sap.fe.core.services.CollaborativeToolsService",startup:"waitFor"}},rootView:{viewName:O.NAVCONTAINER.VIEWNAME,type:"XML",async:true,id:"appRootView"},routing:{config:{controlId:"appContent",routerClass:O.NAVCONTAINER.ROUTERCLASS,viewType:"XML",controlAggregation:"pages",async:true,containerOptions:{propagateModel:true}}}}},designtime:"sap/fe/core/designtime/AppComponent.designtime",library:"sap.fe.core"}),S(R=(N=function(i){m(s,i);function s(){var e;for(var t=arguments.length,o=new Array(t),r=0;r<t;r++){o[r]=arguments[r]}e=i.call(this,...o)||this;e.startupMode=I.Normal;return e}var c=s.prototype;c._isFclEnabled=function e(){var t,o;const i=this.getManifestEntry("sap.ui5");return(i===null||i===void 0?void 0:(t=i.routing)===null||t===void 0?void 0:(o=t.config)===null||o===void 0?void 0:o.routerClass)===O.FCL.ROUTERCLASS};c.initializeFeatureToggles=async function e(){return Promise.resolve()};c.changePageConfiguration=function e(t,o,i){A(this.getManifest(),t,o,i,true)};c.getRouterProxy=function e(){return this._oRouterProxy};c.getAppStateHandler=function e(){return this._oAppStateHandler};c.getRootViewController=function e(){return this.getRootControl().getController()};c.getRootContainer=function e(){return this.getRootControl().getContent()[0]};c.getStartupMode=function e(){return this.startupMode};c.setStartupModeCreate=function e(){this.startupMode=I.Create};c.setStartupModeAutoCreate=function e(){this.startupMode=I.AutoCreate};c.setStartupModeDeeplink=function e(){this.startupMode=I.Deeplink};c.init=function e(){var c,u,p;const f=new g({editMode:a.EditMode.Display,isEditable:false,draftStatus:a.DraftStatus.Clear,busy:false,busyLocal:{},pages:{}});const d=new g({pages:{}});f.setDefaultBindingMode("OneWay");n.enhanceUiJSONModel(f,a);n.enhanceInternalJSONModel(d);this.setModel(f,"ui");this.setModel(d,"internal");this.bInitializeRouting=this.bInitializeRouting!==undefined?this.bInitializeRouting:true;this._oRouterProxy=new o;this._oAppStateHandler=new t(this);this._oDiagnostics=new l;const v=this.getModel();if(v!==null&&v!==void 0&&(c=v.isA)!==null&&c!==void 0&&c.call(v,"sap.ui.model.odata.v4.ODataModel")){n.enhanceODataModel(v);this.entityContainer=v.getMetaModel().requestObject("/$EntityContainer/")}else{this.entityContainer=Promise.resolve()}if((u=this.getManifestEntry("sap.fe"))!==null&&u!==void 0&&(p=u.app)!==null&&p!==void 0&&p.disableCollaborationDraft){n.disableCollaborationDraft=true}const C=this.getManifest()["sap.ui5"];this.checkRoutingConfiguration(C);h.addSemanticDateOperators();r.addDraftEditStateOperator();i.prototype.init.call(this);s.instanceMap[this.getId()]=this};c.checkRoutingConfiguration=function t(o){var i;if(o!==null&&o!==void 0&&(i=o.rootView)!==null&&i!==void 0&&i.viewName){var r,n,a,s,l,c;if(o.rootView.viewName===O.FCL.VIEWNAME_COMPATIBILITY){o.rootView.viewName=O.FCL.VIEWNAME}else if(o.rootView.viewName===O.NAVCONTAINER.VIEWNAME_COMPATIBILITY){o.rootView.viewName=O.NAVCONTAINER.VIEWNAME}if(o.rootView.viewName===O.FCL.VIEWNAME&&((r=o.routing)===null||r===void 0?void 0:(n=r.config)===null||n===void 0?void 0:n.routerClass)===O.FCL.ROUTERCLASS){e.info(`Rootcontainer: "${O.FCL.VIEWNAME}" - Routerclass: "${O.FCL.ROUTERCLASS}"`)}else if(o.rootView.viewName===O.NAVCONTAINER.VIEWNAME&&((a=o.routing)===null||a===void 0?void 0:(s=a.config)===null||s===void 0?void 0:s.routerClass)===O.NAVCONTAINER.ROUTERCLASS){e.info(`Rootcontainer: "${O.NAVCONTAINER.VIEWNAME}" - Routerclass: "${O.NAVCONTAINER.ROUTERCLASS}"`)}else if((l=o.rootView)!==null&&l!==void 0&&(c=l.viewName)!==null&&c!==void 0&&c.includes("sap.fe.core.rootView")){var u,p;throw Error(`\nWrong configuration for the couple (rootView/routerClass) in manifest file.\n`+`Current values are :(${o.rootView.viewName}/${((u=o.routing)===null||u===void 0?void 0:(p=u.config)===null||p===void 0?void 0:p.routerClass)||"<missing router class>"})\n`+`Expected values are \n`+`\t - (${O.NAVCONTAINER.VIEWNAME}/${O.NAVCONTAINER.ROUTERCLASS})\n`+`\t - (${O.FCL.VIEWNAME}/${O.FCL.ROUTERCLASS})`)}else{e.info(`Rootcontainer: "${o.rootView.viewName}" - Routerclass: "${O.NAVCONTAINER.ROUTERCLASS}"`)}}};c.onServicesStarted=async function t(){await this.initializeFeatureToggles();const o=()=>{this.entityContainer.then(()=>{if(this.getRootViewController().attachRouteMatchers){this.getRootViewController().attachRouteMatchers()}this.getRouter().initialize();this.getRouterProxy().init(this,this._isFclEnabled())}).catch(e=>{const t=u.getLibraryResourceBundle("sap.fe.core");this.getRootViewController().displayErrorPage(t.getText("C_APP_COMPONENT_SAPFE_APPSTART_TECHNICAL_ISSUES"),{title:t.getText("C_COMMON_SAPFE_ERROR"),description:e.message,FCLLevel:0})})};if(this.bInitializeRouting){return this.getRoutingService().initializeRouting().then(()=>{if(this.getRootViewController()){o()}else{this.getRootControl().attachAfterInit(function(){o()})}}).catch(function(t){e.error(`cannot cannot initialize routing: ${t.toString()}`)})}};c.exit=function e(){this._oAppStateHandler.destroy();this._oRouterProxy.destroy();delete this._oAppStateHandler;delete this._oRouterProxy;M(this.getMetaModel());this.getModel("ui").destroy();E()};c.getMetaModel=function e(){return this.getModel().getMetaModel()};c.getDiagnostics=function e(){return this._oDiagnostics};c.destroy=function t(o){var r,n;try{delete s.instanceMap[this.getId()];delete window._routing}catch(t){e.info(t)}const a=this.oModels[undefined];let l;if(a!==null&&a!==void 0&&a.oRequestor){l=Object.assign({},a.oRequestor.mHeaders)}(r=this.getRoutingService())===null||r===void 0?void 0:(n=r.beforeExit)===null||n===void 0?void 0:n.call(r);i.prototype.destroy.call(this,o);if(l&&a.oRequestor){a.oRequestor.mHeaders=l}};c.getRoutingService=function e(){return{}};c.getShellServices=function e(){return{}};c.getNavigationService=function e(){return{}};c.getSideEffectsService=function e(){return{}};c.getEnvironmentCapabilities=function e(){return{}};c.getCollaborationManagerService=function e(){return{}};c.getCollaborativeToolsService=function e(){return{}};c.getStartupParameters=async function e(){const t=this.getComponentData();return Promise.resolve(t&&t.startupParameters||{})};c.restore=function e(){this.getRootViewController().viewState.onRestore()};c.suspend=function e(){this.getRootViewController().viewState.onSuspend()};c.navigateBasedOnStartupParameter=async function t(o){try{if(!v.isLocked(this.getModel("ui"))){if(!o){o=null}const e=this.getRoutingService();await e._manageDeepLinkStartup(o)}}catch(t){e.error(t);v.unlock(this.getModel("ui"))}};c.isCollaborationManagerServiceEnabled=function e(){return true};return s}(f),N.instanceMap={},N))||R);return T},false);
|
|
6
6
|
//# sourceMappingURL=AppComponent.js.map
|